Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 65 66 67 68 69 70 71  72 73 74 75 76 77 78 ... 198

              Время, требуемое для передачи данных через порты, обычно за-
         висит от характеристик внешних устройств.  Например, время, необ-
         ходимое для записи/считывания 1 байта на жесткий диск или с жест-

                                      - 5-13 -
         кого диска,  зависит от нескольких факторов: типа жесткого диска,
         таких  параметров жесткого диска,  как количество головок и коли-
         чество цилиндров,  размера порций ввода/вывода на  жесткий  диск,
         структуры файлов, количества файлов и так далее. Если ваша систе-
         ма реального времени использует внешние устройства,  Вам  следует
         провести несколько опытов,  чтобы  снять  время, затрачиваемое на
         выполнение операций. Поскольку разрешающая способность часов сис-
         темы  в  операционной  системе MS-DOS равна 10 м/сек,  операция в
         опыте  должна повторяться много раз с целью получения точных вре-
         менных оценок. Они изображены ниже на рисунке 5-7:

              ЪДДДДДДДДДДДДДДДДДДД¬
              ¦                   ¦
              ¦  Передача данных  ¦
              ¦                   ¦
              АДДДДДДДДДВДДДДДДДДДЩ
                        ¦
             ЪДДДДДДДДДД†ДДДДДДДДДДДД¬
             ¦          ¦            ¦
          ЪДДБДДДД¬ ЪДДДБДДДДД¬ ЪДДДДБДДД¬
          ¦Метод  ¦ ¦ Прямой  ¦ ¦Метод   ¦
          ¦упоря- ¦ ¦ доступ  ¦ ¦доступа ¦
          ¦дочен- ¦ ¦ к памяти¦ ¦по пре- ¦
          ¦ного   ¦ ¦ (DMA)   ¦ ¦рываниям¦
          ¦опроса ¦ ¦         ¦ ¦        ¦
          АДДДДДДДЩ АДДДДДДДДДЩ АДДДВДДДДЩ
                                    ¦
                    ЪДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДД¬
                    ¦               ¦              ¦
                    ¦               ¦              ¦
             ЪДДДДДДБДДДДДД¬    ЪДДДБДДД¬     ЪДДДДБДДДД¬
             ¦ Устройства  ¦    ¦ Таймер¦     ¦Программа¦
             ¦ ввода/выво- ¦    ¦       ¦     ¦         ¦
             ¦ да          ¦    АДДДДДДДЩ     АДДДДДДДДДЩ
             АДДДДДДДДДДДДДЩ

                         Рис. 5-7. Методы передачи данных

              Метод упорядочения опроса может  использоваться  в  действи-
         тельности для любого устройства.  В нашей схеме порты проверяются
         (опрашиваются) в некоторой постоянной последовательности  с целью
         определения  наличия данных для пересылки в каком-либо порту. Это
         значит,  что масса компьютерного времени тратится  впустую,  если
         порты находятся большую часть времени в неактивном состоянии. Бо-
         лее того,  сам процессор во времени передачи данных  находится  в
         "занятом" состоянии, и опрос в это время не ведется.
              Для того,  чтобы понять насколько быстро протекает  передача
         найденных  в результате упорядоченного опроса данных,  рассмотрим
         предложенную ниже программу, в которой осуществляется ввод данных
         через  порт центрального процессора CPU в память.  Регистр DX со-
         держит адрес этого порта.

            read:     in   ax,dx      ; считывание данных - 12 циклов
                      add  di,2       ; следующее место назначения -
                                        4 цикла
                      mov  [di],ax    ; сохранение данных - 18 циклов
                      loop read       ; выполнение цикла до полного

                                      - 5-14 -
                                      ; завершения - 17 циклов
                                      ; общее количество -51 цикл
                                            для 8088
                                      ; общее количество -43 цик-
                                            ла для 8086
              Для микропроцессора  модели  8088,  работающего  с  частотой
         4,77 МГц 51 цикл занимает 10,69 микросекунд,  что приводит к ско-
         рости передачи данных на частоте 93 КГц.  Эта  скорость  передачи
         данных  означает,  что  компьютер может считывать данные максимум
         93000 раз из порта.
              В приводимом ниже куске программы происходит проверка на на-
         личие готовых к пересылке данных в  последовательном  порту.  Для
         этого используется функция прерывания "int 14h" со значением AH=3
         (требование к состоянию последовательного  порта).  При  возврате,
         если бит 0 регистра AH имеет значение "1", это значит, что имеются
         готовые данные.  Программа обычно ожидает появление готовых данных
         и они возвращаются в регистр AL.

            wait:
                     mov      ah,3       ; считать значение состояния
                                         ; последовательного порта
                     mov      dx,0       ; требуется состояние порта
                                         ; COM1
                     int      14h        ; обращение к ПЗУ-DIOS
                     and      ah,1       ; данные готовы?
                     jz       wait       ; нет, ожидать, пока данные
                                         ; не будут готовы
                     mov      ah,2       ; Функция=считывания данных
                     mov      dx,0       ; считывание из порта COM1
                     int      14h        ; обращение к ПЗУ-BIOS


              Передача данных методом прямого доступа к памяти (DMA)

              Передача данных  методом  прямого доступа к памяти (DMA) ис-
         пользуется,  когда требуется передача больших объемов  данных,  а
         процессор занят выполнением других задач на фоне передачи данных.
         Обычно только процессор имеет доступ к  памяти.  Но  при  наличии
         прямого  доступа к памяти (DMA) внешние устройства тоже могут об-
         ращаться к памяти. Внешнее устройство блокирует процессор и начи-
         нает само вести обмен данных с памятью.  Во время передачи данных
         процессор не может обращаться к памяти, но может выполнять какую-
         то  другую  работу.  После  завершения  процедуры передачи данных
         процессор вновь получает возможность обращения к памяти.

                     Передача данных методом прерываний данных

              Передача данных методом прерываний данных используется, ког-
         да передача данных ведется асинхронно (то есть, время, отведенное
         для  передачи  данных заранее не определяется).  И такая передача
         данных обычно происходит сравнительно не часто. Прерывание указы-
         вает на появление какого-либо внешнего события в процессоре, тре-
         бование может вызываться каким-либо внешним по отношению  к  про-
         цессору устройством, часами (таймером) или какой-либо программой.
         При наступлении прерывания процессор  приостанавливает выполнение
         текущей  программы ("подвешивает" ее),  считывает адрес сервисной
         программы прерываний (программы ISR) из таблицы векторов прерыва-

                                      - 5-15 -
         ний и выполняет последнюю.
            Основными функциями,  выполняемыми  сервисной  программой ISR,
         являются :
            1. Разрешение прерываний таким образом, что могут обслуживать-
         ся прерывания более высоких приоритетов.
            2. Сохранение регистров, которые будут использоваться програм-
         мой ISR.
            3. Выполнение функций обработки,  связанных с прерыванием, как
         можно быстрее.
            4. Восстановление содержимого сохраненных регистров.
            5. Выполнение  команды IRET для возобновления выполнения  пре-
         рванной программы.

            Представленная ниже  программа  содержит  структуру  программы
         ISR:
                  sti                       ; разрешить прерывания
                  push      ax              ; сохранить только те
                  push      bx              ; регистры, которые ис-
                  push      cx              ; пользуются программой
                  push      dx              ; ISR
                  .
                  .
                  .
                  mov       ax,cs           ; локальные данные, к ко-
                                            ; торым будет вестись об-
                                            ; ращение
                  mov       ds,ax           ; с использованием области
                                            ; DS
                  .
                  .
                  .                         ; обработать прерывания

                  pop       dx              ; восстановить регистры в
                  pop       cx              ; обратном порядке
                  pop       bx              ;
                  pop       ax              ;
                  iret                      ; возобновить выполнение
                                            ; прерванной программы

              При появлении прерывания процессор сохраняет три  слова (CS,
         IP, флаги) и считывает два слова (адрес программы ISR). Таким об-
         разом, на обслуживание любого прерывания в процессоре 8088 затра-
         чивается 71 цикл, а в процессоре 8086 - 51 цикл. Не требуется до-
         полнительных  затрат на задание прерывания и  его  сброс,  потому
         что процесс обслуживания прерывания уже сбрасывает его (это назы-
         вается "автоматическое завершение режима прерывания").

                         Сравнение методов передачи данных

              Сравнение времен и максимальных скоростей передачи данных не
         методами прямого доступа (DMA) представлено в таблице  5-5.  Вре-
         менные затраты (циклы и времена) в таблице вычисляются только для
         тех циклов,  в которых не происходит действительной передачи дан-
         ных.  Информация о временных затратах дается только в целях  при-
         близительного сравнения.  Например, временные затраты на выполне-
         ние "программного цикла" получают при выполнении следующей коман-
         ды языка ассемблер:

                     again:  loop again

              Регистр CX  загружается  некоторым  определенным   значением
         счетчика и в этом цикле передачи данных не происходит.
              Циклы для проведения упорядоченного опроса строятся  в  виде
         предложенной ниже программы, в которой происходит считывание сос-
         тояния из порта, проверка бита готовности и потом выполняется сам
         цикл, если готовности нет.

            again:
                   in     ax,dx        ; порт задается в DX
                   test   ax,bx        ; сравнение регистр/регистр
                   jnz    again        ; повторять цикл до готовности


                                                         Таблица 5-5
                 Скорости передачи данных для не -DMA интерфейсов
         ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДД¬
         ¦Готовые данные,¦   Затраты     ¦   Передача   ¦Макси-   ¦
         ¦определяемые:  ¦   времени     ¦    данных    ¦мальная  ¦
         ¦               ГДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДґскорость ¦
         ¦               ¦ циклы  время  ¦  циклы  время¦передачи ¦
         ¦               ¦               ¦              ¦данных   ¦
         ГДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДД†ДДДДДДДДДґ
         ¦Программный    ¦17  3.564 мксек¦  -      -    ¦ -       ¦
         ¦цикл           ¦               ¦              ¦         ¦
         ¦(8088,4.77 MГц)¦               ¦              ¦         ¦
         ¦               ¦               ¦              ¦         ¦
         ¦Упорядоченный  ¦27  5.660 мксек¦51 10.692мксек¦61 КГц   ¦
         ¦опрос          ¦               ¦              ¦         ¦
         ¦(8088;4,77 МГц)¦               ¦              ¦         ¦
         ¦               ¦               ¦              ¦         ¦
         ¦Прерывание     ¦115 24.109мксек¦43  9.015мксек¦30 КГц   ¦
Предыдущая страница Следующая страница
1 ... 65 66 67 68 69 70 71  72 73 74 75 76 77 78 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама