인텔 마이크로코드

Intel Microcode

인텔 마이크로코드인텔이 만든 x86 프로세서 안에서 구동되는 마이크로코드다.1990년대 중반 P6 마이크로아키텍처가 도입된 이후 마이크로코드 프로그램은 운영체제나 BIOS 펌웨어로 패치 적용이 가능해 출시 후 CPU에서 발견된 버그에 대해 작업할 수 있다.[1]인텔은 원래 DFT(테스트용) 이니셔티브에 따라 프로세서 디버깅을 위한 마이크로코드 업데이트를 설계했었다.[2]

펜티엄 FDIV 버그에 이어 패치가 가능한 마이크로코드 기능이 제품 리콜을 하지 않고도 현장 업데이트를 할 수 있도록 더 넓은 목적을 달성했다.[1]

P6 이상 마이크로아키텍처에서는 x86 지시사항이 특정 프로세서와 스텝 레벨에 특정한 단순한 RISC 방식의 마이크로 오퍼레이션으로 내부적으로 변환된다.[1]

마이크로 오퍼레이션

Intel 80486과 AMD Am486에는 마이크로코드의 약 250개 라인이 있으며, 총 12,032비트가 마이크로코드 ROM에 저장되어 있다.[3]

펜티엄 프로에서는 각각의 마이크로 오퍼레이션이 72비트,[4]: 43 즉 118비트 폭이다.[5]: 2 [6]: 14 여기에는 32비트 즉시 값을 보유할 수 있는 기능이 있는 [7]: 7 opcode, 2개의 소스 필드 및 1개의 목적지 필드가 포함된다.[5][6]: 14 펜티엄 프로는 내부 마이크로코드에서 패리티 오류를 감지하고 머신 체크 아키텍처를 통해 이를 보고할 수 있다.[8]

마이크로 오퍼레이션은 최대 3개의 소스 입력과 2개의 대상 출력으로 일관된 형식을 가진다.[9]프로세서는 레지스터 이름 변경을 수행하여 실행 전후에 실제 레지스터 파일(RRF)과 이러한 입력을 매핑한다.[9]순서가 맞지 않는 실행이 사용되므로, 그들이 나타내는 마이크로 조작과 지시사항은 같은 순서로 나타나지 않을 수 있다.

펜티엄 프로의 개발 동안, A2와 B0 스테핑 사이에 몇 가지 마이크로코드 수정 사항이 포함되었다.[10]펜티엄 II(P6 펜티엄 Pro 기반)의 경우, MMX 명령어 세트를 지원하기 위해 추가 마이크로 조작이 추가되었다.[11]희귀한 코너 케이스를 안정적으로 처리하기 위해 '마이크로코드 어시스트'를 추가한 경우도 있다.[11]

펜티엄 4호는 126개의 마이크로 조작을 동시에 비행할 수 있다.[12]: 10 마이크로 오퍼레이션은 동일한 x86 명령의 반복적인 디코딩을 방지하기 위해 12,000개의 항목과 함께 디코딩되어 실행 추적 캐시에 저장된다.[12]: 5 6개의 미세조영술로 이루어진 그룹들이 추적선으로 꽉 들어차 있다.[12]: 5 마이크로 오퍼레이션은 동일한 캐시 라인 내에서 추가 즉각적인 데이터 공간을 빌릴 수 있다.[13]: 49 예외 취급과 같은 복잡한 지시사항은 마이크로코드 ROM으로 이동하게 된다.[12]: 6 펜티엄 4 개발 중 마이크로코드는 프로세서 버그 중 14%를 차지했고, 펜티엄 프로 개발 중 프로세서 버그는 30%를 차지했다.[14]: 35

2006년에 도입된 인텔 코어 마이크로아키텍처에는 비교에 이어 점프를 포함한 몇 가지 일반적인 지시 쌍에 대해 "마이크로 오퍼레이션 퓨전"을 추가했다.[15]코어의 명령 해독기는 x86 명령을 마이크로코드로 세 가지 다른 방식으로 변환한다.

x86 명령어를 코어의[15] 마이크로 오퍼레이션으로 변환
x86 지시사항 x86 디코더 극소량의
통상의 심플 디코더 × 3 1–3
다른 대부분의 사람들 복합 디코더 × 1 ≤4
매우 복잡한 마이크로코드 시퀀서 많은

인텔의 동시 멀티스레딩하이퍼스레딩 구현을 위해 마이크로코드 ROM, 트레이스 캐시, 명령 디코더는 공유되지만 마이크로 오퍼레이션 대기열은 공유되지 않는다.[16]

업데이트 설비

