Блоки управления
Когда-то, еще до .NET, вам действительно нужно было знать, что такое компьютер, прежде чем вы могли заставить его что-то делать. На этот вопрос можно было бы получить массу ответов.
За исключением того, что в то время интернета не было, и переполнение стека не было проблемой, поскольку концепция стека и кучи на самом деле не была стандартом.
Поэтому, чтобы убедиться, что мы действительно говорим об одном и том же, я просто попытаюсь объяснить это.
Блок управления в цифровом компьютере инициирует последовательность микроопераций. В системе, ориентированной на шину, управляющие сигналы, определяющие микрооперации, представляют собой группы битов, которые выбирают пути в мультиплексорах, декодерах и АЛУ.
Итак, мы смотрим на блок управления и набор инструкций, чтобы сделать его способным на самом деле что-то делать. Мы имеем дело с тем, какие шаги должны произойти, когда скомпилированная сборка запрашивает битовый сдвиг, очистку регистра или подобные «низкоуровневые» вещи.
Некоторые из этих инструкций могут быть жестко запрограммированы, но обычно не все.
Микропрограммы
Цитата: "Микропрограммирование — это упорядоченный метод проектирования блока управления обычного компьютера" (http://www2.informatik.hu-berlin.de/rok/ca/data/slides/english/ca9.pdf)
Переменные управления для блока управления могут быть представлены строкой из 1 и 0, называемой "управляющим словом". Микропрограммируемый блок управления – это блок управления, в котором бинарные управляющие переменные не жестко запрограммированы, а хранятся в памяти. Прежде чем мы оптимизировали материал, мы назвали эту память микропамятью;)
Обычно мы рассматриваем две «памяти»: управляющую память и основную память.
управляющая память для микропрограммы, а основная память для инструкций и данных
Процесс генерации кода для управляющей памяти называется микропрограммированием.
... ok?
Передача информации между регистрами в процессоре осуществляется через мультиплексоры, а не через шину, обычно у нас есть несколько регистров, некоторые из которых знакомы программистам, а некоторые нет. Те, которые должны звонить в колокол для большинства здесь, - это регистры процессора. Наиболее распространенные 4 регистра процессора:
- Счетчик программ – ПК
- Адресный регистр – АР
- Регистр данных – ДР
- Аккумуляторный регистр - AC
Примеры, когда микрокод использует регистры процессора для выполнения каких-либо действий
Assembly instruction "ADD"
pseudo micro code: " AC ← AC + M[EA] " where M[EA] is data from main memory register
control word: 0000
Assembly instruction "BRANCH"
pseudo micro code "If (AC < 0) then (PC ← EA) "
control word: 0001
Микропамять Микропамять касается только того, как мы организуем то, что находится в контрольной памяти. Однако, когда у нас есть большие наборы инструкций, мы можем сделать лучше, чем просто хранить все инструкции. Мы можем разделить управляющую память на «управляющую память» и «нанопамять» (поскольку нано меньше, чем микро;) ) Это хорошо, так как мы не тратим впустую много ценного пространства (чип области) на микрокоде.
Концепция нанопамяти основана на сочетании вертикальных и горизонтальных инструкций, но также обеспечивает компромисс между ними.
Микрокомпьютер Motorola M68k является одним из первых и популярных микрокомпьютеров с такой конструкцией управления нанопамятью. Здесь было показано, что значительная экономия памяти может быть достигнута, когда группа микроинструкций часто встречается в микропрограмме.
Здесь было показано, что при правильной структуризации памяти можно использовать несколько битов для адресации инструкций без значительных затрат на скорость. Сокращение было таким, что для указания наноадреса по сравнению с микроадресом требуются только старшие биты log_2(n).
Что это значит? Что ж, давайте еще немного остановимся на примере M68K: у него было 640 инструкций, из которых только 280 были уникальными.
если бы инструкции были закодированы как простая микропамять, она заняла бы:
640x70 bits. or 44800 bits
однако, поскольку для заполнения всех 70 бит требуется только 280 уникальных инструкций, мы можем применить метод нанопамяти к оставшимся инструкциям и получить:
8 < log_2(640-280) < 9 = 9
640*9 bit micro control store, and 280x70 bit nano memory store
total of 25360 bits
или экономия памяти 19440 бит.. которую можно было бы выделить как основную память для программистов :)
это показывает, что уравнение:
S = Hm x Wm + Hn x Wn
where:
Hm = Number of words High Level
Wm = Length of words in High Level
Hn = Number of Low Level words
Wn = Length of low level words
S = Control Memory Size (with Nano memory technique)
держится в реальной жизни.
обратите внимание, что микропамять обычно проектируется вертикально (Hm большое, Wm маленькое), а нанопрограммы обычно противоположны Hn маленькому, Wn большому.
Вернуться к вопросу
У меня было несколько проблем с пониманием формулировки задачи, возможно, из-за того, что мой родной язык датский, но все же я попытался разобраться в этом и получил следующее:
proposition 1:
1000 instructions
32 bits
450 uniques
µCode:
1000 * 32 = 32.000 bits
bit width required for nano memory:
log2(1000-450) > 9 => 10
450 * 32 = 14400
(1000-450) * 10 = 5500
32000 - (14400 + 5500) = 12.100 bits saved
Что не является ни одним из ваших ответов. пожалуйста, дайте разъяснение?
ОБНОВЛЕНИЕ:
"the control word is 32 bit. we can code the 450 pattern with 9 bit and we use these 9 bits instead of 32 bit control word. reduce memory from 1000*(32+x) to 1000*(9+x) is equal to 23kbits. – Ali Movagher"
Вот ваша проблема, мы не можем закодировать шаблон 450 с 9 битами, насколько я понимаю, нам нужно 10..
person
Henrik
schedule
25.03.2015