Процессор и память (значение, регистр) - PullRequest
0 голосов
/ 18 ноября 2011

Когда значение копируется из одного регистра в другой, что происходит со значением в исходном регистре?Что происходит со значением в регистре назначения.

1 Ответ

2 голосов
/ 18 ноября 2011

Я покажу, как это работает на простых процессорах, таких как DLX или RISC, которые используются для изучения архитектуры CPU.

Когда (Синтаксис AT & T или скопировать $ R1 в $ R2)

mov $R1, $R2

или даже (для архитектуры в стиле RISC)

add $R1, 0, $R2

инструкция работает, CPU будет читать исходные операнды: R1 из регистровый файл и ноль из ... может быть непосредственным операндом или генератором нуля; передать оба входа в Арифметико-логическое устройство (АЛУ) . ALU выполнит операцию, которая просто передаст первый исходный операнд в пункт назначения (потому что A + 0 = A), а после ALU пункт назначения будет записан обратно в файл регистрации (но в слот R2).

Итак, Данные в регистре источника только читаются и не изменяется в этой операции; данные в регистре назначения будут перезаписаны копией данных исходного регистра. (старый регистр состояния назначения будет потерян с выделением тепла .)

На физическом уровне любой регистр в регистровом файле состоит из ячеек SRAM , каждый из которых представляет собой два инвертора (бистабильный триггер, основанный на M1, M2, M3, M4) и дополнительные ворота для письма и чтения:

SRAM cell (wiki, PD File:SRAM_Cell_(6_Transistors).svg)

Когда мы хотим перезаписать значение, хранящееся в ячейке SRAM, мы будем устанавливать BL и -BL в соответствии с нашими данными (для сохранения бита 0 - установить BL и сбросить -BL; сохранить бит 1 - установить -BL и сбросить BL) ; тогда запись включена для текущего набора (линии) ячеек (WL включен; он откроет M5 и M6). После открытия M5 и M6 BL и -BL изменят состояние бистабильного триггера (как в SR-latch ). Итак, новое значение записывается, а старое значение отбрасывается (путем утечки заряда в BL и -BL).

...