Команда одного цикла занимает один цикл, даже если ОЗУ работает медленно? - PullRequest
2 голосов
/ 10 октября 2009

Я использую встроенный RISC-процессор. Есть одна базовая вещь, с которой мне трудно разобраться.

В руководстве по ЦПУ четко указано, что инструкция ld r1, [p1] (на языке C: r1 = * p1) занимает один цикл. Размер регистра r1 составляет 32 бита. Однако шина памяти имеет ширину всего 16 бит. Так как же получить все данные за один цикл?

Ответы [ 2 ]

6 голосов
/ 10 октября 2009

Время часов подразумевает, что полная память состояния ожидания нулевой ширины. Время, которое требуется ядру для выполнения этой инструкции, составляет один тактовый цикл.

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

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

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

1 голос
/ 10 октября 2009

Насколько я понимаю, когда говорят, что какая-то инструкция занимает один цикл, это не значит, что инструкция будет завершена за один цикл. Мы должны принять во внимание команду pipe-line . Предположим, что ваш ЦП имеет 5-ступенчатую конвейерную линию, эта инструкция будет занимать 5 циклов, если она будет выполняться последовательно.

...