1990년대 중반, 새로운 마이크로코드를 공급하기 위한 시설은 처음에는 펜티엄 프로 BIOS 업데이트 기능으로 언급되었다.[17][18]사용자 모드 애플리케이션이 새로운 "BIOS 업데이트 데이터 블록"을 공급하기 위해 BIOS 인터럽트 호출을 해야 하는데, 이 "BIOS 업데이트 데이터 블록"은 BIOS가 부분적으로 검증하고 비휘발성 BIOS 메모리에 저장하며, 이는 다음 부팅 시 설치된 프로세서에 공급될 수 있다.[17]

인텔은 '라는 프로그램을 배포했다.BUP_UTIL.EXE, 이름 변경됨CHECKUP3.EXEDOS로 실행될 수 있는.여러 마이크로코드 업데이트 컬렉션이 함께 연결되고 확장자와 함께 숫자로 번호가 매겨졌다..PDB예를 들어PEP6.PDB.[19]: 79

프로세서 인터페이스

프로세서는 프로세서 내부에 보관되어 내부 ROM에 저장되는 마이크로코드 집합을 사용하여 부팅된다.[1] 마이크로코드 업데이트는 SRAM의 업데이트된 목록으로 점프할 수 있도록 마이크로코드 ROM 내에서 중단점 역할을 하는 별도의 SRAM과 "매치 레지스터" 집합을 채운다.[1]마이크로코드 명령 포인터(UIP)가 모든 매치 레지스터 간에 매치가 수행되며, 매치가 발생하면 해당 목적지 마이크로코드 주소로 점프한다.[2]: 3 원래의 P6 아키텍처에서는 60개의 마이크로 오퍼레이션을 위한 SRAM과 여러 개의 일치/대상 레지스터 쌍을 위한 공간이 있다.[1][2]: 3 ROM 마이크로코드로부터 SRAM에 패치가 적용된 마이크로코드로 점프하는 데는 하나의 프로세서 명령 주기가 필요하다.[1]매치 레지스터는 마이크로코드 일치 주소와 마이크로코드 목적지 주소로 구성된다.[20]

마이크로코드 업데이트를 시작하려면 프로세서가 보호 링 0("링 0")에 있어야 한다.[20]: 1 대칭 다중 처리 방식의 각 CPU는 개별적으로 업데이트해야 한다.[20]: 1

주소를 다음 위치에 지정하여 시작됨eax등록, 설정ecx = 0x79, 및 실행wrmsr(모델별 레지스터 작성).[21]: 435

마이크로코드 업데이트 형식

인텔은 마이크로코드 업데이트를 2,048(2킬로바이트) 바이너리 블럽으로 배포한다.[1]업데이트는 CPUID 명령의 결과와 대조하여 확인할 수 있도록 설계한 프로세서에 대한 정보를 포함한다.[1]구조는 48바이트 헤더로, 그 다음에 업데이트할 프로세서에 의해 직접 읽도록 의도된 2,000바이트가 뒤따른다.[1]

  1. 마이크로코드 업데이트 프로세스 중에 프로세서에 의해 실행되는 마이크로코드 프로그램.[1]이 마이크로코드는 특수 레지스터를 사용하여 구성요소를 재구성하고 활성화 또는 비활성화할 수 있으며, 중단점 일치 레지스터를 업데이트해야 한다.[1]
  2. 최대 60개의 패치형 마이크로 오퍼레이션이 SRAM에 채워진다.[1]
  3. 마이크로코드 업데이트 형식에 대한 이해를 난독하게 하기 위해 임의의 값으로 구성된 패딩.[1]

각 블록마다 인코딩이 다르게 되어 있으며, 2,000바이트의 대다수는 구성 프로그램으로 사용되지 않고 SRAM 마이크로 오퍼레이션 내용 자체도 훨씬 작다.[1]업데이트를 프로세서를 통한 암호 해독 중에 프로세서에 적용할 수 있는지 여부에 대한 최종 결정 및 검증.[17]각각의 마이크로코드 업데이트는 특정 CPU 개정판에만 한정되며, 다른 스텝 레벨을 가진 CPU에 의해 거부되도록 설계되었다.마이크로코드 업데이트는 변조를 방지하고 유효성 검사를 활성화하기 위해 암호화된다.[22]

펜티엄을 사용하면 두 개의 암호화 계층과 인텔이 명시적으로 문서화하지 않은 정확한 세부 정보가 존재하며, 그 대신 10명 미만의 직원에게만 알려져 있다.[23]

Intel Atom, NehalemSandy Bridge에 대한 마이크로코드 업데이트에는 추가로 소수점 17의 지수를 가진 2048비트 RSA 계수가 포함된 520바이트 헤더가 추가적으로 포함되어 있다.[20]: 7, 8

