마이크로코드

Microcode

프로세서 설계에서 마이크로코드(μcode[1])는 중앙처리장치(CPU) 하드웨어와 프로그래머가 볼 수 있는 컴퓨터[2][page needed]명령어 세트 아키텍처 사이에 컴퓨터 구성 레이어를 개입시키는 기술이다.마이크로코드는 많은 디지털 처리 요소에서 상위 수준의 기계 코드 명령 또는 내부 유한 상태 기계 시퀀싱을 구현하는 하드웨어 수준의 명령 레이어입니다.마이크로코드는 범용 중앙처리장치에서 사용되지만 현재의 데스크톱 CPU에서는 고속 유선 연결 제어장치[3]처리할 수 없는 경우의 폴백 경로일 뿐입니다.

마이크로코드는 일반적으로 특수한 고속 메모리에 존재하며 기계 명령, 상태 기계 데이터 또는 기타 입력을 상세한 회로 레벨 동작 시퀀스로 변환합니다.기계 명령을 기본 전자 장치와 분리하여 명령을 보다 자유롭게 설계하고 변경할 수 있습니다.또한 컴퓨터 회로의 복잡성을 줄이면서 복잡한 다단계 명령을 쉽게 구축할 수 있습니다.마이크로코드 작성은 종종 마이크로프로그래밍이라고 불리며, 특정 프로세서 구현에서의 마이크로코드는 마이크로프로그래밍이라고 불리기도 합니다.

보다 광범위한 마이크로코딩을 통해 소형 및 심플한 마이크로아키텍처는 보다 강력한 아키텍처를 에뮬레이트할 수 있습니다.이것은 프로세서 패밀리의 다른 제품 간에 소프트웨어 호환성을 실현하는 비교적 간단한 방법입니다.

일부 하드웨어 벤더(특히 IBM)에서는 마이크로코드라는 용어를 펌웨어의 동의어로 사용합니다.이와 같이, 디바이스내의 모든 코드는 마이크로 코드나 머신 코드에 관계없이 마이크로 코드라고 불립니다.예를 들어, 하드 디스크 드라이브는 일반적으로 마이크로 [4]코드와 펌 웨어를 모두 포함하고 있습니다만, 마이크로 코드가 갱신되어 있다고 합니다.

개요

컴퓨터의 소프트웨어 스택에서 가장 낮은 계층은 전통적으로 프로세서의 원시 기계 코드 명령입니다.마이크로코드 프로세서에서 명령을 가져오고 디코딩합니다.마이크로코드로 실행할 수 있습니다.혼동을 피하기 위해 각 마이크로 프로그램 관련 요소는 마이크로 명령, 마이크로 어셈블리, 마이크로 프로그래머,[citation needed] 마이크로 아키텍처 등 마이크로 접두사로 구분됩니다.

복잡한 디지털 프로세서는 기본적으로 병렬로 비동기적으로 수행해야 하는 서브태스크를 위임하기 위해 여러 개의 (아마도 마이크로코드 기반) 제어 유닛을 사용할 수 있습니다.예를 들어 VAX9000은 명령을 가져오고 디코딩하는 IBox 유닛을 가지며,[5] VAX8800은 마이크로코딩된 IBox 유닛과 마이크로코딩된 EBox를 [6]모두 가진다.

고급 프로그래머 또는 어셈블리 언어 프로그래머는 일반적으로 마이크로코드를 보거나 변경하지 않습니다.프로세서 패밀리 내의 다른 프로세서 간에 하위 호환성을 유지하는 기계 코드와는 달리 마이크로 코드는 프로세서 설계 자체의 고유한 부분을 구성하기 때문에 설계된 정확한 전자 회로에서만 작동합니다.

설계.

일반적으로 엔지니어는 프로세서의 설계 단계에서 마이크로코드를 작성하여 읽기 전용 메모리(ROM) 또는 프로그래머블 로직 어레이(PLA)[7] 구조 또는 그 양쪽의 [8]조합에 저장합니다.단, 스태틱 Random-Access Memory(SRAM; 랜덤 액세스메모리) 또는 플래시 메모리에 일부 또는 모든 마이크로코드를 저장하는 머신도 존재합니다.이는 전통적으로 컴퓨터 컨텍스트에서 쓰기 가능한 제어 저장소로 표시되며 읽기 전용 메모리 또는 읽기-쓰기 메모리 중 하나입니다.후자의 경우 CPU 초기화 프로세스는 마이크로코드를 다른 기억매체에서 제어스토어에 로드하고 마이크로코드를 변경하여 명령 세트의 버그를 수정하거나 새로운 기계명령을 구현한다.

마이크로 프로그램

마이크로 프로그램은 일련의 마이크로 명령으로 구성되어 있으며, 매우 기본적인 하드웨어 회로 수준에서 CPU를 제어합니다.예를 들어, 하나의 일반적인 수평 마이크로 명령이 다음과 같은 작업을 지정할 수 있습니다.

  • 레지스터 1을 ALU의 A 에 연결합니다.
  • 레지스터 7을 ALU의 B 에 연결합니다.
  • 2개의 보완 추가를 수행하도록 ALU를 설정합니다.
  • ALU의 반송 입력을 0으로 설정합니다.
  • 레지스터 8에 결과 값 저장
  • ALU 상태 플래그에서 상태 코드를 업데이트합니다(, 0, 오버플로반송).
  • 다음 마이크로 명령을 위해 지정된 마이크로PC 주소로 마이크로점프

프로세서의 모든 기능을 한 사이클로 동시에 제어하기 위해 마이크로 명령은 대개 50비트보다 넓습니다. 예를 들어 에뮬레이터 기능이 있는 360/85의 경우 128비트입니다.마이크로프로그램은 가능한 한 빨리 실행되도록 신중하게 설계되고 최적화됩니다. 마이크로프로그램이 느려지면 기계 명령이 느려지고 이러한 명령을 사용하는 관련 애플리케이션 프로그램의 성능이 저하되기 때문입니다.

정당성

마이크로코드는 원래 컴퓨터의 제어 로직을 개발하는 더 간단한 방법으로 개발되었습니다.처음에는 CPU 명령 세트가 유선 연결되었습니다.기계 명령(피연산자 주소 계산, 읽기 및 쓰기 포함)을 가져오고, 디코딩하고, 실행하는 데 필요한 각 단계는 조합 로직과 다소 최소한의 순차적 상태 기계 회로에 의해 직접 제어되었습니다.이러한 유선 연결 프로세서는 매우 효율적이지만, 다단계 어드레싱과 복잡한 조작(아래 참조)을 갖춘 강력한 명령 세트가 필요하기 때문에 설계 및 디버깅이 어려웠습니다. 특히 매우 불규칙한 인코딩을 사용하는 경우, 고도로 인코딩된 다양한 길이의 명령도 이에 기여할 수 있습니다.

마이크로코드는 프로세서의 동작과 프로그래밍 모델의 대부분을 전용 회로가 아닌 마이크로 프로그램 루틴을 통해 정의할 수 있도록 함으로써 작업을 단순화했습니다.설계 프로세스 후반에도 마이크로코드는 쉽게 변경할 수 있었지만 유선 연결된 CPU 설계는 변경하기가 매우 번거로웠습니다.따라서 CPU 설계가 크게 쉬워졌습니다.

1940년대부터 1970년대 후반까지 프로그래밍의 대부분은 어셈블리 언어로 이루어졌습니다. 높은 수준의 명령어는 프로그래머의 생산성을 높였습니다. 따라서 마이크로코드의 중요한 장점은 강력한 기계 명령을 정의할 수 있는 상대적 용이성이었습니다.이 기능의 궁극적인 확장은 "Directly Executable High Level Language(직접 실행 가능한 고급 언어)" 설계입니다.이 설계에서는 PL/I와 같은 고급 언어의 각 문장이 컴파일 없이 마이크로코드로 완전히 직접 실행됩니다.IBM Future Systems 프로젝트와 Data General Funenthead Processor가 그 예입니다.1970년대에 CPU 속도는 메모리 속도보다 더 빠르게 증가했으며 이를 완화하기 위해 메모리 블록 전송, 메모리 프리페치멀티 레벨 캐시와 같은 수많은 기술이 사용되었습니다.마이크로코드에 의해 실현된 높은 수준의 기계 명령은 더 적은 메모리 대역폭을 필요로 하는 복잡한 기계 명령이 줄어들기 때문에 더욱 도움이 되었습니다.예를 들어 문자열에 대한 연산을 단일 기계 명령으로 수행할 수 있으므로 여러 명령 페치를 피할 수 있습니다.

복잡한 마이크로 프로그램에 의해 구현된 명령 집합이 있는 아키텍처에는 IBM System/360Digital Equipment Corporation VAX포함됩니다.점점 더 복잡해지는 마이크로코드 구현 명령어 세트의 접근법은 나중에 복잡한 명령어 세트 컴퓨터(CISC)라고 불렸습니다.많은 마이크로프로세서에서 사용되는 대체 접근법은 주로 명령 디코딩을 위해 하나 이상의 프로그래머블 로직 어레이(PLA) 또는 읽기 전용 메모리(ROM)를 사용하고, 대부분의 시퀀싱은 단순한 스테이트 머신(마이크로 코드 없음)에 맡기는 것입니다.MOS Technology 6502는 명령 디코딩 및 시퀀싱에 PLA를 사용하는 마이크로프로세서의 예입니다.PLA는 [9]칩의 현미경 사진에서도 볼 수 있고, 그 동작은 트랜지스터 레벨의 시뮬레이션에서도 볼 수 있습니다.

마이크로프로그래밍은 여전히 현대 CPU 설계에서 사용되고 있습니다.경우에 따라서는 시뮬레이션에서 마이크로코드를 디버깅한 후 제어스토어를 [citation needed]논리함수로 대체한다.논리 함수는 종종 동등한 마이크로 프로그램 메모리보다 빠르고 저렴합니다.

혜택들

프로세서의 마이크로 프로그램은 일반 프로그래머가 볼 수 있는 어셈블리 명령보다 훨씬 더 원시적이고 완전히 다르며 하드웨어 지향적인 아키텍처로 작동합니다.마이크로코드는 하드웨어와 연계하여 프로그래머가 볼 수 있는 아키텍처를 구현합니다.기반이 되는 하드웨어가 가시적인 아키텍처와 고정 관계를 가질 필요는 없습니다.이를 통해 다양한 기반 하드웨어 마이크로아키텍처에 특정 명령어세트 아키텍처를 쉽게 구현할 수 있습니다.

IBM System/360은 16개의 범용 레지스터가 있는 32비트 아키텍처를 가지고 있지만, 대부분의 System/360 구현은 훨씬 더 단순한 기본 마이크로 아키텍처를 구현하는 하드웨어를 사용합니다. 예를 들어 System/360 Model 30은 ALU(산술 로직 유닛) 및 메인 메모리에 대한 8비트 데이터 경로를 갖추고 범용 레지스터를 구현합니다.s는 고속 코어 메모리의 특수 유닛으로, System/360 Model 40은 ALU에 대한 8비트 데이터 경로와 메인 메모리에 대한 16비트 데이터 경로를 가지고 있으며 고속 코어 메모리의 특수 유닛에 범용 레지스터를 구현했습니다.Model 50은 32비트 데이터 경로를 모두 갖추고 있으며 고속 코어 [10]메모리의 특수 장치에 범용 레지스터를 구현합니다.모델 65부터 모델 195까지의 데이터 경로는 더 크고 범용 레지스터는 더 빠른 트랜지스터 [citation needed]회로에 구현됩니다.이러한 방식으로 IBM은 마이크로프로그래밍을 통해 많은 System/360 모델을 실질적으로 다른 하드웨어로 설계할 수 있었고 광범위한 비용과 성능에 걸쳐 설계할 수 있었으며 이러한 모델들은 모두 구조적으로 호환성이 있었습니다.따라서 모델별로 작성해야 하는 고유한 시스템 소프트웨어 프로그램의 수가 대폭 줄어듭니다.

Digital Equipment Corporation(DEC)도 VAX 패밀리 컴퓨터에서도 같은 접근방식을 사용했습니다.따라서 VAX 프로세서마다 사용하는 마이크로 아키텍처는 다르지만 프로그래머가 인식할 수 있는 아키텍처는 변경되지 않습니다.

마이크로프로그래밍은 프로세서의 결함(버그)을 수정하기 위한 필드 변경 비용도 절감합니다.하드웨어 로직과 배선을 변경하는 것이 아니라 마이크로프로그래밍의 일부를 교체하는 것으로 오류를 해결할 수 있습니다.

역사

