[주의 :이 답변은 최근 수정 사항을 처리하기 위해 특별히 고안되었으며 이미 게시 된 여러 가지 소리 답변에 추가되지 않습니다.]
따라서, 다시 말하면 : 마이크로 코드 (적어도 제 1 근사까지) 특정 종류의 펌웨어입니다.
이 맥락에서 "마이크로 코드"는 단지 "프로세서 펌웨어"를 통한 마케팅 일뿐입니다.
음, 마케팅이 아닙니다. 마케팅은 그것을 호출했을 것입니다. XBoost Pro (TM) 또는 뭔가. 오히려 엔지니어링 용어입니다. CPU를 설계 할 경우 마이크로 코드와 CPU의 다른 펌웨어 (및 다른 장치의 일반적인 펌웨어 종류) 사이의 구분이 중요합니다. 그렇지 않은 경우 아마 그렇지 않습니다.
마더 보드를 설계하거나 운영 체제를 작성하는 경우 "마이크로 코드 업데이트"를 좀 더 다루기 쉽고 익숙하지 않은 "CPU 펌웨어 업데이트"의 약자로 사용하는 것이 좋습니다. 대부분의 CPU 펌웨어 업데이트는 주로 마이크로 코드에 영향을 미치므로 동일한 문제가 발생하지 않습니다. 당신은 아마 차이를 알지만, 당신은 필요가 없습니다. 케어 그것에 대해.
최종 사용자는 그 차이를 알거나 신경 쓸 필요가 없으며, 이상적인 세상에서는 결코 "마이크로 코드"라는 단어를들을 수 없습니다.
나는 최근의 투기 적 실행 취약점에 대한 언론의 보도에 관심을 갖게되었다고 생각합니다. 이전에 컨텍스트에서 들었을 지 모르니 걱정할 필요가 없다는 것이 더 분명했습니다. 이 취약점은 계획보다 이전에 발표되었으므로 언론의 보도 범위가 다른 경우보다 적습니다. 최종 사용자의 관점에서 BIOS 업데이트, 운영 체제 업데이트 및 경우에 따라 응용 프로그램 업데이트를 설치해야합니다. 이들 중 하나에 새 마이크로 코드가 포함되어있는 경우이를 알거나 신경 쓸 필요가 없습니다.
그래서 당신이 알거나 신경 쓸 필요가 없다는 것을 깨닫더라도, 순수한 호기심에 관심이있을 수 있습니다 : 다른 펌웨어와 마이크로 코드를 어떻게 구별 할 수 있습니까?
글쎄요, 먼저 알아야 할 것은 하나의 단단하고 빠른 정의가 반드시 필요한 것은 아니라는 것입니다. Bleggs and Rubes 상황 . 여전히 마이크로 코드에 대해 말할 수있는 몇 가지 사항이 있습니다.
마이크로 코드는 일반적으로 CPU가 아닌 CPU 내부에서 실행됩니다. 그것이 상위 수준의 견해입니다.
마이크로 코드의 아키텍처는 일반적으로 일반 펌웨어를 포함한 일반 코드의 아키텍처와 상당히 다릅니다. 병렬성이 높으며 하드웨어에 훨씬 가깝게 구현 될 수 있습니다. 몇 가지 기존 답변 (사용자 답안 포함)이 이에 대해 논의하지만, 세부 사항은 CPU 설계에 따라 달라질 수 있습니다.
하드웨어는 종종 제조업체가 제공 한 펌웨어 만 실행하도록 설계되었지만 특히 드문 것은 아니다. 타사 펌웨어를 사용할 수는 있지만 보증이 무효화됩니다! 제 3 자 마이크로 코드는 훨씬 드물다. 비록 고대시기 (CPU가 빵 상자 크기에 관한 이야기였던 때)에 최종 사용자 중 일부가 CPU의 마이크로 코드를 수정할 것이라고 생각한다. 지금까지 내가 알고있는 한, 이것은 PC에서 사용되는 CPU 종류에서 가능하지 않습니다.
마이크로 코드는 통상적으로 공용 명령 세트 아키텍처를 구현하거나 번역하는데 도움을 주며, 즉, 운영 체제 설계자 및 애플리케이션 프로그래머가 사용하는 기계 코드를 실행한다. 이에 대한 자세한 내용은 다음 섹션을 참조하십시오.
"실행 대 데이터"많은 답변이이 패러다임을 사용합니다.
혼란스럽게 다른 방식으로, 나는 두려워하지만, 나는 내 자신의 의견을 말할 것입니다. 이 섹션은 위의 마지막 글 머리 기호로 확장됩니다. 여기서 목표는 CPU가 수행하는 작업 (하드웨어와 마이크로 코드의 조합으로 달성)과 일반 장치가 수행하는 작업 (하드웨어와 펌웨어의 조합으로 달성)을 구별하는 것입니다. SATA 하드 디스크 드라이브를 선택하겠습니다.
SATA 드라이브는 "섹터 5,123에서 데이터 읽기"및 "섹터 1,321에이 데이터 쓰기"라인을 따라 컴퓨터에서 명령을 따릅니다. 드라이브의 펌웨어는 하드웨어가 하드웨어를 작동하게하는 책임이 있으며 일반적으로 임베디드 CPU에서 실행되는 꽤 일반적인 코드입니다. 드라이브의 지시는 순차적으로 도착하지만 도착한 순서대로 처리되지 않을 수 있습니다. 이 지침은 프로그램이 아니며 보낸 메인 CPU에서 실행되는 프로그램에 의해. 특히, 제어 흐름이 없으며, 즉, 다음에 실행할 명령을 SATA 드라이브에 알려주는 명령이 없다.
CPU가 컴퓨터를 담당합니다. 초기화가 완료되면 마더 보드 (BIOS, 다른 유형의 펌웨어)가 제공하는 지침 ( "기계 코드")을 실행하여 운영 체제가 제공 한 기계 코드를 실행하여 제공된 기계 코드를 실행하도록 지시합니다 응용 프로그램 공급 업체. CPU 자체는 EEPROM (BIOS의 경우) 또는 RAM (운영 체제 및 응용 프로그램의 경우)에서 기계 코드를 검색합니다. 특히 기계 코드는 제어 흐름을 가지고 있습니다. 기계 코드는 다음에 수행 할 기계 코드를 CPU에 알려줍니다. 동일한 기계 코드를 반복적으로 반복 할 수 있습니다. 코드가 작동하는 데이터에 따라 다른 코드 비트를 실행할 수 있습니다. SATA 코드와 같은 장치 인터페이스 언어의 지침은 제한된 일련의 작업을 수행 할 수 있지만 기계 코드는 해야 할 것 아무것도 . (또한보십시오 튜링 완전성 .)
위의 마지막 글 머리 기호는 다음과 같이 다시 작성할 수 있습니다. 일반적으로 마이크로 코드는 Turing Complete 언어를 구현합니다. 보통의 펌웨어는 그렇지 않습니다.
마이크로 코드로 "하드웨어 명령어가 해석된다"는 것은 무엇을 의미합니까?
사실이지만 혼란 스럽네요. 중요한 점은 제어 흐름이 있고 Turing Complete 인 기계 코드와 SATA와 같은 장치 인터페이스에 의해 정의 된 명령 간의 차이입니다.
사운드 카드에서 실행되는 코드에 "마이크로 코드"가 적용됩니까?
아니요, 사운드 카드는 SATA 드라이브처럼 코드가 아닌 지침을받습니다. 지침은 "날카로운 연주"또는 "이 데이터를 파형으로 해석하고 연주"와 같을 수 있습니다. 여전히 매우 간단합니다.
및 비디오 카드 (GPU)?
구식 비디오 카드 (GPU가없는)는 SATA 드라이브와 동일합니다. 지침은 "이 픽셀을이 색으로 설정"또는 "이 위치에 A 쓰기"와 같습니다.
... GPU는 복잡하고 위에 설명 된 두 개의 세계 사이에 자리 잡고 있습니다. 아마도 자신의 CPU를 가지고있는 주 컴퓨터에 앉아있는 특수 컴퓨터로 생각하는 것이 가장 간단 할 것입니다. SATA 드라이브와 같은 장치에도 CPU가 내장되어 있지만 SATA 드라이브의 임베디드 CPU는 드라이브 제조업체가 제공 한 코드 만 실행하는 반면 GPU는 운영 체제 및 / 또는 응용 프로그램 공급 업체에서 제공하는 코드도 실행한다는 점이 다릅니다. 정말로 이것은 완전히 별개의 질문입니다.
TL : 마이크로 코드는 하드웨어가 Turing Complete 명령어 세트를 구현하는 데 도움이되는 특정 종류의 펌웨어입니다.