2017-02-11 12 views
-1

В чем разница между Processor register и Instruction register в CPU? для чего каждый из них использовался? является регистрацией регистра регистров процессора?Какая разница между регистром процессора и регистром команд?

+1

Что именно * смущает вас об этих двух регистрах? Почему не должно быть разницы? Что заставляет вас думать, что их нет? – Downvoter

+0

Нет проблем. Что касается вашего вопроса, вы имеете в виду [это] (https://en.wikipedia.org/wiki/Instruction_register) в «регистре инструкций»? Было бы неплохо, если бы вы предоставили гиперссылки на термины, которые вы используете в своем конкретном вопросе, чтобы убедиться, что все знают, о чем вы говорите. – Downvoter

+0

yup, именно этот, действительно, это мой первый день в этой теме, поэтому я подумал, что эти термины хорошо известны. – Maysara

ответ

0

Он не согласен использовать ссылки в этом вопросе. В этом случае ссылки обеспечивают адекватное/хорошее описание.

Если вы изучаете процессор ARM (который теперь является множественным), вы уже понимаете регистры процессора. Другим именем для них являются регистры общего назначения. Они находятся на таком высоком уровне мышления, который очень похож на переменные в программе, они находятся прямо там, в вашей функции, доступной для использования. В ARM это будут r0, r1, r2, r3 и т. Д.

Реестр команд - это скорее концепция, возможно, было время, и вы могли бы что-то разработать таким образом, но теперь у нас есть конвейеры, поэтому это не просто место, где живет инструкция. но не допуская этого. Как должен работать процессор? Он должен извлекать инструкцию из памяти, вспышки или плунжера или оставлять ее на них. Затем логика должна проверять эти биты и определять, что это за инструкция, а затем оттуда, что с ней делать.

Я уверен, что вы начинаете с ARM Architectural Reference Manual для ARMv5 или самого старого, который вы можете найти в основном, а затем работать оттуда. Это старое, лучшее для начала и не слишком сложное со всеми защитами и другими функциями, которые появляются позже, он покрывает гайки и болты.

так что давайте добавим команду большого пальца.

add r1,r2,r3 

я собрать это, а затем разобрать я

Disassembly of section .text: 

00000000 <.text>: 
    0: 18d1  adds r1, r2, r3 

И глядя на ARM ARM, что это именно то, что я ожидал, что верхние 7 битов, 0b0001100 затем три группы три бита, описывающие три регистра , два входных операнда, один из них, не обязательно в этом порядке.

Так как же процессор может сделать что-нибудь полезное с этим? Сначала он должен получить инструкцию из памяти, поэтому для получения этих битов 0x18D1 он делает какое-то чтение (выборка только чтение) из памяти. Затем необходимо декодировать эти биты. Ну, пока он декодирует эти биты, ему необходимо сохранить эти биты больше, чем продолжительность тактового цикла. Это обычно означает, что он попадает в регистр. Ну, регистры общего назначения не там, где это происходит, где-то внутри процессора нам нужно сохранить эту инструкцию. И если вы хотите назвать этот регистр инструкций, пусть будет так. Пока мы временно сохраняем в процессоре, мы можем декодировать эти биты, некоторые логики будут распознавать верхние 7 бит и сказать «привет всем, что это три регистра добавить», и теперь процессор должен пойти, чтобы получить эти два входных регистра. Общее назначение или использование ваших терминов по википедии, регистров процессора. Они также могут быть зафиксированы в других регистрах, которые подают алю или подают схему сумматора, или, возможно, добавление происходит без необходимости в этом, зависит от дизайна. Добавление происходит, и теперь результат должен перейти в регистр назначения, другой регистр процессора. Наряду с флагами, которые переходят к еще одному регистру, регистру состояния процессора (в общем) или PSR или в терминах ARPS CPSR.

Теперь с трубопроводами, хотя это сложнее, конвейер - это не что иное, как сборочная линия, которую вы видели на документальных фильмах, или, возможно, знания из первых рук. Конвейер использует вашу страницу в википедии в строке регистров инструкций. или массив, использующий термины программирования.Команда извлекается и попадает на первый этап в трубе, и, как и на сборочной линии, на каждом этапе происходят разные задачи, в какой-то момент мы декодируем инструкцию, в какой-то момент операнды запрашиваются и отображаются, в какой-то момент происходит добавление , и выход должен идти куда-то вместе с флагами. Все это время, когда это дополнение перемещается по трубе идеально прямо за ним, это еще одно дополнение. Так же, как красный автомобиль на конвейере, за которым следуют белый и зеленый, каждый из которых попадает на тот же шаг в этом процессе, ставит колеса на двери и т. Д.

+0

Что касается вашего первого абзаца: я посоветовал OP добавлять ссылки, поэтому, если это так или иначе, это моя ошибка. Я не понимаю, почему это было бы. Во всяком случае, в первом предложении вы говорите, что это плохо, во втором вы говорите, что это хорошо. Я действительно не знаю, что вы имеете в виду здесь. – Downvoter

+0

Я видел, как вы это спрашиваете. Проблема с внешними ссылками заключается в том, что они меняются или уходят, поэтому они не находятся на SO-сервере, и если они имеют отношение к вопросу или ответу, то весь поток теряет свое значение.Я понимаю трудность попытаться понять этот вопрос без ссылок, и в то же время вы абсолютно правы, это слишком расплывчато и вполне может закрыться. И мы не могли понять вопрос без ссылок, но ссылки выполняют адекватную работу по описанию этих терминов, поэтому, несмотря на мой ответ, я до сих пор не знаю вопроса. –

+0

Благодарю вас, ребята, я действительно многому научился из этого удивительного разговора :) @old_timer КАК ИЗМЕНИТЬ U R! действительно ваш ответ мне очень помогает – Maysara

Смежные вопросы