발견된 Intel 마이크로코드 데이터 블록 길이(바이트)[20]: 16
마이크로 아키텍처 예제 프로세서 공급길이 기능 길이 의심스러운 인코딩
P6 펜티엄 프로 2000 864; 872; 944; 1968 64비트 블록 암호
코어 PIII … 코어 2 4048 3096
넷버스트 P4, 펜티엄 D, 셀러론 2000–7120 2000 + N*1024 체인블록암호
아톰, 네할렘, 샌디 브리지 코어 i3/i5/i7 976–16336 976 + N*1024; 5120 AES + RSA 시그니처

디버깅

특수 디버깅별 마이크로코드를 로드하여 확장 실행 추적을 활성화한 다음 브레이크포인트 모니터 핀을 통해 추가 정보를 출력할 수 있다.[24]펜티엄 4에서 특수 마이크로코드를 로드하면 마이크로코드 확장 실행 추적 모드에 접근할 수 있다.[24]JTAG Test Access Port(TAP)를 사용할 때, 한 쌍의 브레이크포인트 제어 레지스터가 마이크로코드 주소를 해독하는 것을 허용한다.[24]

1980년대 중반 NEC와 인텔은 마이크로코드 저작권에 관한 미국 연방법원의 오랜 소송이 있었다.[25]NEC는 NEC μPD8086과 함께 인텔 8086 CPU의 제2의 출처 역할을 해 왔으며, 인텔과 장기 특허 및 저작권 교차 라이선스 계약을 체결했다.1982년 8월 인텔은 마이크로코드 구현에 대한 저작권 침해로 NEC를 고소했다.[26][27]NEC는 청정실 소프트웨어 엔지니어링을 통해 V20과 V30 프로세서의 마이크로코드 구현에서 유사성이 복사가 아닌 아키텍처가 요구하는 제한사항의 결과라는 것을 입증함으로써 우위를 점했다.[25]

인텔 386은 마이크로코드 및 프로그램 가능한 로직 어레이내장형 자가 테스트를 수행할 수 있으며, 이 경우,EAX등록하다[28]BIST 동안 마이크로그램 카운터는 모든 ROM을 거닐기 위해 재사용되며, 결과는 다중 입력 시그니처 레지스터(MISR)와 선형 피드백 시프트 레지스터의 네트워크를 통해 수집된다.[29]인텔 486을 시작할 때 하드웨어 제어 BIST는 마이크로코드 ROM을 포함한 다양한 배열을 확인하기 위해 2번의20 클럭 사이클 동안 실행되며, 그 후에 제어장치가 마이크로코드로 전송되어 레지스터와 계산 단위의 추가 자가 테스트가 이루어진다.[30]인텔 486 마이크로코드 ROM은 25만 대의 트랜지스터를 보유하고 있다.[30]

AMD는 인텔의 286, 386, 486 마이크로코드를 재사용하는 장기 계약을 맺었다.[31]2004년 10월 법원은 이 합의서에 인텔의 486번 회로 에뮬레이션(ICE) 마이크로코드를 유통하는 AMD가 포함되지 않았다고 판결했다.[31]

직접 액세스 테스트

DAT(Direct Access Testing)는 테스트(DFT) 설계의 일부로 Intel CPU에 포함되며, DFD(Design for Debug) 이니셔티브는 판매 전 개별 CPU의 전체 커버리지 테스트를 허용한다.[32]

In May 2020, a script reading directly from the Control Register Bus (CRBUS)[33] (after exploiting "Red Unlock" in JTAG USB-A to USB-A 3.0 with Debugging Capabilities, without D+, D- and Vcc[34]) was used to read from the Local Direct Access Test (LDAT) port of the Intel Goldmont CPU and the loaded microcode and patch arrays were read.[35]이러한 어레이는 CPU를 특정 모드로 전환한 후에만 액세스할 수 있으며 오프셋 0x6a0을 통해 액세스되는 5개의 어레이로 구성된다.[36]

  1. ROM: 마이크로코드 트라이애드
  2. ROM: 시퀀스 워드
  3. RAM: 시퀀스 워드(업데이트 가능)
  4. RAM: 일치/패치 쌍(업데이트 가능)
  5. RAM: 마이크로코드 트라이애드(업데이트 가능)

참조

  1. ^ a b c d e f g h i j k l m n o Gwennap, Linley (15 September 1997). "P6 Microcode Can Be Patched" (PDF). Microprocessor Report. Archived from the original (PDF) on 21 December 2009. Retrieved 23 January 2018. Intel has implemented a microcode patch capability in its P6 processors, including Pentium Pro and Pentium II … allows the microcode to be altered after the processor is fabricated, repairing bugs that are found after the processor is designed. … originally intended the feature to be used only for debugging, but after dealing with the expense of the Pentium FDIV bug … Intel decided to make it usable in the field. … P6 chip contains a complete set of microcode in an internal ROM … BIOS writes a memory address into a special CPU register to trigger a download sequence … P6 processors contain a small SRAM that holds up to 60 microinstructions. The patch code is downloaded into this SRAM … also contains a set of "match" registers that cause a trap when a particular microcode address is encountered. (This is similar to the "instruction breakpoint" capability used to debug assembly code.) This trap, which takes a single cycle to process, vectors microcode execution into the patch RAM. … downloaded microcode consists of two segments. … first is an initialization routine that is run immediately … also initializes the match registers, if necessary. … second segment contains one or more patches that remain in the patch RAM during normal operation and are accessed via a match-register trap. … original microcode is stored in ROM, … match registers allow the operation of the microcode to be changed. In this way, an x86 instruction that is operating incorrectly can be repaired, assuming it is implemented in microcode. … a patch is created to replace a section of the original microcode, performing the correct operation and then jumping back. … number of match registers, … more than one. … single bug, … might require multiple patches, and some bugs are too complex to repair … mechanism could allow multiple bugs to be fixed, … features of the P6 processor can be disabled via a special register … 2,048-byte block of data. The block contains a 48-byte header—which includes a date code, the CPU ID (which includes the stepping level) of the target processor, and a checksum—and 2,000 bytes of data to be downloaded by the processor. … checksum … is not used by the CPU. … 2,000 data bytes are encrypted in a way that Intel claims will be extremely difficult to break. The bytes are divided into blocks of varying lengths, each of which is encoded differently. … typically much smaller than 2,000 bytes, the remaining data is random noise intended to confuse anyone attempting to break the encryption. … Intel has not published any information on the format of its microcode, … is deliberately designed to be difficult to understand. Only a small number of Intel employees know the P6 microcode formats.
  2. ^ a b c Yeoh Eng Hong; Lim Seong Leong; Wong Yik Choong; Lock Choon Hou; Mahmud Adnan (20 April 1998). Chao, Lin (ed.). "An Overview of Advanced Failure Analysis Techniques for Pentium and Pentium Pro Microprocessors" (PDF). Intel Technology Journal (Q2). Pentium Pro microprocessor ... Micropatching DFT feature. ... consists of two key elements: the microcode patch RAM and several pairs of Match and Destination registers. ... Microcode Instruction Pointer (UIP) matches the content of a Match register, the UIP will be reloaded with a new address from the Destination register. ... UIP for the reset subroutine can be set in the Match register ... thereby bypassing the reset subroutine altogether.
  3. ^ Trumbull, Patricia V. (1994-10-07). Intel Corporation v. Advanced Micro Devices (Findings of fact and conclusions of law following "ICE" module of trial). United States District Court for the Northern District of California. San Jose. Retrieved 2021-05-10 – via Advanced Micro Devices. Twelve pins are affiliated with the "ICE" circuitry. … AMD 486DXL and DXLV connect three pins associated with "ICE" in order to implement its "SMM" feature. … 250 lines or 12,032 bits of the "ICE" microcode in the 486. "ICE" constitutes about five percent of the total 486 microcode. … two lines … (used to set the "ICE" mode "flip flop") … blue coded lines of microcode are associated with production testing and not used for "ICE" related purposes. … Seventy-five red coded lines were used by Intel to perform "SMM" in its 486SL, a data sheet function of this version of the chip. About 32 yellow coded lines perform routine operations which are not unique to "ICE." About two lines remain dedicated solely to "ICE."
  4. ^ Kubiatowicz, John (3 May 2004). "Dynamic Scheduling in P6 (Pentium Pro, II, III)" (PDF). Low Power Design, Advanced Intel Processors. CS152 Computer Architecture and Engineering (Lecture 25). Complex 80x86 instructions are executed by a conventional microprogram (8K x 72 bits) that issues long sequences of micro-operations
  5. ^ a b Gwennap, Linley (16 February 1995). "Intel's P6 Uses Decoupled Superscalar Design" (PDF). Microprocessor Report. Vol. 9, no. 2. MicroDesign Resources. pp. 1–7. S2CID 14414612. Archived from the original (PDF) on 8 October 2018. P6 uops have a fixed length of 118 bits, using a regular structure to encode an operation, two sources, and a destination. The source and destination fields are each wide enough to contain a 32-bit operand.
  6. ^ a b Asanovic, Krste (2002). "P6 uops" (PDF). Microprocessor Evolution: 4004 to Pentium Pro (Spring): 14. Retrieved 23 January 2018. Each uop has fixed format of around 118 bits … – opcode, two sources, and destination … – sources and destination fields are 32-bits wide to hold immediate or operand
  7. ^ Colwell, Robert P.; Steck, Randy L.; Intel Corporation (1995-04-12). "A 0.6 μm BiCMOS Processor With Dynamic Execution" (PDF). p. 7. Retrieved 2020-05-27. Micro-ops are the atomic unit of work in the P6 processor and are comprised of an opcode, two source and one destination operand. These micro-ops are fixed length and are more general than the Pentium(R) processor's microcode since they need to be scheduled.
  8. ^ 16.6.1. Simple Error Codes (PDF). Machine Check Architecture (Report). Pentium® Pro Family Developer's Manual. Vol. 3: Operating System Writer's Guide. 3 January 1996. p. 401. Archived from the original on 6 September 2001. Retrieved 1 October 2018. unique codes indicate global error information … Microcode ROM Parity Error{{cite report}}: CS1 maint : 부적합한 URL(링크)
  9. ^ a b Ronen, Ronny; Intel Labs (18 January 2005). Micro Operations (Uops) (PDF). The Pentium II/III Processor "Compiler on a Chip" (Report). Haifa: Tel Aviv University. pp. 26, 31, 32, 43, 44, 46. Archived from the original (PDF) on 16 April 2007. Retrieved 23 January 2018. Each "CISC" inst is broken into one or more uops … Canonical representation of src/dest (3 src, 2 dest) … e.g., pop eax becomes esp1<-esp0+4, eax1<-[esp0]ID: Convert instructions into uops. Buffers up to 6 uopsAlloc & RAT … able to work on up to 3 uops per clock … Reservation station (RS) … Pool of all "not yet executed" uops (up to 20) … In order Retirement: … Retires up to 3 uops per clock … OOO Cluster … Up to 5 resource-ready uops are selected, and dispatched per clock
  10. ^ Papworth, David B.; Intel Corporation (April 1996). "Tuning the Pentium Pro Microarchitecture" (PDF). IEEE Micro. p. 14. ISSN 0272-1732. Retrieved 8 October 2018. B0 stepping incorporated several microcode bugs and speed path fixes for problems discovered on the A-step silicon
  11. ^ a b Kagan, Michael; Gochman, Simcha; Orenstien, Doron; Lin, Derrick (1997). "MMX Microarchitecture of Pentium Processors With MMX Technology and Pentium II Microprocessors" (PDF). Intel Technology Journal (Q3): 6, 7. Pentium II processor's microarchitecture is similar to that of the Pentium Pro microprocessor … modified to convert the new MMX instructions to Pentium Pro processor-specific uops (new Single Instruction Multiple Data [SIMD] uops were added to implement the new functionality). … A microcode assist was created to correct the problem and redo the operation. An assist is a customer-invisible event that flushes out the machine and allows microcode to handle rare but difficult-to-handle problems. Since all MMX instructions zero the TOS, the assist needs to write the TOS to zero and restart the operation. … Illegal opcodes that are instruction holes in the MMX instruction opcode map are defined to generate a one uop assist call. This assist call instructs the ROB to flush the machine and causes an assist microcode flow to cause the processor to handle illegal opcode faults.
  12. ^ a b c d Hinton, Glenn; Sager, Dave; Upton, Mike; Boggs, Darrell; Carmean, Doug; Kyker, Alan; Roussel, Patrice (2001). Chao, Lin (ed.). "The Microarchitecture of the Pentium 4 Processor" (PDF). Intel Technology Journal. No. Q1. IA-32 instruction bytes are then decoded into basic operations called uops (micro-operations) … advanced form of a Level 1 (L1) instruction cache called the Execution Trace Cache … between the instruction decode logic and the execution core … to store the already decoded … uops. … instructions are decoded once … then used repeatedly from there … has a capacity to hold up to 12K uops … similar hit rate to an 8K to 16K byte conventional instruction cache. … packs the uops into groups of six uops per trace line … microcode ROM … for complex IA-32 instructions, such as string move, and for fault and interrupt handling … Trace Cache jumps into the microcode ROM which then issues the uops … After the microcode ROM finishes sequencing uops … front end of the machine resumes fetching uops from the Trace Cache. … deep buffering of the Pentium 4 processor (126 uops and 48 loads in flight)
  13. ^ Fog, Agner (2020-05-25). "The microarchitecture of Intel, AMD and VIA CPUs" (PDF) (An optimization guide for assembly programmers and compiler makers). Technical University of Denmark. p. 49. … If a μop has an immediate 32-bit operand outside the ±215 interval so that it cannot be represented as a 16-bit signed integer, then it will use two trace cache entries unless it can borrow storage space from a nearby μop. … A μop in need of extra storage space can borrow 16 bits of extra storage space from a nearby μop that doesn't need its own data space.
  14. ^ Bentley, Bob; Gray, Rand (2001). Chao, Lin (ed.). "Validating The Intel® Pentium® 4 Processor" (PDF). Intel Technology Journal (Q1): 29–26. Bug Discussion
  15. ^ a b De Gelas, Johan (1 May 2006). "Intel Core versus AMD's K8 architecture". AnandTech. p. 3. Retrieved 23 January 2018. Core architecture is equipped with four x86 decoders, 3 simple decoders and 1 complex decoder … to translate the 1 to 15 byte variable length x86 instructions into … fixed length RISC-like instructions (called micro-ops). … common x86 instructions are translated into a single micro-op … complex decoder is responsible for the instructions that produce up to 4 micro-ops. … really long and complex x86 instructions are handled by a microcode sequencer. … macro-op fusion … the x86 compare instruction (CMP) is fused with a jump (JNE TARG).
  16. ^ Kim, Dongkeun; Shih-wei Liao, Steve; Wang, Perry H.; del Cuvillo, Juan; Tian, Xinmin; Zou, Xiang; Wang, Hong; Yeung, Donald; Girkar, Milind; Shen, John P. (11 January 2004). "Physical Experimentation with Prefetching Helper Threads on Intels Hyper-Threaded Processors" (PDF). pp. 4, 5. Retrieved 24 January 2018. L1 Trace cache: 12K micro-ops, 8-way set associative, 6 micro-ops per line … Shared: Trace cache, … IA-32 instruction decode, Microcode ROM, Uop retirement logic, … Partitioned: Uop queue
  17. ^ a b c 8: Pentium Pro Processor BIOS Update Feature (PDF) (Report). 2.0. Intel. 12 January 1996. p. 45. Retrieved 3 November 2020. authentication procedure relies upon the decryption provided by the processor to verify an update from a potentially hostile sources.
  18. ^ Stiller, Andreas; Paul, Matthias R. (1996-05-12). "Prozessorgeflüster". c't – magazin für computertechnik. Trends & News / aktuell - Prozessoren (in German). Vol. 1996, no. 6. Verlag Heinz Heise GmbH & Co KG. p. 20. ISSN 0724-8679. Archived from the original on 2017-08-28. Retrieved 2017-08-28.
  19. ^ Mueller, Scott; Zacker, Craig (September 1998). Minatel, Jim; Byus, Jill; Kughen, Rick (eds.). Upgrading and Repairing PCs (PDF) (Tenth Anniversary ed.). Que Publishing. p. 79. ISBN 0-7897-1636-4. Retrieved 1 October 2018. Processor Steppings (Revisions) and Microcode Update Revisions Supported by the Update Database File PEP6.PDB … Using the processor update utility (CHECKUP3.EXE), … can easily verify … the correct microcode update
  20. ^ a b c d e Chen, Daming Dominic; Ahn, Gail-Joon (11 December 2014). "Security Analysis of x86 Processor Microcode" (PDF). Arizona State University. pp. 1, 5, 7. Retrieved 23 January 2018. supervisor privileges (ring zero) are required to update processor microcode … Since the 1970s, processor manufacturers have decoded the x86 … into a sequence of … (RISC) micro-operations (uops) … introduced writable patch memory to provide an update mechanism for implementing dynamic debugging capabilities and correcting processor errata, especially after the infamous Pentium FDIV bug of 1994. … P6 (Pentium Pro) microarchitecture in 1995, … K7 microarchitecture in 1999 … with symmetric multiprocessing (SMP) … should be executed synchronously on each logical processor … patch RAM in addition to the MROM … up to 60 microinstructions, with patching implemented by pairs of match and destination registers. … a 520 byte block containing a 2048-bit RSA modulus that appears to be constant within each processor family. This is followed by a four byte RSA exponent with the fixed value 11h
  21. ^ Shanley, T. (1998). The BIOS Update Loader. Pentium Pro and Pentium II System Architecture. Addison-Wesley Professional. p. 435. ISBN 9780201309737.
  22. ^ Wolfe, Alexander (30 June 1997). "Intel preps plan to bust bugs in Pentium MPUs". EE Times. No. 960. Archived from the original on 1999-11-13. Retrieved 3 October 2018 – via Techweb. obscure moniker "BIOS Update Feature." … "Each BIOS Update is tailored for a particular stepping of [a] processor," … data block is mapped directly-… after decryption-to the microcode itself.
  23. ^ Wolfe, Alexander (30 June 1997). "Hole seen in Intel's bug-busting feature". EE Times. Santa Clara. Archived from the original on 2003-03-09. Ajay Malhortra, a technical marketing manager based here at Intel's microprocessor group. "Not only is the data block containing the microcode patch encrypted, but once the processor examines the header of the BIOS update, there are two levels of encryption in the processor that must occur before it will successfully load the update." … closely guarded secret. "There is no documentation," said Frank Binns, an architect in Intel's microprocessor group. "It's not as if you can get an Intel 'Red Book' with this stuff written down. It's actually in the heads of less than 10 people in the whole of Intel."
  24. ^ a b c "Details of Intel Probe mode". Hardice. Retrieved 23 January 2018. emit a packet over the BPM when special instructions are executed … To enable Extended Execution Trace, special microcode patches must be applied … For the Pentium 4 only, there exists a second type … called microcode Extended Execution Trace … Control Register Bus in turn allows access to internal arrays and functions on the processor, such as accessing the LLC and the microcode/Virtual Fuse PROM. … that sits on the CPU package but is not within the CPU silicon die. This PROM also contains the microcode that the CPU loads during cold boot. … breakpoint on a 48-bit microcode address … accessed by the TAP commands BRKPTCTLA and BRKPTCTLB.
  25. ^ a b Elkins, David S. (Winter 1990). "NEC v. Intel: A Guide to Using "Clean Room" Procedures as Evidence". Computer/Law Journal. 10 (4): 453. NEC's use of its clean room procedures as trial evidence … Judge Gray defined microcode … within the Copyright Act's definition of a "computer program," … Intel's microcode is copyrightable. … Intel's microcode did not contain the required copyright notice. … copyrights had been forfeited. … Intel was left with no basis for its claim of copying
  26. ^ Hinckley, Robert C. (January 1987). "NEC v. Intel: Will Hardware Be Drawn into the Black Hole of Copyright Editors'" (Article 2). Santa Clara High Technology Law Journal. 3 (1). Appendix: Microcode formats; 8086/8088 Format; V20/V30 format
  27. ^ Leong, Kathy Chin (28 March 1988). "Intel witness recants story". Computerworld : the newsweekly of information systems management. Vol. 22, no. 13. San Jose. pp. 83, 84. ISSN 0010-4841. Retrieved 2 October 2018.
  28. ^ "Intel386 DX Microprocessor 32-BIT CHMOS Microprocessor with Integrated Memory Management" (PDF). December 1995. Archived from the original on 3 September 2004. self-test checks the function of all of the Control ROM … EAX register will contain a signature of 00000000h indicating the Intel386 DX passed its self-test of microcode and major PLA contents{{cite web}}: CS1 maint : 부적합한 URL(링크)
  29. ^ "5.1 Exhaustive Test in the Intel 80386" (PDF). Built-In-Self-Test (BIST) for Embedded Systems. Testing of Embedded System. IIT Kharagpur: 21. 7 October 2006. Retrieved 6 October 2018. For ROMs, the patterns are generated by the microprogram counter which is part of the normal logic.
  30. ^ a b Gelsinger, Patrick; lyengar, Sundar; Krauskopf, Joseph; Nadir, James; Intel (1999). "Computer Aided Design and Built In Self Test on the i486™ CPU" (PDF). Computer Design: VLSI in Computers and Processors. IEEE: 200–201.
  31. ^ a b "Court ruling against AMD causes some concern". InfoWorld. 17 October 1994. p. 5. Retrieved 24 January 2018. The decision by the federal district court in San Jose, Calif., said that AMD does not have the right to use Intel's in-circuit emulation (ICE) code in the AMD microprocessors. This code is present on all AMD 486s but is only used in a low-power 486-DXL and 486-DXLV processors. … AMD has started to rework its entire line of 486s to eliminate the code.
  32. ^ Wu, David M.; Lin, Mike; Reddy, Madhukar; Jaber, Talal; Sabbavarapu, Anil; Thatcher, Larry; Intel Corporation (2004). "An An optimized DFT and test pattern generation strategy for an Intel high performance microprocessor" (PDF). pp. 38, 43, 44. Direct Access Testing (DAT) for array access and diagnosis and Programmable Weak Write Test Mode (PWWTM) for memory cell stability test to reduce the test time. … Array DFT test strategy is to use PBIST (Programmable Built-In Self Test) to test the second level cache and use DAT to test the remaining arrays … PBIST is available through the JTAG TAP controller. … DAT mode in PX as shown in Figure 4 … PX has more arrays (>110) … array test coverage of PX is 99.3% ‒ the highest in Pentium 4 family
  33. ^ Team, uCode Research (25 May 2020). "chip-red-pill/crbus_scripts". GitHub. Retrieved 26 May 2020.
  34. ^ Positive Research (2020-07-21), ptresearch/IntelTXE-PoC, retrieved 2020-07-25
  35. ^ Ermolov, Mark [@_markel___] (2020-05-19). "Using the Local Direct Access Test (LDAT) DFT feature of Intel Atom CPU, we dumped Microcode Sequencer ROM. Also, we extracted what we think is IROM (Immediates for uops) and even managed to modify MS Patch RAM and Match/Patch registers" (Tweet) – via Twitter.
  36. ^ Bosch, Peter (2020-05-22). "Intel LDAT notes". Retrieved 2020-05-26. PDAT CR: 0x6A0; Array Select: 0‒4

