ZX Power #01
11 октября 1996

Ликбез - Пересылка память - память : мифы и реальность: Возможно ли перебросить экран быстрее чем за одно прерывание?

<b>Ликбез</b> - Пересылка память - память : мифы и реальность: Возможно ли перебросить экран быстрее чем за одно прерывание?
                             
 Пересылка память - память : 
     мифы и реальность.      
                             
              (C) Dr.SQUIZER 
________________________________
                                
     В среде начинающих програм-
мистов SPECCY постоянно циркули-
руют слухи , что кому-то удалось
перебросить  экран быстрее , чем
за одно прерывание. Разберемся :
возможно ли это ?               
   Для пересылки 6144 байт нужно
6144 раз выполнить цикл записи в
память , иначе это уже  не будет
называться пересылкой. А сколько
циклов чтения  нужно выполнить ?
Если  картинка симметричная либо
периодическая , то, естественно,
меньше.  Оставим тут простор для
творческой фантазии, а сами рас-
смотрим случай нерегулярной кар-
тинки.                          
  Выпишем из справочника  в с е 
команды  Z80 , в  которые входит
операция записи в ОЗУ :         
                             
    LD (HL),r   LD (ii),r    
    LD (DE),A   LD (nn),A    
    PUSH qq     PUSH ii      
    LDI         LDIR         
    LD (HL),n   LD (ii),n    
    LD (nn),HL  LD (nn),dd   
    EX (SP),HL  EX (SP),ii   
    LDD         LDDR         
    LD (BC),A   LD (nn),ii   
                                
   По понятным причинам в список
не вошли команды :              
 INC (HL); DEC (HL); SET b,(HL);
RES b,(HL); то же по ii;  враще-
ния и сдвиги по (HL) и (ii).    
 Запись в память при помощи опе-
раций CALL , RST и подтверждения
прерывания  оставим  для  крутых
приколов.                       
  Перепишем теперь только те ко-
манды , которые   быстрее   LDIR
(иначе зачем и голову морочить).
В скобках укажем количество так-
тов процессора на запись  одного
байта  в память при помощи  этой
команды :                       
                             
      LDIR,LDDR    (10.5)    
      EX (SP),HL   (9.5)     
      LD (HL),r    (7)       
      PUSH qq      (5.5)     
      LD (nn),dd   (10)      
      LD (nn),HL   (8)       
      LD (BC),A    (7)       
      LD (nn),ii   (10)      
      PUSH ii      (7.5)     
      LD (DE),A    (7)       
                                
  Команды, типа LD (HL),r требу-
ют после себя  как минимум 4 та-
кта на модификацию адреса . Зна-
чит , их реальное быстродействие
11 тактов  на байт .  По этой же
причине исключаем и EX (SP),HL .
Быстродействие команд LD (nn),dd
и LD (nn),ii столь близко к LDIR
что целесообразность их примене-
ния в наших целях сомнительна.  
   А вот команда LD (nn),HL  за-
служивает внимания.             
   Команда PUSH сама декременти-
рует адрес , но рано или  поздно
потребуется как минимум LD SP,nn
поэтому ее максимальная произво-
дительность в цикле :           
                             
           LD SP,nn          
           PUSH AF           
           PUSH BC           
           PUSH DE           
           PUSH HL           
           EXX               
           PUSH BC           
           PUSH DE           
           PUSH HL           
                                
равна 6.5 тактов на байт , что и
является рекордом для Z80.      
  Не  будем  утомлять  читателей
аналогичными  выкладками для ко-
манд чтения из памяти.  Приведем
конечный результат :            
                             
     LDIR        (10.5)      
     LD HL,(nn)  (8.0)       
     POP qq      (5.0;6.0)   
                                
   Отсюда следует , что экранную
область ОЗУ  можно переслать  за
такое количество тактов :       
                                
LDIR      : 6144 * 21 =  129 024
LD HL,(mm)                      
LD (ss),HL: 6144 * 16 =   98 304
POP HL                          
LD (ss),HL: 6144 * 13 =   79 872
POP/PUSH  : 6144 * 12.5 = 76 800
                                
   Как видим , даже  при периоде
следования INT в 71 680 тактов ,
уложиться в одно  прерывание не-
возможно.                       
   Програмистская же легенда ро-
дилась , по-видимому , из некор-
ректного вычисления :           
                                
            POP/PUSH:           
6144 * (5.0 + 5.5) = 70 656 (!).
________________________________

                                
                                
    Пересылка память-память:    
       мифы и реальность.       
                                
(C) DJNZ                        
--------------------------------




Другие статьи номера:

Железо - PC -> ZX : Подключение к Спектруму мультикарты.

Железо - Коммуникационный порт для Speccy.

Железо - О подключении AY MOUSE.

Интервью - Интервью взятое редакцией журнала у Cobra.

Ликбез - Пересылка память - память : мифы и реальность: Возможно ли перебросить экран быстрее чем за одно прерывание?

Обозрение - Apple: взгляд на прошлое и настоящее.

Обозрение - O компьютере "Silicon Graphics".

Обозрение - О специализированных БИС, которые создают неповторимость Amiga.

От авторов - Краткое описание возможностей оболочки.

От авторов - О истории создания журнала. Об овторах.

Отдохнем - А.Снижко "Великий ученый".

Отдохнем - Анекдоты ...

Отдохнем - Малая энциклопедия компьютерных существ.

Отдохнем - Советы первокурсснику или варианты конспектирования скучных лекций : конспект одного крутого студента ; глосарий.

Перспектива - "Hellraizer" (по мотивам книги А.Нортона "Королева Солнца").

Перспектива - Сценарий новой игры - ТЕСЕУС (THESEUS) часть 1: "В стальном лабиринте".

Рабочий стол - O возможностях нового коммандера "Win Commander 0.02".

Рабочий стол - Краткое описание: макро-ассемблера отладчика "ALASM 2.8".

Рабочий стол - Программа оцифровки звука "Digital Factory v1.0" (COVOX).

Разное - Вирусы на Спектруме и их обнаружение.

Разное - Результаты Enlight'96.

Реклама - Реклама и объявления.

Фантастика - Г.Гарисон (часть 1-3)

Фантастика - Д.Галеев "Воставшие в Мохляндии или плюшевая революция".

Фантастика - Фредерик Пол "Охотники".


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Радио - начинающим - схема для ZX.
TOP ZX - Лучшие игры, журналы, системки...
Dirty English - грязные ругательства.

В этот день...   26 июля