Как архитектура Load Store различает операции alu и инструкции доступа к памяти - PullRequest
0 голосов
/ 12 июля 2020

Я прохожу через архитектуру RiscV. Я узнал, что, как и другая архитектура RIS C, она также является архитектурой загрузочного хранилища. Я искал в Google и узнал об архитектуре хранилища загрузки, и он сообщает, что в архитектуре хранилища загрузки для выполнения операций, например операции сложения, оба операнда должны быть загружены в регистры из памяти, а затем операция выполняется, и результат снова сохраняется в памяти из регистров. Следующее утверждение может различать инструкции между операциями ALU и доступом к памяти. Кто-нибудь может сказать, как он это делает.

1 Ответ

3 голосов
/ 12 июля 2020

оба операнда должны быть загружены в регистры из памяти, после чего операция выполняется, и результат снова сохраняется в памяти из регистров.

Это немного вводит в заблуждение или упрощено.

Во-первых, это происходит, только если все операнды находятся в памяти, как в следующем выражении: a[i] = b[i] + c[i]; где у вас будет две загрузки и одно хранилище.

Напротив, выражение, подобное i = i + 1;, обычно уже будет иметь i в регистре, так что это будет всего одна инструкция - никаких загрузок и сохранений.

Во-вторых, архитектуры без загрузки / сохранения могут express добавить память с меньшим количеством инструкций, но им все равно придется выполнять ту же работу: извлекать операнды из памяти, добавлять в ЦП и сохранять результат возвращается в память.

Следующий оператор, который может различать инструкции между операциями ALU и доступом к памяти.

Простой ответ заключается в том, что загрузка и сохранение и Все операции ALU имеют разные коды операций. Код операции сообщает ЦП (а также программным дизассемблерам и людям) формат инструкции, и этот формат может также иметь дополнительный код операции, который дополнительно различает операции. (В RIS C V первые два бита кода операции информируют о размере инструкции относительно того, 32 или 16 битов, в то время как больше битов используется для 48-битных и больших инструкций.)

Подход просмотр полей кода операции и, возможно, вторичных полей кода операции не является уникальным для архитектур загрузки / хранения - все архитектуры наборов инструкций используют поля кода операции, например, для понимания длины инструкции (если это необходимо для этой реализации) и числа, значения и положение / размеры его операндов. См. Также: https://en.wikipedia.org/wiki/Instruction_set_architecture#Instruction_encoding

...