1947년 MIT Whirlwind의 설계에서는 컴퓨터 설계를 단순화하고 애드혹 방식을 넘어서는 방법으로 제어 저장소의 개념을 도입했습니다.컨트롤 스토어는 다이오드 매트릭스입니다.2차원 격자로, 한쪽 치수는 CPU의 내부 클럭으로부터 「컨트롤 타임 펄스」를 받아들여 다른 한쪽 치수는 게이트나 다른 회로상의 신호를 제어하기 위해서 접속합니다."펄스 디스트리뷰터"는 CPU 클럭에 의해 생성된 펄스를 8개의 개별 타임 펄스로 분할하여 각각 다른 행의 래티스를 활성화합니다.행이 활성화되면 [11]연결된 제어 신호가 활성화됩니다.

다른 말로 표현하면, 컨트롤 스토어에서 전송되는 신호는 연주자의 피아노 롤과 같이 연주된다.즉, 비트로 구성된 매우 넓은 단어의 시퀀스에 의해 제어되고 순차적으로 재생됩니다.그러나 제어 저장소에서는 노래가 짧고 연속적으로 반복됩니다.

1951년, Maurice[12] Wilkes는 컴퓨터 소프트웨어의 조건과 유사한 개념인 조건부 실행을 추가함으로써 이 개념을 강화했습니다.그의 초기 구현은 한 쌍의 매트릭스로 구성되었습니다. 첫 번째 매트릭스는 Whirlwind 제어 저장소 방식으로 신호를 생성했고 두 번째 매트릭스는 다음 사이클에서 호출할 신호 열(마이크로 프로그램 명령어)을 선택했습니다.조건은 제어 저장소의 단일 라인이 두 번째 행렬의 대안 중에서 선택할 수 있는 방법을 제공함으로써 구현되었다.이를 통해 제어 신호는 감지된 내부 신호에 따라 조정되었습니다.Wilkes는 이 기능을 설명하고 단순한 제어 저장소와 구별하기 위해 마이크로프로그래밍이라는 용어를 만들었습니다.

  • EMIDEC 1100[13], 「레이스」라고 불리는 페라이트 코어에 나사산 된 와이어로 구성된 유선형의 컨트롤 스토어를 사용하고 있는 것으로 알려져 있습니다.
  • IBM System/360 시리즈의 대부분의 모델은 마이크로프로그래밍됩니다.
    • 모델 25는 상위 16K바이트의 코어 스토리지를 사용하여 마이크로 프로그램용 제어 스토리지를 보유한다는 점에서 System/360 모델 중 독특합니다.2025는 16비트 마이크로아키텍처와 7개의 제어어(또는 마이크로 명령)를 사용합니다.시스템 유지보수 후 또는 동작 모드를 변경할 때 마이크로코드는 카드 리더, 테이프 또는 기타 [14]장치에서 로드됩니다.이 모델의 IBM 1410 에뮬레이션은 다음과 같이 로드됩니다.
    • Model 30은 소수의 하드웨어 레지스터를 갖춘 8비트 마이크로 아키텍처를 사용합니다.프로그래머가 본 모든 것은 마이크로 프로그램에 의해 에뮬레이트됩니다.이 모델의 마이크로 코드는 "CROS" 장치(Capacitor Read-Only Storage)[15]: 2–5 라고 불리는 카드당 전용 판독기에 기계 내부에 저장되는 특수 천공 카드에도 있습니다.1401/1440/1460[15]: 4–29 에뮬레이션으로 주문된 머신 및 1620 [15]: 4–75 에뮬레이션으로 주문된 머신에 다른 크로스 유닛이 추가되었습니다.
    • Model 40은 56비트 제어 워드를 사용합니다.2040 박스는 시스템/360 메인 프로세서와 멀티플렉스 채널(I/O 프로세서)을 모두 구현합니다.이 모델에서는 CROS 유닛과 유사하지만 유도 픽업(트랜스포머 읽기 전용 스토어)이 있는 TOS 전용 리더를 사용합니다.
    • 모델 50에는 병렬로 작동하는 두 개의 내부 데이터 경로가 있습니다. 산술 연산에 사용되는 32비트 데이터 경로와 일부 논리 연산에 사용되는 8비트 데이터 경로입니다.컨트롤 스토어는 90비트 마이크로 명령을 사용합니다.
    • 모델 85에는 고성능을 제공하기 위해 별도의 명령 가져오기(I-unit)와 실행(E-unit)이 있습니다.I 유닛은 하드웨어로 제어됩니다.E-유닛은 마이크로프로그래밍됩니다.컨트롤 워드는 기본 360/85에서 108비트 폭이며 에뮬레이터 기능이 설치된 경우 폭이 넓습니다.
  • NCR 315는 조건부 실행을 수반하는 시퀀서에 의해 펄스되는 핸드 와이어드 페라이트 코어(ROM)로 마이크로 프로그래밍된다.코어를 통과하는 와이어는 프로세서의 다양한 데이터 및 논리 요소에 사용할 수 있습니다.
  • Digital Equipment Corporation PDP-11 프로세서는 PDP-11/20을 제외하고 마이크로 프로그래밍됩니다.[16]
  • 대부분의 Data General Eclipse 미니컴퓨터는 마이크로프로그래밍되어 있습니다.이클립스 MV/8000의 마이크로코드 작성 작업은 퓰리처상 수상작인 '새로운 기계의 영혼'에 자세히 설명되어 있다.
  • Burroughs의 많은 시스템은 마이크로프로그래밍되어 있습니다.
  • B700 "마이크로프로세서"는 메인 메모리에 저장된 16비트 마이크로 명령 시퀀스를 사용하여 애플리케이션 레벨의 opcode를 실행합니다.이것들은 각각 레지스터 로드 조작이거나 읽기 전용 메모리에 저장된 단일 56비트 "나노코드" 명령에 매핑됩니다.이것에 의해, 비교적 심플한 하드웨어가 메인프레임 주변기기의 컨트롤러로서 동작하거나 독립형 컴퓨터로서 패키징할 수 있습니다.
  • B1700은 비트 주소 지정 가능한 메인 메모리를 포함한 근본적으로 다른 하드웨어로 구현되지만, 유사한 멀티 레이어 구성을 가지고 있습니다.운영체제는 필요한 모든 언어에 대해 인터프리터를 미리 로드합니다.이러한 인터프리터는 COBOL, Fortran 등에 대해 서로 다른 가상 머신을 제공합니다.
  • 사용자가 마이크로코드에 액세스할 수 있는 마이크로데이터 생성 컴퓨터. 이를 통해 사용자 정의 어셈블러 수준 명령을 생성할 수 있습니다.Microdata의 Reality 운영체제 설계에서는 이 기능을 폭넓게 활용하고 있습니다.
  • Xerox Alto 워크스테이션은 마이크로코드 설계를 사용했지만, 많은 컴퓨터와 달리 마이크로코드 엔진은 프로그래머로부터 레이어드 설계로 숨겨져 있지 않습니다.애플리케이션은 이를 활용하여 성능을 가속화합니다.
  • IBM System/38수평수직 마이크로 [17]코드를 모두 가지고 있는 것으로 설명됩니다.실제로 프로세서는 수평 마이크로코드 포맷을 사용하여 내부 마이크로프로그래밍 인터페이스(IMPI)라는 이름의 명령 집합 아키텍처를 구현합니다.이른바 수직 마이크로코드 레이어는 IMPI 명령의 관점에서 시스템/38의 하드웨어에 의존하지 않는 머신 인터페이스 명령 세트를 구현합니다.IBM RS64 프로세서 라인이 지시되기 전에는 초기 IBM AS/400 시스템에서 동일한 [18]아키텍처를 사용했습니다.
  • 콘솔의 그래픽 처리 장치와 오디오 프로세서 역할을 하는 닌텐도 64의 리얼리티 코프로세서(RCP)는 마이크로 코드를 사용합니다. 새로운 효과를 구현하거나 프로세서를 조정하여 원하는 출력을 얻을 수 있습니다.커스텀 RCP 마이크로코드의 주목할 만한 예로는 Factor 5의 Indiana Jones와 Infernal Machine, Star Wars: Rogue Funt, Star Wars: Battle for Naboo,[19][20] Angel Studios의 레지던트 Evil [21]2에서 볼 수 있는 고해상도 그래픽, 파티클 엔진 및 무제한 드로우 거리 재생 등이 있습니다.
  • Sony PlayStation 2의 VU0 및 VU1 벡터 유닛은 마이크로프로그래밍이 가능합니다.실제로 VU1은 SDK의 처음 몇 세대 동안 마이크로코드를 통해서만 액세스할 수 있습니다.
  • MicroCore Labs MCL86, MCL51, MCL65는 인텔 8086/8088, 8051, MOS 6502의 고도로 인코딩된 "수직" 마이크로시퀀서 구현의 예입니다.
  • 디지털 사이언티픽 코퍼레이션Meta 4 Series 16 컴퓨터 시스템은 1970년에 처음 사용 가능한 사용자 마이크로프로그래밍 시스템이었다.마이크로코드는 주로 32비트 마이크로 [22]명령어를 가진 수직 스타일이었다.명령은 교체 가능한 프로그램 보드에 비트 위치 그리드와 함께 저장되었습니다.1비트는 증폭기에 의해 감지된 작은 금속 정사각형으로 표시되며 [23]정사각형의 부재로 인해 0비트가 표시되었습니다.시스템은 최대 4K의 16비트 마이크로스토어로 구성할 수 있습니다.Digital Scientific 제품 중 하나는 IBM [24][25]1130용 에뮬레이터였습니다.
  • MCP-1600은 1970년대 후반부터 1980년대 초반까지 Western Digital에 의해 제조된 마이크로프로세서입니다.Pascal MicroEngine, WD16 및 DEC LSI-11[26]3가지 다른 컴퓨터 아키텍처를 마이크로코드로 구현하기 위해 사용됩니다.
  • 이전의 x86 프로세서는 완전히 마이크로 코딩되어 있습니다.인텔 80486부터는 하드웨어에 직접 명령어가 실장되어 있습니다.x86 프로세서는 인텔 P6 마이크로아키텍처 및 AMD K7 마이크로아키텍처 이후 패치 적용 가능한 마이크로코드(BIOS 또는 운영체제별 패치 적용)를 구현했습니다.
  • 일부 비디오 카드와 무선 네트워크 인터페이스 컨트롤러는 패치 적용 가능한 마이크로 코드를 구현했습니다(운영 체제별 패치 적용).

