Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Каким образом осуществляется опрос

  1. #1
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,569
    Благодарностей: 98

    По умолчанию Каким образом осуществляется опрос

    внешних "быстрых" устройств?

    Например, жёсткого диска??

    Если брать стандартные

    lab1:in a,(c)
    rra
    jr nz,lab1

    in a,(c)
    ld (hl),a
    inc hl
    jp lab1

    в этом тексте даже проверки отсутствуют как таковые, но примерно получается
    12+4+7+12+7+6+10 = 58 тактов, что даёт теоретическую скорость до 60 кб в секунду (именно потому слово "быстрые" в кавычках), или это делается как то иначе?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    По умолчанию

    Если говорить о HDD (ATA), то в далеком 94-м проблему ускорения передачи данных в конроллере IDE для ZX-Next я решил, расположив порты (для старшей и младшей половинок слова данных) в адресном пространстве так, что бы при выполнении команды INI (OUTI) они перебирались последовательно.
    В результате на запись слова (16 бит) тратилось 44, а на чтение 32 такта (более 200К в секунду). В турборежиме еще быстрее.
    Разумеется, если порт один (или расположены "вразнобой"), то особо не разгонишься...

  4. #3
    Guru Аватар для CHRV
    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,690
    Благодарностей: 257

    По умолчанию

    Цитата Сообщение от Conan
    Если говорить о HDD (ATA), то в далеком 94-м проблему ускорения передачи данных в конроллере IDE для ZX-Next я решил, расположив порты (для старшей и младшей половинок слова данных) в адресном пространстве так, что бы при выполнении команды INI (OUTI) они перебирались последовательно.
    В результате на запись слова (16 бит) тратилось 44, а на чтение 32 такта (более 200К в секунду). В турборежиме еще быстрее.
    Разумеется, если порт один (или расположены "вразнобой"), то особо не разгонишься...
    Ага в АТМ так же сделано.

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

  5. #4
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,569
    Благодарностей: 98

    По умолчанию

    Цитата Сообщение от Conan
    Если говорить о HDD (ATA), то в далеком 94-м проблему ускорения передачи данных в конроллере IDE для ZX-Next я решил, расположив порты (для старшей и младшей половинок слова данных) в адресном пространстве так, что бы при выполнении команды INI (OUTI) они перебирались последовательно.
    В результате на запись слова (16 бит) тратилось 44, а на чтение 32 такта (более 200К в секунду). В турборежиме еще быстрее.
    Разумеется, если порт один (или расположены "вразнобой"), то особо не разгонишься...
    Не понял, в смысле из-за уменьшения регистра B так?
    т.е. если B=1F
    C=FD
    то первый outi шёл в 1ffd
    а второй в 20fd
    ?

    А нельзя как то повесть полублоковую обработку - т.е. скажем проц выдаёт на порт ожидание чтения
    и затем каждая команда чтения соответвтующего порта создаёт автоматическое распознавание как готовность принять и соответственно контроллер выдаёт все данные сам??

    Т.е. просто делает INIR на 256 значений
    а перед ним идёт команда выбора сектора например ld bc,#fefe ld a,1 (команда чтения) out (с),a
    и далее
    ld hl,mem_addr
    ld bc,#00fd
    inir

    тогда (псевдоблоковый обмен) скокрость бы была очень приличная.

    При чтении портов формируется IORQ - вместе с адресом чисто теоретически можно вроде сделать такой контроллер?

    Просто логика в том, что от жёсткого диска в таком случае прирост не столь очевидный (кроме конечно же объяма и надёжности) - в лучшем случае в 10 раз быстрее по сравнению с бетой.

    А вот если использовать представленную схему получается условно 21 такт на один байт - уже скорость получается приличная, а для турбы так вообще.

    А можно и так

    взять 256 команд

    INI

    а перед ними та же строчка инициализации - получается 16 тактов на байт (быстрее программно нельзя - ограничение аппаратуры), итого порядка 200 кб для обыкновенного режима, 400 кб для турбы!!!
    Последний раз редактировалось GriV; 28.11.2005 в 23:23.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #5

    По умолчанию

    Цитата Сообщение от GriV
    Не понял, в смысле из-за уменьшения регистра B так?
    Да, именно так.
    Цитата Сообщение от GriV
    т.е. если B=1F
    C=FD
    то первый outi шёл в 1ffd
    а второй в 20fd
    ?
    Все верно, только адреса портов были другие.
    Цитата Сообщение от GriV
    и затем каждая команда чтения соответвтующего порта создаёт автоматическое распознавание как готовность принять и соответственно контроллер выдаёт все данные сам??
    Ничего там не надо городить: последовательное расположение портов, это банальная дешифрация, в которой задействован A8 (он выбирает старший/младший разряды слова данных для IDE). Адреса старше A8 - не используем.

    Цитата Сообщение от GriV
    А можно и так
    взять 256 команд
    INI
    а перед ними та же строчка инициализации - получается 16 тактов на байт (быстрее программно нельзя - ограничение аппаратуры), итого порядка 200 кб для обыкновенного режима, 400 кб для турбы!!!
    Так и было сделано. 32 такта на слово это и есть 16 тактов на байт. Только не надо обольщаться насчет турборежима: скорость будет зависеть от конкретной реализации, ибо есть еще и торможение при работе с ОЗУ, а для некоторых клонов и при операциях ввода/вывода.

  7. #6
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,147
    Благодарностей: 3

    По умолчанию

    Ага! ну начнем-с по порядку:
    1) никаких ожиданий делать не нужно - сектор (512б) из хдд/цдд читается и пишется и так на мах без задержек и проверок.
    2) реализация контроллеров бывает разная. в худшем случае это полсотни тыщ байт в секунду (хуже только флоповод уж будет=), а лучшая это 200кб в сек без турбо и 400кб с турбо (в пзу/теневом озу 200%). именно так было сделано в моем контроллере и контроллере спринтера, т.е. чтение - 512 команд ini (или 2 inir) и запись 512 штук outi (два otir). причем спринтеровский вариант несколько проще =)
    3) в очередной раз напоминаю - в командах outi,otir,outd,otdr сначала декрементируется рег.B и только потом пишется в порт.
    не стоит заново поднимать этот вопрос, на форуме он уже активно обсуждался =)
    Последний раз редактировалось jtn; 29.11.2005 в 01:48.

  8. #7
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,569
    Благодарностей: 98

    По умолчанию

    Цитата Сообщение от jtn
    не стоит заново поднимать этот вопрос, на форуме он уже активно обсуждался =)
    ух ты а где обсуждался?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  9. #8
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,147
    Благодарностей: 3

    По умолчанию

    Цитата Сообщение от jtn
    не стоит заново поднимать этот вопрос, на форуме он уже активно обсуждался =)
    я про третий пункт
    http://www.zx.pk.ru/showthread.php?t=1360&page=9&pp=10

  10. #9
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,569
    Благодарностей: 98

    Unhappy Т.е. получается

    что жёсткий диск больше половины своего времени просто простаивает? Я бы даже более сказал - самый захудалый винт даёт скорость 10 метров в сек - а здесь скорость максимум (в лучше случае, при хорошо собранной схеме и отлаженной программе) - 400 кб в секунду (да и то в теории)??? Это ж... 4% эффективность от пиковой (для захудалого винта)!!!! А использовать в контроллерах режим DMA никто не пробовал? уж больно программный режим непроизводительный...
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  11. #10

    По умолчанию

    Цитата Сообщение от GriV
    Я бы даже более сказал - самый захудалый винт даёт скорость 10 метров в сек
    какие РУ5 потянут 10 м/с, с одновременным обслуживанием видео и процессора даже с контроллером DMA (тогда что уж, можно и контроллер прерываний одновременно вешать, чтобы 1 раз комп курочить) 1.75 м/с для винта маловато, и это будет уже не спектрум

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 13
    Последнее: 09.10.2005, 02:16
  2. Ответов: 13
    Последнее: 20.02.2005, 06:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •