2017-02-11 10 views
-1

Processor registerInstruction register의 CPU 차이는 무엇입니까? 각각은 무엇을 위해 사용 되었습니까? 은 프로세서 레지스터의 명령어 레지스터 부분입니까?프로세서 레지스터와 명령어 레지스터의 차이점은 무엇입니까?

+1

두 개의 레지스터에 대해 정확히 혼동하는 것은 무엇입니까? 차이가 없어야하는 이유는 무엇입니까? 왜 아무것도 없다고 생각하니? – Downvoter

+0

문제는 없습니다. 귀하의 질문과 관련하여 "명령 등록부"가 [this] (https://en.wikipedia.org/wiki/Instruction_register)를 의미합니까? 특정 질문에서 사용하는 용어에 하이퍼 링크를 제공하면 모든 사람이 자신이 말하는 것을 알 수 있습니다. – Downvoter

+0

예, 정확히 그 중 하나입니다. 실제로 이것은이 주제에서의 첫날이기 때문에 그 용어가 잘 알려져 있다고 생각했습니다. – Maysara

답변

0

귀하의 질문에 그런 링크를 사용하는 것은 당황 스럽습니다. 이 경우 링크는 적절한/좋은 설명을 제공합니다.

ARM 프로세서 (현재 복수형)를 연구 중이라면 프로세서 레지스터를 이미 이해하고있는 것입니다. 그 (것)들을위한 또 다른 이름은 다목적 기록기이다. 그들은 프로그램에서 변수와 매우 비슷한이 높은 사고 수준에 있으며, 바로 사용할 수있는 함수에 바로 있습니다. ARM에서는 r0, r1, r2, r3 등이 될 것입니다.

명령어 레지스터는 개념이 더 많으며, 시간이 있었을 수도 있고 확실히 이런 식으로 설계 할 수도 있지만 이제는 파이프 라인이 있습니다. 지시가 살아있는 단지 한 곳이 아닙니다. 그러나 그것을 제외하고. cpu는 어떻게 작동해야합니까? 메모리, 플래시 또는 램에서 명령을 가져 오거나 그 명령을 메모리에서 남겨 둘 수 있습니다. 그런 다음 로직은 해당 비트를 검사하여 어떤 명령어인지 판별 한 다음 거기에서 무엇을해야하는지 결정해야합니다.

ARMv5 용 ARM 아키텍처 참조 설명서부터 시작하거나 기본적으로 찾을 수있는 가장 오래된 것부터 시작하여 앞으로 나아갈 수 있기를 바랍니다. 이 오래된 제품은 시작하기에 더 좋은 제품이며 나중에 나올 모든 보호 기능과 기타 기능이 지나치게 복잡하지는 않습니다.

그래서 엄지 손가락 명령을 추가 할 수 있습니다.

add r1,r2,r3 

나는 그것을 조립하고 내가

Disassembly of section .text: 

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

그리고

내가 상위 7 비트가되는 예상 정확히 무엇 인 ARM의 ARM보고받을 분해 세 개의 레지스터를 설명 0b0001100 다음 세 그룹으로 세 가지의 비트 , 두 개의 입력 피연산자 하나는 destionation 일 필요는 없습니다.

이렇게하면 프로세서가 어떻게 유용 할 수 있습니까? 먼저 메모리에서 명령어를 가져와야하므로 0x18D1 비트를 얻기 위해 메모리에서 일종의 읽기 (페치는 읽기)를 수행합니다. 그런 다음 해당 비트를 디코딩해야합니다. 물론 이러한 비트를 디코딩하는 동안 클럭주기의 지속 시간 이상으로 비트를 저장해야합니다. 이는 일반적으로 레지스터에 래치된다는 것을 의미합니다. 글쎄, 범용 레지스터는이 명령어가 저장 될 프로세서 내부의 어떤 곳이 아닙니다. 그리고 만약 당신이 그것을 명령 레지스터라고 부르길 원한다면, 그렇게하십시오. 프로세서에 일시적으로 저장되는 동안 그 비트를 디코딩 할 수 있으며, 일부 로직은 상위 7 비트를 다시 인식하여 "이게 모두 3 개의 레지스터가 추가되었습니다"라고 말하면 이제 프로세서는 두 개의 입력 레지스터를 가져와야합니다. 범용 또는 위키 피 디아 용어, 프로세서 레지스터 사용하기. 그것들은 또한 alu를 먹이거나 가산기 회로에 피드하는 다른 레지스터들에 래치 될 수 있거나 아마도 그 필요성은 디자인에 의존하지 않고 발생합니다. 추가가 발생하고 이제 결과가 대상 레지스터 인 다른 프로세서 레지스터로 이동해야합니다. 또 다른 레지스터, 프로세서 상태 레지스터 (일반적으로) 또는 PSR 또는 ARM 용어 CPSR로 이동하는 플래그와 함께.

이제 파이프 라인을 사용하면 파이프 라인이 복잡해 지지만 파이프 라인은 다큐멘터리에서 본 조립 라인이나 아무것도 알지 못합니다. 파이프 라인은 위키피디아 페이지에서 명령어 레지스터 라인을 사용합니다. 또는 프로그래밍 용어를 사용하는 배열.이 명령어는 파이프에서 첫 번째 스테이지를 가져 와서 첫 번째 스테이지에 도달합니다. 조립 라인처럼 각 스테이지에서 다른 작업이 발생합니다. 어떤 지점에서 명령어를 디코딩하고, 어떤 시점에서 피연산자가 요청되고 표시되고, 어떤 시점에서 추가가 발생합니다 출력은 플래그와 함께 어딘가에 있어야합니다. 이 추가가 파이프를 통해 이상적으로 바로 뒤에서 움직이는 동안은 또 하나의 추가가됩니다. 조립 라인의 빨간 차와 마찬가지로 흰색과 초록색이 차례로 진행되는 과정에서 동일한 단계를 밟아 바퀴가 바퀴벌레를 두는 것과 같습니다.

+0

첫 번째 단락에 관해서 : 저는 OP에 링크를 추가하라고 권고 했으므로 어떻게 든 잘못되면 내 잘못입니다. 그래도 왜 그렇게 될지 모르겠다. 어쨌든, 첫 번째 문장에서 당신은 그것이 나쁘다고 말하고, 두 번째 문장에서는 당신이 훌륭하다고 말합니다. 나는 당신이 여기서 무엇을 의미하는지 정말로 모른다. – Downvoter

+0

나는 그것을 묻는 것을 보았다. 외부 링크의 문제점은 변경되거나 사라져서 SO 서버에 있지 않으며 질문 또는 응답과 관련이있는 경우 전체 스레드가 값을 잃어 버리게됩니다.나는 링크없이이 질문을 이해하려고 노력하는 어려움을 이해하며, 동시에 당신은 이것을 너무 모호하게 수정하고 매우 잘 닫을 수 있습니다. 그리고 우리는 링크가없는 질문을 이해할 수는 없었습니다. 그러나 링크는 그 대답을 기술 함에도 불구하고 그 용어를 설명 할 수있는 적절한 역할을합니다. 나는 아직도 그 질문을 모릅니다. –

+0

여러분, 정말이 놀라운 대화에서 많은 것을 배웠습니다. @old_timer HOW AMAZING U R! 정말 당신의 대답은 나를 많이 도와줍니다 – Maysara