실행

마이크로 프로그램의 각 마이크로 명령은 CPU를 내부적으로 구성하는 기능 요소를 제어하는 비트를 제공합니다.유선 CPU에 비해 내부 CPU 제어가 컴퓨터 프로그램의 특수한 형태가 된다는 것이 장점입니다.따라서 마이크로코드는 복잡한 전자 설계 과제(CPU 제어)를 덜 복잡한 프로그래밍 과제로 변환합니다.이를 활용하기 위해 CPU는 여러 부분으로 나뉩니다.

  • I유닛은 하드웨어 내의 명령을 디코딩하여 E유닛과 병행하여 명령을 처리하기 위한 마이크로코드 주소를 결정할 수 있다.
  • 마이크로시퀀서는 제어스토어의 다음 단어를 선택한다.시퀀서는 대부분 카운터이지만 일반적으로 일부 데이터(일반적으로 명령 레지스터의 데이터 및 항상 제어 저장소의 일부)에 따라 제어 저장소의 다른 부분으로 점프하는 방법이 있습니다.가장 간단한 시퀀서는 제어 저장소의 몇 비트에서 로드된 레지스터에 불과합니다.
  • 레지스터 세트는 중앙처리장치의 데이터를 포함한 고속 메모리이다.프로그램 카운터스택 포인터를 포함할 수 있으며 애플리케이션 프로그래머가 쉽게 접근할 수 없는 다른 레지스터도 포함할 수 있습니다.대부분의 경우 레지스터 세트는 트리플 포트 레지스터 파일입니다.즉, 2개의 레지스터를 읽고 3개의 레지스터를 동시에 쓸 수 있습니다.
  • 산술논리 유닛은 계산, 보통 덧셈, 논리 부정, 오른쪽 시프트 및 논리 AND를 수행합니다.그것은 종종 다른 기능도 수행합니다.