추가 읽기

  • 미국 특허권 5404473, Papworth, David B; Fetterman, Michael A. & Glew, Andrew F.연구진, 1995-04-04, "파이프라인 프로세서에서 문자열 작업을 처리하는 부속서 및 방법"을 발행하여 Intel에 "REP 스윙 작업에서 첫 번째 "루프 카운터를 로드하고, 반복되지 않은 반복이 실행된 후 남은 횟수를 기록한다.… MS의 루프 카운터를 로드하는 데 걸리는 시간 동안 소수의 반복(예: 7개)이 전송된다.이 미연속 코드는 (E)CX의 값에 기초하여 조건부로 실행되며 나머지 3회 반복은 NOPS로 변환된다."
  • 미국 특허 5559974, 보그스, 대럴 D.; 브라운, 게리 L. & 핸콕, 마이클 M. 외 연구진, "단 한 번의 마이크로 조작으로 동시에 액세스할 수 있는 독립적으로 로드된 마이크로앨리어스와 매크로앨리어 레지스터를 가진 디코더" 1996-09-24가 인텔에 배정되었다.
  • 미국 특허 5566298, 보그스, Darrell은 D., 브라운, GaryL.&핸콕, 마이클 M.(알.,"상태 회복을 위한 디코더에 어시스트하고 다시 시작하십시오에 방법은 가명 메커니즘을 보내고", 1996-10-15을 출판했고, Micro-operation 순서(MS)제품에 인텔"쭉 펼쳐져 통제한 복귀들에 제어 micro-operations(Cuops)추가 오류 정정을 발행할 할당해 주었다..재시동을 단순화하기 위해, XLAT PLA(Xlat PLA) 변환 로직 어레이에 의해 공급되는 오류 유발 매크로 인스트루레이션에서 비롯된 쿠오프는 유효한 비트가 인가되지 않은 채 쿠오프 레지스터에 로딩된다."
  • 미국 특허 5600806, Brown, Gary L. & Parker, Donald D, "변수 길이 매크로 Instruments의 명령 경계를 명령 버퍼와 일치시키기 위한 방법과 장치" 1997-02-04년 발행되었으며, 하나의 일반 Cuop으로 구현된 Intel "ADD, XOR, SUB, AND 및 OR"에 할당되었다.하나만 표시할 수 있는 또 다른 지침 그룹에는 다음이 포함된다.
  • 미국 특허 5630083호, 카빈, 애드리안 L.; 브라운, 게리 L. & 파커, 도날드 D. "다중 지시사항을 병렬로 해독하기 위한 디코더"는 인텔에 할당된 2013-03-01에 출판되었다.
  • 미국 특허 6055656, 윌슨, 주니어, 제임스 A.; 밀러, 앤서니 C. & 로드하멜, 마이클 W. 외, "표준화된 시험 액세스 포트를 통한 버스 액세스 제어 등록"이 인텔에 배정되어 발행되었다.
  • 미국 특허 20030196096, 서튼, 제임스 A, "마이크로코드 패치 인증" 2003-10-16 출판
  • 미국 특허 5948097, Glew, 앤드류&로저스, 스콧 디온,"법과 기기는 컴퓨터 시스템에서 전화의 사용하지 않고 특권 수준을 변경할 때에", 1999-09-07을 출판했고, 펜티엄 프로 프로세서 등는 인텔 아키텍처 프로세서에서 실행될 수 있인텔"SYSENTER과 SYSEXIT 있assembly-language 지침서에 할당된다.m쭉 펼쳐져ICRO 작동은 소스 필드가 적절한 데이터로 채워졌을 때 준비되도록 결정된다. 명령 디코드 장치는 하나 이상의 마이크로 조작으로 각 명령을 디코딩하는 하나 이상의 변환(XLAT) 프로그램 가능 로직 어레이(PLA)로 구성된다.… SYSENTER와 SYSEXIT 지침은 각각 FIGS 5와 6에 설명된 단계를 수행하는 마이크로 오퍼레이션에 디코딩된다."
  • "Microcode updater interface sysctl" (ucode.c driver). XNU. Retrieved 24 January 2018. #define IA32_BIOS_UPDT_TRIG (0x79) /* microcode update trigger MSR */{{cite web}}: CS1 maint : url-status (링크)
  • Sivaram, A. T.; Fan, Daniel; Yiin, A. (2002-10-10). Efficient Embedded Memory Testing with APG. Vol. 1. Baltimore, Maryland: IEEE. doi:10.1109/TEST.2002.1041744. ISBN 0-7803-7542-4. ISSN 1089-3539. S2CID 19579807.
  • Bosch, Peter (2020-10-01). "Under the hood of a CPU: Reverse Engineering the P6 microcode". YouTube. Netherlands. Retrieved 2020-11-01.

외부 링크

uCodeDisasm — Python(CRBUS에서)의 Intel 마이크로코드 디스어셈블러, ops 이름