CISC 및 VLIW, 명령어 및 연산 코드

CISC 및 VLIW, 명령어 및 연산 코드

에서http://en.wikipedia.org/wiki/Instruction_set

CISC 프로세서명령어 세트에 "복잡한" 명령어를 포함합니다. 단일 "복잡한" 명령은 다른 컴퓨터에서는 많은 명령을 수행할 수 있습니다. 이러한 명령어는 여러 단계를 수행하거나, 여러 기능 단위를 제어하거나, 지정된 프로세서에 의해 구현되는 대량의 간단한 명령어보다 더 큰 규모로 나타나는 명령어로 대표됩니다.

...

~ 안에매우 긴 명령어(VLIW) 아키텍처많은 마이크로코드 아키텍처를 포함하는 단일 명령에는 여러 개의 동시 opcode와 해당 피연산자가 포함됩니다.

CISC와 VLIW는 명령에 여러 작업(즉, opcode)이 포함된다는 점에서 동일한 개념으로 보입니다. 그럼 같은 개념인가요?

명령어에 여러 연산(즉, opcode)이 있는지 알 때 단일 연산(즉, opcode)을 어떻게 정의합니까?

답변1

최신 CISC 프로세서에는 여러 실행 단위가 있습니다. 또한 실행 단위 간에 명령어 스트림을 배포하기 위한 많은 추가 회로와 논리가 있습니다.

VLIW는 컴파일러가 이 작업 중 일부를 수행하고 저장된 회로를 더 많은 실행 단위, 캐시 또는 기타 리소스에 사용하도록 하려는 시도입니다.

예를 들어 명령어 단어가 128비트이고 세 개의 명령어를 포함하는 Itanium이 있습니다. 이를 통해 컴파일러는 함께 실행할 명령어를 쌍으로 묶는 작업 중 일부를 수행할 수 있습니다.

답변2

명령어는 다음 명령어 이전에 논리적으로 수행되어야 하는 단일 순서입니다. VLIW 명령어와 같이 명령어에 둘 이상의 작업이 포함된 경우 이러한 작업은 동시에 수행되어야 합니다. 그리고 VLIW 명령어에서 각 작업 슬롯은 하드웨어 처리 장치(FPU와 ALU의 조합)에 해당하며 이는 명령어에 의해 정적으로 할당됩니다. CISC 또는 RISC의 경우 프로세서는 무료 처리 장치를 선택할 수 있습니다. 그러나 VLIW를 사용하여 명령에 단위가 할당되므로 더 크거나 더 적은 처리 단위가 있는 다른 모델에서 하나의 VLIW에 대한 코드를 실행할 수 없습니다. 해당 명령의 슬롯은 더 많거나 적기 때문입니다. 코드가 자동으로 추가 처리 장치를 사용할 수 있는 CISC 또는 RISC와 달리 더 적은 수의 슬롯이 있는 형식을 사용하는 코드 실행을 허용합니다. VLIW 코드는 프로세서에 대해 특별히 재컴파일되지 않으면 추가 처리 장치를 사용할 수 없습니다.

VLIW의 이러한 제한으로 인해명시적 데이터 그래프 실행(EDGE).

답변3

명령어에 여러 연산(즉, opcode)이 있는지 알 때 단일 연산(즉, opcode)을 어떻게 정의합니까?

정의와 기대가 정확하지 않습니다."오피코드"나타내는 데 사용됩니다.보이는마이크로 작전과 같은 숨겨진 작업이 아닌 지침"지침"만 참조해야합니다사용자 노출 작업. "작업"은 opcode에 해당하지 않으며 전체 작업 자체를 처리하려는 경우 또는 각 하위 수준 작업을 처리하려는 경우와 같이 참조하는 방법에 따라 단순(단일 opcode) 또는 복잡(다중 opcode)일 수 있습니다. 그 큰 일을 달성하는 데 사용됩니다. 마치 나눗셈을 하면 단일 연산이라고 할 수 있는 것과 같습니다. 그러나 나눗셈은 일련의 뺄셈/곱셈, 즉 다중 연산(하드웨어 용어의 단계)으로 세분화될 수도 있습니다. 많은 기존 RISC 아키텍처에는 지침을 단순하게 유지하고 파이프라인을 간단하게 만들기 위해 부서의 다양한 단계에 대한 별도의 지침이 있습니다. 그러나 최신 RISC 아키텍처는 일반적으로 그렇게 하지 않으며 rlwinmPowerPC나 ldm/stmARM과 같은 CISC와 같은 매우 복잡한 명령어를 가질 수 있습니다.

~ 안에VLIW 아키텍처, 단일 명령어는 여전히 1개의 명령어입니다. 그러나 지침은 다음과 같습니다.함께 그룹화일괄적으로. 예를 들어, Itanium 아키텍처의 배치에는 실행될 3개의 명령이 포함되어 있습니다.동시에. 물론 각 명령어에는 고유한 opcode가 있어야 하며 해당 opcode는 프로그래머가 사용할 수 있습니다. 더욱이 이러한 명령어는 일부 상위 수준 명령어의 작업을 공동으로 나타내는 마이크로 연산과 달리 다른 명령어와 독립적입니다. 예를 들어 일부 아키텍처에서는 서로 관련되지 않은 일괄 처리에서 서로 다른 항목의 곱셈 및 비트 xor와 함께 2개의 추가가 있을 수 있습니다.

반대로,CISC지시는단 하나단일 작업을 수행하는 명령어이며하나의 연산코드. 이전 세대의 CISC CPU는 각 명령어를 직접 실행하므로 실제로는 깨지지 않는 단일 명령어입니다. 그러나 최신 프로세서에서는 복잡한 "작업"이 더 짧은 클럭 주기로 수행될 수 있는 여러 개의 간단한 마이크로 작업으로 나누어집니다. 그 마이크로옵스는외부인에게는 보이지 않는, 따라서 여러 opcode로 호출할 수 없습니다. 사용자에게는 여전히 단일 명령입니다. 당신은 아마도Intel이나 AMD가 내부적으로 어떤 마이크로옵스를 사용하고 있는지 전혀 알 수 없습니다.. 게다가 CISC 명령어는 단일 마이크로 연산 또는 여러 연산으로 분할될 수 있으므로 CISC가 단일 명령어에 여러 연산을 포함한다고 말하는 것은 완전히 잘못된 것입니다.

실제로 최신 RISC 아키텍처는 명령을 CISC처럼 마이크로 작업으로 나누고 매우 간단한 작업도 사용자가 볼 수 없는 매크로 작업으로 결합합니다(예: x86의 CMP/Jcc 또는 RISC의 DIV/REM). V 그리고 당신은 RISC가 간단하다고 말하지 않을 것입니다. RISC 명령어는 여전히 여러 작업을 수행할 수 있습니다.

CISC와 VLIW에는 한 번에 실행되는 단일 opcode가 있는 단일 명령이 있고(현재 수퍼스칼라 및 비순차적 실행 제외) 한 번에 여러 명령을 실행하는데 어떻게 동일한 개념입니까? 지침 세트의 상위 또는 최소한 동일한 수준으로 보아야 합니다. CPU 내부에서 사용되는 것과 CPU 상위 명령어 세트에 있는 것을 비교하는 것은 의미가 없습니다.

관련 정보