메인 컴퓨터 스토리지에 액세스하기 위해 사용되는 메모리 주소 레지스터와 메모리 데이터 레지스터도 있을 수 있습니다.이러한 요소들이 함께 "실행 단위"를 형성합니다.대부분의 최신 CPU에는 여러 개의 실행 장치가 있습니다.간단한 컴퓨터도 보통 메모리를 읽고 쓰는 유닛과 사용자 코드를 실행하는 유닛이 있습니다.이러한 요소들은 종종 하나의 칩으로 통합될 수 있습니다.이 칩은 실행 유닛을 통해 "슬라이스"를 형성할 수 있는 고정된 폭으로 제공됩니다.이것들은 「비트 슬라이스」칩이라고 불립니다.AMD Am2900 패밀리는 비트 슬라이스 요소의 가장 잘 알려진 예 중 하나입니다.실행 유닛의 일부와 실행 유닛 전체가 버스라고 불리는 와이어 다발로 상호 연결됩니다.

프로그래머는 기본적인 소프트웨어 도구를 사용하여 마이크로 프로그램을 개발합니다.마이크로 어셈블러는 프로그래머가 비트 테이블을 심볼적으로 정의할 수 있도록 합니다."마이크로코드는 기본 아키텍처와의 밀접한 관계 때문에 [2]컴파일러를 사용하여 생성하기 어려운 몇 가지 속성을 가지고 있습니다."시뮬레이터 프로그램은 전자제품과 동일한 방식으로 비트를 실행하도록 의도되어 있으며 마이크로 프로그램을 훨씬 자유롭게 디버깅할 수 있습니다.마이크로프로그램이 완성되고 광범위하게 테스트된 후, [citation needed]동일한 데이터를 생성하기 위한 논리를 구성하는 컴퓨터 프로그램의 입력으로 사용될 수 있습니다.이 프로그램은 프로그램 가능한 논리 배열을 최적화하는 데 사용되는 프로그램과 유사합니다.완전 최적 로직이 없어도 휴리스틱하게 최적화된 로직은 읽기 전용 메모리(ROM) 제어 저장에 필요한 수에서 트랜지스터의 수를 대폭 줄일 수 있다.이것에 의해, CPU의 생산 코스트와 소비 전력을 삭감할 수 있습니다.

마이크로코드는 수평 또는 수직으로 특징지을 수 있습니다.이는 주로 각 마이크로명령어가 디코딩을 거의 하지 않거나(수평 마이크로코드)[a] CPU 요소를 제어하기 전에 조합 논리에 의한 광범위한 디코딩을 필요로 하는지를 나타냅니다(수직 마이크로코드).따라서 각 수평 마이크로 명령은 수직 마이크로 명령보다 더 넓고(더 많은 비트를 포함), 더 많은 기억 공간을 차지한다.

수평 마이크로코드

"수평 마이크로코드에는 여러 개의 분리된 마이크로 오퍼레이션이 있으며, 이 마이크로 오퍼레이션은 하나의 마이크로 명령으로 결합되어 동시에 작동합니다."[2]수평 마이크로코드는 일반적으로 상당히 넓은 제어 저장소에 포함되어 있습니다. 각 워드가 108비트 이상인 경우는 드물지 않습니다.시퀀서 클럭의 각 틱에서 마이크로코드 워드를 읽고 디코딩하여 CPU를 구성하는 기능 요소를 제어하기 위해 사용합니다.

일반적인 구현에서 수평 마이크로 프로그램 워드는 상당히 엄격하게 정의된 비트 그룹으로 구성됩니다.예를 들어 다음과 같은 간단한 배열이 있습니다.

소스 A를 등록합니다. 소스 B를 등록하다 수신처 레지스터 산술논리 장치 작동 점프의 종류 점프 어드레스

이런 유형의 마이크로머신이 opcode 뒤에 주소가 있는 JUMP 명령을 구현하려면 마이크로코드에 2개의 클럭틱이 필요할 수 있습니다.이를 설계하는 엔지니어는 다음과 같이 마이크로어셈블러 소스코드를 작성합니다.

# 숫자 기호로 시작하는 행은 모두 코멘트 # 이것은 라벨일 뿐입니다.일반적인 방법으로 어셈블러는 # 메모리 주소를 상징적으로 나타냅니다.설명점프: # 다음 명령을 준비하기 위해 명령 디코딩 마이크로코드는 이미 # 프로그램 카운터를 메모리 주소 레지스터로 이동시켰습니다.이 명령은 메모리 데이터 레지스터에서 메모리 주소 레지스터로 복사하여 # 점프 연산 코드 뒤에 있는 메모리 워드에서 # 점프 명령의 목표 주소를 가져옵니다.# 그러면 메모리 시스템에 명령 디코딩에서 사용할 다음 # 명령을 메모리 데이터 레지스터로 가져올 수 있는 두 개의 클럭 틱이 제공됩니다.# 시퀀서 명령 "next"는 제어 워드 주소에 1을 추가하는 것을 의미합니다.MDR, NONE, MAR, COPY, NEXT, NONE # 이것은 다음 명령의 주소를 PC에 저장합니다.# 이것은 메모리 시스템에 클럭 틱을 주고 # 이전 마이크로 명령에서 시작된 페치를 완료합니다.# 시퀀서 명령은 명령 디코딩의 시작으로 이동합니다.MAR, 1, PC, ADD, JMP, InstructionDecode # 명령 디코드는 일반적으로 에뮬레이트되는 정확한 프로세서에 매우 특별한 #이기 때문에 표시되지 않습니다.이 예도 단순화되어 있습니다.# 많은 CPU는 op-code 뒤에 있는 단어에서 #를 가져오는 것이 아니라 여러 가지 방법으로 주소를 계산할 수 있습니다.따라서 이러한 CPU에는 하나의 #점프 명령이 아니라 관련된 점프 명령 패밀리가 있습니다. 

각 틱에 대해 CPU의 일부만 사용되며 마이크로 명령의 나머지 비트 그룹은 no-ops입니다.하드웨어와 마이크로코드를 신중하게 설계하면 이 속성을 이용하여 CPU의 다른 영역을 사용하는 연산을 병렬화할 수 있습니다.예를 들어 위의 경우 첫 번째 틱에서는 ALU가 필요하지 않기 때문에 ALU를 사용하여 이전 연산 명령을 완료할 수 있습니다.

수직 마이크로코드

수직 마이크로코드에서는 각 마이크로명령어가 유의하게 부호화되어 있습니다.즉, 비트필드는 일반적으로 중간 조합 로직을 통과하고, 이 로직은 내부 CPU 요소(ALU, 레지스터 등)에 대한 제어 및 시퀀스 신호를 생성합니다.이는 비트 필드가 제어 및 시퀀스 신호를 직접 생성하거나 최소한의 부호화만 하는 수평 마이크로 코드와는 대조적입니다.따라서 수직 마이크로코드는 명령 길이를 줄이고 저장 공간을 줄여야 하지만 디코딩에 더 많은 시간이 필요하기 때문에 CPU [27]클럭이 느려집니다.

