cortex-a9와 같은 ARM 프로세서는 마이크로 코드를 사용합니까?


12

ARM 프로세서 (최근 및 이전)는 마이크로 코드를 사용합니까? 그렇다면 무엇을 위해? 그들의 명령이 마이크로 연산으로 변환되지 않고 직접 실행될 정도로 간단하지 않습니까?

답변:


14

TL, DR; ARM 프로세서 microcoded CPU를 유사한 개념을 사용하는 동안 (예를 들어, 하나 이상의로 복호 지시하는 하드웨어 블록도이다 마이크로 연산 들은이된다) 하지 전통적인 의미에서 microcoded 사용하는 ROM 각 마이크로 인스트럭션을 저장하는 것으로이 없으며 이러한 마이크로 명령어 / 작업은 실제 하드웨어에서 생성 된 후에 수정 될 수 있습니다. 실제로 ARM 프로세서 는 명령 디코더에서 고정 배선 제어사용 하여 마이크로 연산을 생성합니다.

그러나 실제로 ARM 은 CPU 아키텍처 의 하드웨어 설명 언어 ( HDL ) 소스 코드를 개별 제조업체에 라이센스하여 하드웨어 수준 수정을 훨씬 쉽게 구현할 수 있기 때문에 실제로 명령 디코더 수정은 마이크로 코드 프로세서 수정과 유사 할 수 있습니다 . 일반적인 RISC 및 CISC 명령어 디코더의 차이점에 대해서는 Microprocessor Design Wikibook 의 명령어 디코더 섹션 을 참조하십시오 .


ARM 아키텍처 자체는 전통적인 의미에서 마이크로 코딩 되지 않지만 개별 명령 더 작은 마이크로 연산으로 디코딩됩니다 . 최신 ARM 프로세서는 "간단한"것과는 거리가 멀다. 명령어 자체는 매우 직교 적이지만 많은 현대 기술 (예 : 파이프 라이닝, 수퍼 스칼라 명령어, 비 순차적 실행, 캐싱, 부동 소수점 단위와 같은 확장 된 복잡한 명령어)이 있습니다. 또는 최신 A9 코어에있는 NEON 지침). 실제로 모든 프로세서는 마이크로 작업으로 변환하지 않고 실행하기에 충분히 간단 할 수 있지만, 이는 본질적으로 "모든 계란을 하나의 바구니에 넣습니다". 명령어 세트에서 가능한 정오표를 수정하거나 생산 후 확장 / 수정할 수 없습니다.

그러나 명령 디코드 단계 에 대해서만 이야기하는 경우 실제로 많은 ARM 프로세서는 실제로 수정이 가능한 방식으로 마이크로 코딩 되지 않습니다 . 비록 ARM 기술을 라이센싱하는 대부분의 제조업체에 실제 액세스 권한이 부여되어 있기 때문일 수 있습니다 하드웨어 소스 코드 (HDL로 작성). 이는 마이크로 코드 단계가 필요하지 않기 때문에 전력 소비를 줄이지 만 개별 명령은 실제 ​​하드웨어 블록으로 "컴파일"됩니다. 또한 각 제조업체에서 정오표를 수정할 수 있습니다.

실제로 CISC 기반 CPU (예 : x86)에서도 마이크로 코드를 사용할 필요 는 없습니다 . 그러나 실제로는 라이센스, 전력 소비 및 애플리케이션의 다양한 차이점과 결합 된 명령어 세트의 복잡성으로 인해 x86의 경우에 적합한 마이크로 코드 선택이 가능합니다. 그러나 ARM의 경우 명령어 세트 (디코더)에 대한 변경이 하드웨어 자체 측면에서 구현 및 제어하기가 훨씬 쉬워 (제조업체에서 사용자 지정할 수 있으므로) 유용하지 않습니다.


(각각의 명령은 실제 하드웨어 대조적으로 "마이크로 프로그램"으로 존재하는) 마이크로 코드를 갖는 사실 몇몇 경우에, 프로세서의 설계를 간소화 할 수는 있지만,이 효과적으로 단지 명령 디코더 (예 Thumb-2의 확장 , 허용 가변 ARM 명령어 디코더와 함께 별도의 명령어 디코더 를 추가하여 존재하는 길이 명령어 ). 기능적으로 이러한 장치는 마이크로 코드를 사용하여 구현할 수 있지만, 필요하지 않더라도 CPU 자체의 각 제어 신호에 대한 출력을 정의해야하기 때문에 전력 소비 측면에서는 현명하지 않습니다. 이것은하지 않습니다 그러나 ARM 코어에는 파이프 라인, 명령어 / 데이터 캐시, 마이크로 -TLB 버퍼, 분기 예측, 가상 메모리 등 기대할 수있는 모든 최신 구성이 있기 때문에 실제 CPU 자체의 "복잡한"방법과 관련이 있습니다. ).

ARM의 경우, 명령어 세트의 직교성을 고려할 때, 그러한 마이크로 코딩 된 접근법을 구현하는 데 수반되는 복잡성은 단순히 명령어 디코더 블록에서 관련 하드웨어를 직접 변경하는 것의 이점을 능가 할 것이다. 이것이 가능할지라도, 하드웨어의 변경 사항을 직접 수정 (및 컴파일 / 테스트 / 에뮬레이션) 할 수 있다면, "바퀴 재발견"이 끝납니다.


이 경우 ARM 소스 코드 자체를 마이크로 코딩 유형으로 "생각"할 수 있지만, 각 마이크로 연산 / 마이크로 프로그램을 사후 수정이 가능한 ROM에 저장하는 대신 직접 구현됩니다. 명령 디코더의 하드웨어. 명령어 디코더 자체가 VHDL / Verilog로 작성되었으므로 기존 명령어를 변경하는 것은 소스 코드 수정, 재 컴파일 및 새 하드웨어 (예 : FPGA 또는 시뮬레이터)를 테스트하는 것만 큼 간단합니다. 이는 개발 과정에서 테스트 / 시뮬레이션이 훨씬 어렵고 생산 후 수정하기가 더 어려운 최신 x86 하드웨어의 복잡성과 대조됩니다. FPGA, 따라서 마이크로 코드 저장소 사용에 이점을 추가)FPGA를 사용하는 물리적 하드웨어.


ARM의 마이크로 코드는 하드웨어에 있습니다.
크라켄

1
어떤 의미에서 @Kraken, 예; 마이크로 시퀀서 를 사용하는 대신 , 각 명령어는 명령어 디코더에 의해 해당 opcode 에 대한 개별적인 마이크로 연산 / 마이크로 명령어 (하나 이상의 클럭 사이클)로 직접 변환됩니다 . Microprocessor Design Wikibook 의 Instruction Decoder 기사 는 일반적인 RISC 및 CISC 명령어 디코더의 차이점을 설명하는 데에도 유용합니다.
획기적인

감사. 이것은 나를 위해 많은 것을 분명히합니다. 다시 감사합니다. 노력 +1
크라켄
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.