В архитектуре современных ЭВМ стал стандартным прием организации регистров общего назначения в виде СОЗУ с прямой адресацией (адреса регистров размещаются в команде). В машинах с коротким словом, вынуждающим прибегать к одноадресным командам, один из общих регистров выделяется в качестве аккумулятора, регистра, в котором находится один из операндов и в который помещается результат операции. Регистр аккумулятора в явном виде в команде не адресуется, используется подразумеваемая адресация. В этом случае СОЗУ с прямой адресацией состоит из совокупности регистров, связанных с входной Х и выходной Z шинами (см. рис. 8.2).
Рис. 8.2. СОЗУ с прямой адресацией с одним адресным входом
Дешифратор адреса формирует управляющие сигналы 0,1,…,М, подключающие регистр с заданным адресом к шинам СОЗУ.
Адрес регистра, к которому производится обращение с целью записи или чтения (управляющий Сигнал ЗП/ЧТ) информации, поступает по шине А. Дешифратор адреса (ДША) формирует управляющие сигналы 0,1,…М, подключающие регистр с заданным адресом к шинам СОЗУ.
При использовании двухадресных команд типа «регистр - регистр» подобная организация СОЗУ становится неэффективной, т. к. за один такт может быть выбрано содержимое только одного регистра.
Для реализации таких команд за один такт СОЗУ строится в виде совокупности регистров, соединенных с одной входной и двумя выходными шинами (см. рис. 8.3). Адреса регистров, к которым производится обращение с целью чтения информации, поступают по шинам А и В. Адрес регистра для записи информации поступают по входу В.
Рис.8.3. СОЗУ с прямой адресацией с двумя адресными входами
Двухадресная команда, в которой адресуются два операнда, расположенные в регистрах, и результат операции размещается по одному из этих адресов [0…M].
Дешифраторы адресов формируют управляющие сигналы, подключающие два регистра к выходным шинам при чтении и один регистр при записи.
Стековая память. реализующая безадресное задание операндов, является эффективным элементом архитектуры ЭВМ. Стек представляет собой группу последовательно пронумерованных регистров (аппаратный стек) или ячеек памяти, снабженных указателем стека (обычно регистром), в котором автоматически при записи и считывании устанавливается номер (адрес) первой свободной ячейки стека (вершина стека). При операции записи заносимое в стек слово помещается в свободную ячейку стека, а при считывании из стека извлекается последнее поступившее в него слово. Таким образом, в стеке реализуется принцип LIFO «последний пришел - первый ушел».
Механизм стековой адресации поясняется на рис.8.4.
Рис. 8.4. Стековая память.
Предполагается, что область памяти для стека находится в сегменте стека, база которого определяется регистром SS - сегментным регистром стека. При добавлении записи в стек вначале проверяется, содержит ли указатель стека (ESP) значение, не меньше длины помещаемой в стек записи (2 байта для 16-разрядного и 4 байта для 32-разрядного процессора). Если это условие не удовлетворено, то генерируется особый случай нарушения стека. Если же ESP содержит значение не меньше требуемого, производится декремент указателя стека на 2(4) и операнд сохраняется по адресу SS:SP (SS:ESP) в текущем сегменте стека, на который указывает указатель стека.
(Число 4 – число байт в 32-х разрядном процессоре). При извлечении данных из стека содержимое ESP сравнивается с пределом SS. Если обращение оказывается вне предела, формируется особый случай нарушения стека. Когда обращение оказывается разрешенным, считываются данные по адресу SS:[ESP] и осуществляется инкремент ESP на 4. Извлечь данные из стека можно в регистр или в ЯП.
В современных архитектурах процессоров стек и стековая адресация широко используется при организации переходов к подпрограммам и возврата из них, а также в системах прерывания.
Прежде чем приступать к изучению принципов организации ОП, следует отметить следующее.
В последнее время емкость микросхем динамической памяти учетверялась каждые три года. Но скорость этих микросхем за тот же период возрастала гораздо меньшими темпами (примерно 7% в год). В то время, как производительность процессоров, начиная с 1987г, увеличивалась на 50% в год. Таким образом, согласование производительности современных процессоров со скоростью ОП вычислительных машин и систем остается одной из важнейших проблем. Методы повышения производительности за счет увеличения размеров КЭШ–памяти и введения многоуровневой организации КЭШ могут оказаться недостаточно эффективными с точки зрения стоимости системы. Поэтому важным направлением современных разработок являются методы повышения пропускной способности памяти за счет ее организации, включая специальные методы организации динамических ЗУ.