일부 수직 마이크로코드는 더 복잡한 컴퓨터를 에뮬레이트하는 단순한 기존 컴퓨터의 어셈블리 언어일 뿐입니다.DEC Alpha 프로세서와 이후 IBM 메인프레임 System/390 및 z/Architecture의 CMOS 마이크로프로세서와 같은 일부 프로세서는 기계 코드를 사용하여 일반 기계 코드에서 사용할 수 없는 특수 명령, 특수 레지스터 및 기타 하드웨어 리소스에 액세스할 수 있는 특수 모드로 실행됩니다.예를 들어 Alpha [30]프로세서의 페이지 테이블 워크 [28][29]등입니다.이를 Alpha 프로세서에서는 PAL코드, IBM 메인프레임 프로세서에서는 밀리코드라고 합니다.

수직 마이크로코드의 다른 형태에는 두 개의 필드가 있습니다.

필드 선택 필드 값

필드 선택에서는 제어 저장소의 이 워드에 의해 제어되는 CPU 부분을 선택합니다.필드 값은 CPU의 해당 부분을 제어합니다.이런 종류의 마이크로코드를 사용하면 설계자는 컨트롤 스토어에서 사용되지 않는 비트를 줄임으로써 비용을 절감하기 위해 CPU를 느리게 만들도록 명시적으로 선택합니다.단, 복잡성이 감소하면 CPU의 클럭 주파수가 증가하여 명령당 사이클 수가 증가했을 때의 영향이 줄어들 수 있습니다.

트랜지스터가 점점 더 저렴해지면서 수평 마이크로코드가 마이크로코드를 사용하는 CPU 설계를 지배하게 되었고 수직 마이크로코드는 덜 자주 사용되었습니다.

수직 마이크로코드 및 수평 마이크로코드를 모두 사용할 경우 수평 마이크로코드를 나노코드 [31]또는 피코코드라고 할 수 있습니다.

쓰기 가능한 제어 저장소

몇몇 컴퓨터들은 쓰기 가능한 마이크로코드를 사용하여 만들어졌다.이 설계에서는 마이크로코드를 ROM 또는 유선 로직으로 저장하는 것이 아니라 쓰기 가능한 컨트롤 스토어(WCS)라고 불리는 RAM에 저장합니다.이러한 시스템을 WISC([32]Writable Instruction Set System)라고 부르기도 합니다.

많은 실험적인 원형 컴퓨터;버로스 중소 시스템 같은 쓰기 가능한 마이크로 코드를 사용한다 상업적 기계, 초기 제록스 워크 스테이션, DEC백스의 8800(노틸러스)그 가족, Symbolics L-과 G-machines, IBM시스템/360과 System/370 구현, 몇몇 DECPDP-10의 많은 machines,는 경우에는 33은 기록 가능 제어 상점을 사용한다.]d Data General Eclipse MV/8000.[34]

HP 2100, DEC PDP-11/60Varian Data Machines V-70 시리즈 미니컴퓨터포함하여 사용자가 프로그래밍할 수 있는 쓰기 가능한 제어 저장소를 옵션으로 제공하는 머신이 많습니다.IBM System/370에는 콘솔, POR(Power-on Reset)의 일부 또는 긴밀하게 연결멀티프로세서 복합체의 다른 프로세서에서 호출할 수 있는 초기-마이크로프로그램 로드(IML 또는 [35]INCT)라는 기능이 포함되어 있습니다.

IBM 360/[36][37]85와 같은 일부 상용 컴퓨터에는 마이크로코드용 읽기 전용 스토리지와 쓰기 가능한 제어 저장소가 있습니다.

WCS는 마이크로 프로그램의 패치 적용이 용이하고 특정 하드웨어 세대의 경우 ROM보다 빠른 액세스 속도 등 몇 가지 이점을 제공합니다.사용자가 프로그래밍할 수 있는 WCS를 통해 사용자는 특정 목적에 맞게 기계를 최적화할 수 있습니다.

1995년 Pentium Pro 이후 일부 x86 CPU에는 쓰기 가능한 인텔 마이크로코드가 [38][39]탑재되어 있습니다.예를 들어 인텔 Core 2 및 인텔 Xeon 마이크로코드의 오류를 수정하기 위해서는 칩 전체를 교체할 필요가 없습니다. 번째 중요한 예는 인텔이 2018년 [40][41]초에 공개된 설계에서 발견된 보안 취약성에 대응하기 위해 최대 10년 전의 프로세서 아키텍처에 대해 제공한 마이크로코드 패치 세트입니다.마이크로코드 업데이트는 Linux,[42] FreeBSD,[43] Microsoft Windows [44]또는 메인보드 [45]BIOS에서 설치할 수 있습니다.

VLIW 및 RISC와의 비교

복잡한 명령어를 가진 마이크로코드 프로세서의 설계 경향은 1960년대 초에 시작되어 대략 1980년대 중반까지 지속되었습니다. 시점에서 RISC 설계 철학은 더욱 두드러지기 시작했습니다.

마이크로코드를 사용하는 CPU는 일반적으로 하나의 명령을 실행하는 데 여러 클럭 사이클이 소요되며, 이 명령의 마이크로프로그램의 각 단계마다 1개의 클럭 사이클이 소요됩니다.일부 CISC 프로세서에는 실행에 매우 오랜 시간이 걸릴 수 있는 명령이 포함되어 있습니다.이러한 변화는 인터럽트 레이텐시와 현대 시스템에서 훨씬 더 중요한 파이프라이닝을 모두 방해합니다.

새로운 프로세서를 설계할 때 유선 제어 RISC는 마이크로코드화된 CISC에 비해 다음과 같은 이점이 있습니다.

  • 프로그래밍은 어셈블리 수준에서 크게 멀어졌기 때문에 생산성을 위해 복잡한 명령을 제공하는 것은 더 이상 의미가 없습니다.
  • 간단한 명령어 세트를 사용하면 하드웨어에서 직접 실행할 수 있으므로 마이크로코드 실행으로 인한 성능 저하를 피할 수 있습니다.
  • 분석 결과, 복잡한 명령어는 거의 사용되지 않기 때문에 이에 할애되는 기계자원이 크게 낭비되는 것으로 나타났습니다.
  • 거의 사용되지 않는 복잡한 명령어에 전념하는 기계 자원은 더 단순하고 일반적으로 사용되는 명령어의 성능을 가속화하기 위해 더 잘 사용됩니다.
  • 복잡한 마이크로코드 명령에서는 다양한 클럭 사이클이 필요할 수 있으며 성능 향상을 위해 파이프라인이 어렵습니다.

