Загрузка...

Проблема перестановки байт


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

Для того, чтобы выполнить 4 последовательно расположенные команды мы 4 раза читаем из основной памяти одно и тоже слово. Это приводит к неэффективному использованию системного интерфейса. Поэтому для решения такой проблемы делается очередь команд, которая представляет собой сдвиговый регистр, который заполняется всякий раз, когда читается полное слово из основной памяти, а потом команды побайтно сдвигаются в регистр команд.

Каждая 4-я команда вызывает обращение к основной памяти.

Допустим у нас не байтовые команды, а 32 разрядное слово расположено по адресу, не кратному 4. В этом случае основная память может предоставить данные, которые расположены начиная с нулевого адреса по 3, причем этот нулевой адрес есть остаток от деления адреса на 4. И поэтому чтобы взять тот операнд, который находится по адресу не кратному 4 нам все равно необходимо сделать 2 обращения к памяти, потому что основная память не выполняет эту перестановку байт. Поэтому все процессоры должны содержать схему, которая обнаруживает, что требуемая порция данных не находится по адресу кратному 4 и если это так, то произвольное обращение к памяти реализовывать за 2 цикла. В 1 цикле читается то, что находится в предыдущем слове, а часть маршрутизируется в младшую часть нашего операнда.

Чтение слова не на границе слова.

Рис. 2.19. Чтение слова не на границе слова.

Получается, что если требуемые данные у нас находятся по адресу, не кратному 4, то мы должны сначала прочитать первую часть этого данного, занести его в тот регистр, где это данное будет подготовлено, а потом за второе обращение прочитать вторую часть. При этом происходит перепутывание трассы доставки этих данных в этот регистр, которой занимается специальный мультиплексор. Сколько разрядов адреса столько и перепутывания. Такие сложные решения для RISC архитектуры не годятся, поэтому эту проблему решают следующим образом: младшие 2 разряда вообще не выводят из процессора; это означает, что все данные могут находиться только на границе слова.

Загрузка...