대조점도 있습니다.

  • 고도로 마이크로코딩된 구현의 복잡한 명령에는 마이크로코드 공간을 제외하고 추가 기계 리소스가 많이 필요하지 않을 수 있습니다.예를 들어, 동일한 ALU는 유효 주소를 계산하고 오퍼랜드(예를 들어 원래 Z80, 8086 등)의 결과를 계산하기 위해 종종 사용됩니다.
  • RISC 이외의 명령(즉, 직접 메모리 오퍼랜드 포함)은 최신 컴파일러에 의해 자주 사용됩니다.스택(즉, 메모리 결과)의 바로 앞에서도 일반적으로 산술 연산이 사용됩니다.이러한 메모리 조작은, 길이 인코딩이 다른 경우가 많지만, 파이프라인이 되는 것은 매우 어렵지만, i486, AMD K5, Cyrix 6x86, Motorola 68040 등에서도 충분히 실현 가능합니다.
  • 비 RISC 명령은 기본적으로 명령당 더 많은 작업을 수행하며(평균) 일반적으로 고도로 인코딩되므로 동일한 프로그램의 전체 크기를 줄일 수 있으므로 제한된 캐시 메모리를 더 효율적으로 사용할 수 있습니다.

많은 RISC 및 VLIW 프로세서는 (캐시에 있는 한) 모든 명령을 1사이클로 실행하도록 설계되어 있습니다.이는 마이크로코드를 사용하는 CPU가 사이클당 1개의 마이크로 명령을 실행하는 방식과 매우 유사합니다.VLIW 프로세서는 매우 넓은 수평 마이크로코드와 동일하게 동작하는 명령을 가지고 있습니다.다만, 일반적으로 마이크로코드에 의해서 제공되는 하드웨어에 대한 세밀한 제어는 이루어지지 않습니다.RISC 명령어는 좁은 수직 마이크로코드와 비슷할 수 있습니다.

마이크로코드는 네트워크 프로세서, 마이크로 컨트롤러, 디지털 신호 프로세서, 채널 컨트롤러, 디스크 컨트롤러, 네트워크 인터페이스 컨트롤러, 그래픽 처리 장치 및 기타 하드웨어와 같은 애플리케이션 고유의 프로세서에서 널리 사용되고 있습니다.

마이크로 오퍼레이션

x86 패밀리와 같은 현대의 CISC 실장에서는, RISC 또는 종래의 마이크로 코드와 같은 명령 부호화를 사용해 동적으로 버퍼링 된 마이크로 오퍼레이션("μops")으로 명령어를 디코딩합니다.유선 연결된 명령 디코딩 유닛은 일반적인 x86 명령에서는 직접 μops를 방출하지만, 보다 복잡하거나 거의 사용되지 않는 [3]명령에서는 μops를 포함하는 보다 전통적인 마이크로코드 ROM으로 돌아갑니다.

예를 들어 x86은 마이크로코드에서 μops를 검색하여 루프 명령이나 문자열 명령, 부동소수점 단위 초월함수 또는 데노멀 번호 등의 비정상적인 값 및 CPUID 등의 특수 목적 명령을 처리할 수 있습니다.

「 」를 참조해 주세요.

메모들

  1. ^ IBM 수평 마이크로코드 프로세서에는 디코딩이 필요한 여러 마이크로오더 및 레지스터 선택 필드가 있었습니다.

레퍼런스

  1. ^ "XuCode: An Innovative Technology for Implementing Complex Instruction..." Intel. Retrieved 2022-07-19.
  2. ^ a b c Kent, Allen; Williams, James G. (April 5, 1993). Encyclopedia of Computer Science and Technology: Volume 28 - Supplement 13. New York: Marcel Dekker, Inc. ISBN 0-8247-2281-7. Archived from the original on November 20, 2016. Retrieved Jan 17, 2016.
  3. ^ a b Fog, Agner (2017-05-02). The microarchitecture of Intel, AMD and VIA CPUs (PDF) (Report). Technical University of Denmark. Archived (PDF) from the original on 2017-03-28. Retrieved 2018-04-08.
  4. ^ "IBM pSeries Servers - Microcode Update for Ultrastar 73LZX (US73) 18/36 GB". IBM.com. Archived from the original on April 19, 2019. Retrieved January 22, 2015.
  5. ^ VAX 9000 System Technical Description (PDF). Digital Equipment Corporation. May 1990. pp. 3-5–3-32. EK-KA90S-TD-001.
  6. ^ VAX 8800 System Technical Description Volume 2 (PDF). Digital Equipment Corporation. July 1986. EK-KA882-TD-PRE.
  7. ^ Manning, B.M.; Mitby, J.S; Nicholson, J.O. (November 1979). "Microprogrammed Processor Having PLA Control Store". IBM Technical Disclosure Bulletin. 22 (6). Archived from the original on 2012-10-01. Retrieved 2011-07-10.
  8. ^ CPU에서의 사용 상황에서의 ROM/PLA 컨트롤 스토어를 나타내는 경우가 많다.
  9. ^ "6502 Images". Archived from the original on March 4, 2016. Retrieved January 22, 2015.
  10. ^ IBM System/360 Model 50 Functional Characteristics (PDF). IBM. 1967. p. 7. A22-6898-1. Retrieved October 29, 2021.
  11. ^ Everett, R.R.; Swain, F.E. (1947). "Whirlwind I Computer Block Diagrams" (PDF). Report R-127. MIT Servomechanisms Laboratory. Archived from the original (PDF) on June 17, 2012. Retrieved June 21, 2006. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  12. ^ Wilkes, Maurice (1951). The Best Way to Design an Automatic Calculating Machine (Technical report). University of Manchester.
  13. ^ "EMIDEC 1100 computer". Emidec.org.uk. Archived from the original on June 12, 2010. Retrieved April 26, 2010.
  14. ^ IBM System/360 Model 25 Functional Characteristics (PDF). IBM. January 1968. p. 22. A24-3510-0. Retrieved October 29, 2021.
  15. ^ a b c Field Engineering Theory of Operation, 2030 Processing Unit, System/360 Model 30 (PDF) (First ed.). IBM. June 1967. Y24-3360-1. Archived (PDF) from the original on 2020-04-01. Retrieved 2019-11-09.
  16. ^ Edward A. Snow; Daniel P. Siewiorek (1982). "Implementation and Performance Evaluation of the PDP-11 Family". In Daniel P. Siewiorek; C. Gordon Bell; Allen Newell (eds.). Computer Structures: Principles and Examples. New York, NY: McGraw-Hill Book Company. p. 671. ISBN 0-07-057302-6.
  17. ^ Soltis, Frank (September 1981). "Design of a Small Business Data Processing System". IEEE Computer. 14: 77–93. doi:10.1109/C-M.1981.220610. S2CID 398484.
  18. ^ Frank G. Soltis (1997). Inside the AS/400, Second Edition. Duke Press. ISBN 978-1882419661.
  19. ^ "Interview: Battling the N64 (Naboo)". IGN64. November 10, 2000. Archived from the original on September 13, 2007. Retrieved March 27, 2008.
  20. ^ "Indiana Jones and the Infernal Machine". IGN. December 12, 2000. Archived from the original on September 27, 2013. Retrieved September 24, 2013.
  21. ^ Meynink, Todd (July 28, 2000). "Postmortem: Angel Studios' Resident Evil 2 (N64 Version)". Gamasutra. United Business Media LLC. Archived from the original on October 21, 2012. Retrieved October 18, 2010.
  22. ^ Digital Scientific Meta 4 Series 16 Computer System Reference Manual (PDF). Digital Scientific Corporation. May 1971. 7032MO. Archived (PDF) from the original on 2020-01-14. Retrieved 2020-01-14.
  23. ^ Digital Scientific Meta 4 Computer System Read-Only Memory (ROM) Reference Manual (PDF). Digital Scientific Corporation. March 1970. 7024MO. Archived (PDF) from the original on 2019-09-23. Retrieved 2020-01-14.
  24. ^ The Digital Scientific Meta 4 Series 16 Computer System Preliminary System Manual (PDF). Digital Scientific Corporation. June 1970. 7006MO. Archived (PDF) from the original on 2019-09-23. Retrieved 2020-01-14.
  25. ^ Digital Scientific Meta 4 Computer System Typical ROM Pattern Listing and Program To Simulate The IBM 1130 Instruction Set (PDF). Digital Scientific Corporation. January 1970. M4/005P-170. Archived (PDF) from the original on 2020-03-24. Retrieved 2020-01-14.
  26. ^ "Western Digital 1600". AntiqueTech. Archived from the original on 3 January 2017. Retrieved 5 January 2017.
  27. ^ Neal Harman; Andy Gimblett (2009-10-12). "CS-323: High Performance Microprocessors – Chapter 1. Microprogramming". mat.uson.mx. Archived from the original on 2015-04-19. Retrieved 2015-08-08.
  28. ^ Vaupel, Robert (2013). High Availability and Scalability of Mainframe Environments using System z and z/OS as example. p. 26. ISBN 978-3-7315-0022-3.
  29. ^ Rogers, Bob (September–October 2012). "The What and Why of zEnterprise Millicode". IBM Systems Magazine. Archived from the original on 2013-10-16. Retrieved 2013-11-07.
  30. ^ "PALcode for Alpha Microprocessors System Design Guide" (PDF). Digital Equipment Corporation. May 1996. Archived (PDF) from the original on August 15, 2011. Retrieved November 7, 2013.
  31. ^ Spruth, Wilhelm (December 2012). The Design of a Microprocessor. Springer Science & Business Media. p. 31. ISBN 978-3-642-74916-2. Archived from the original on November 20, 2016. Retrieved Jan 18, 2015.
  32. ^ Koopman, Philip Jr. (1987). "Writable instruction set, stack oriented computers: The WISC Concept" (PDF). The Journal of Forth Application and Research: 49–71. Archived (PDF) from the original on 2008-05-11.
  33. ^ Smith, Eric (3 September 2002). "Re: What was the size of Microcode in various machines". Newsgroup: alt.folklore.computers. Usenet: qhn0qyveyu.fsf@ruckus.brouhaha.com. Archived from the original on 26 January 2009. Retrieved 18 December 2008.
  34. ^ Smotherman, Mark. "CPSC 330: The Soul of a New Machine". Archived from the original on 2011-06-05. Retrieved 2011-07-10. 4096 x 75-bit SRAM writeable control store: 74-bit microinstruction with 1 parity bit (18 fields)
  35. ^ IBM System/370 Principles of Operation (PDF). Fourth Edition. IBM. September 1974. pp. 98, 245. GA22-7000-4. Archived (PDF) from the original on 2012-02-29. Retrieved 2012-08-27.
  36. ^ IBM System/360 Model 85 Functional Characteristics (PDF). SECOND EDITION. IBM. June 1968. A22-6916-1. Retrieved October 29, 2021.
  37. ^ IBM System/360 Special Feature Description 709/7090/7094 Compatibility Feature for IBM System/360 Model 85. First Edition. IBM. March 1969. GA27-2733-0.
  38. ^ Stiller, Andreas; Paul, Matthias R. (1996-05-12). "Prozessorgeflüster". c't – magazin für computertechnik. Trends & News (in German). Heise Verlag. Archived from the original on 2017-08-28. Retrieved 2017-08-28.
  39. ^ "9.11: Microcode update facilities". Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1 (PDF). Intel. September 2016.
  40. ^ 인텔, 모든 최신 CPU 패치 적용, 2018년 3월 15일 Paul Alcorn의 제8세대하드웨어 수정 약속
  41. ^ "Download Linux* Processor Microcode Data File". Archived from the original on 2018-03-19. Retrieved 2018-03-21.
  42. ^ "Intel Microcode Update Utility for Linux". Archived from the original on 2012-02-26.
  43. ^ "[ports] Index of /head/sysutils/cpupdate". Freebsd.org. Archived from the original on 2020-04-01. Retrieved 2020-01-16.
  44. ^ "A microcode reliability update is available that improves the reliability of systems that use Intel processors". Archived from the original on 2008-02-23. Retrieved 2008-02-25.
  45. ^ "Server Products - BIOS Update required when Missing Microcode message is seen during POST". Intel. January 24, 2013. Archived from the original on September 1, 2014.

추가 정보

외부 링크