정확히 무엇입 마이크로 그리고 어떻게 그것을 다르에서 펌웨어?
한 용어,정확히 무엇입"마이크로코드"과될 수 있는 경우 업데이트되고,어떤 차이점이에서 펌웨어?
이 질문은 하지중복의 이 질문(지금까지 내가 말할 수)는've 도에 대한 질문을 수정하는 마이크로. 여기에 나는'm 엄격하는 방법을 알고 싶어를 이러한 용어를 사용니다.
업데이트
가 선택한 답이지만,나는'm 지 않을 특히 그것으로 만족. 나는've 종사하는 많은 답을 찾을 많은 사람들의 응답에 동등하게 만족. 그래서 내가 당신에 존재하는 내 두 개의 프레임,
- "마이크로 프로세서 가깝 프로세서 펌웨어가 있습니다."이것은 더 많은,는's 는 방법을니다. "마이크로코드"이 이 상황에서는 그냥 마케팅"프로세서 펌웨어가 있습니다."곰이 나와 함께,..
- 나,나는'm 잘못,그리고 나는 그것을 알고있다! 이 경우에는,내가 필요로 훨씬 더 많은 철저한의 아이디어를 왜 나는 잘못입니다. 에 대한 답변을 읽을 지적하는 나에게 잘못된 것,나는 고투하고 그들을 이해, "실행에 대한 데이터"대답을 많이 사용하는 이 패러다임을,그러나 CPU 지 않는't make much sense to me. 일부 assert 펌웨어 실행되지만,무엇인가? 올 때 CPU,프로그램 지침 또는 데이터가? 을 경우 펌웨어 다리 소프트웨어 및 하드웨어(읽기:전기 엔지니어링들의 신들)다음 방법은 마이크로되지 않도 satisifying 는 차이입니다. "해석"로 시간이 흘러,이것도다. 그것은 무엇을 의미하는 말이"하드웨어 지침이 해석되"와 마이크로. 는 경우는 것이 무언가가 있으로 성능이 아니었다면'해석됩 t 지만 미리 컴파일을 다른 하드웨어 지침이 단순히"실행되"? 또한,어떻게 일반적인 미디지로 해석이 같은 빛? It's 언어를 얻는 해석"MIDI 마이크로코드"에서 실행됩니다. 거나,벙어리 터미널을 해석하는 텔레기 위한 지침을 시각적 표시? 않"마이크로코드"을 적용하는 코드에서 실행되는 사운드 카드와비디오 카드(Gpu)?
50
12
이 단어의 기원 펌웨어가 중간지점 사이에 하드웨어 및 소프트웨어 소프트웨어에 포함된 하드웨어입니다. 그것이 의미하는 소프트웨어에 저장되어 비휘발성 메모리에서 하드웨어 장치입니다. 예 EEPROM 와 플래시 메모리를 포함 하드웨어 장치에 사용되는 경우에 저장하는 코드는 실행하는 장치에 의해 자체입니다.
It's 에서 더 일반화되고 몇 가지의 유형을 위해 하드웨어를"펌웨어"에 저장 드라이버 소프트웨어에 적재되는 장치 때's 팅/초기화는 대신 그것을 떠나 영구적 장치에 있습니다. It's not a big deal 요즘,예를 들어,상점 몇 백 킬로의 펌웨어 코드는 소프트웨어를 드라이버에 적재되는 호스트 OS,를 보내는 장치로 그's 드라이버에 의해 초기화.
이것은 종종이라고 합"펌웨어"도에 따라 정의 펌웨어 당신은 허용할 수 없는 기술적으로 고려 펌웨어 있지 않기 때문에 거주자에서 하드웨어(분리하는 경우에는 하드웨어 넣고 다른 시스템에서,그't 을 유지하는 버전이"펌웨어").
마이크로코드의 하위 집합 이 후자의 유형"펌웨어". 마이크로지 연구에 대해 읽어보기 위해서는,"펌웨어"로드하는 장치에서는 부팅합니다. 대신,그's 에 특정한 Cpu 에는 마이크로 기본적으로 형태를 번역한 레이어 사이에 높은 수준의 표준 CPU 지침 그리고 낮은 수준의 운영과 관련된 CPU. 그것이 로드에 CPU 에서 부팅하여,BIOS,그러나 교체할 수 있습 후에 부팅을 단계에 의하여 운영 체제뿐만 아니라.
업데이트하는 마이크로 허용할 수 있는 CPU's 낮은 수준의 행동을 수정하는 작업이 특정 아직 발견되는 버그,하지 않는 CPU 하드웨어입니다. 마이크로 일반적으로 가장 효율적인을 포함한 매핑에서 낮은 높은 수준 지침을 가능한 최고의 속도와 에너지 효율 그래서 때로는 변화하는 마이크로 문제를 해결하는 데 필요한 일부 버그,그것을 감소시킬 수 있습니다 성능이다.
참고 있는 붕괴(취약성에 영향을 주는 것이 아니라 인텔 칩)수정할 수 없으로 마이크로 업데이트를 혼자 변화를 요구하는 핵심 OS 기능을 줄일 수 있는 성능이다. 유령(취약성에 영향을 미치는 인텔,AMD 및 팔 칩을)수 있습 근무하는 주와 마이크로 업데이트를 혼자입니다.
응답의 일부는 당신의 특정 질문은 이후 편집:
참고로 나는 토론한 그 위에 아't 에 저장되는 동안 CPU 를 it's 지만 그것에로드를 부팅할 때마다 그래서 어떤 의미에서 그것이't work 같은 전통적인 펌웨어가 있습니다. 그러나,많은 하드웨어는 이 지금은 여전히 불"펌웨어"그래서 호출하면 그것은 펌웨어는 허용됩니다.
용어"마이크로코드"은 일반적으로만 사용되는 주요 응용 프로그램을 호스팅합니다.지 않 그래픽 카드 또는 다른 하드웨어에도,그 다른 장치가있을 수 있습니다 코드에 적재들에 동일한 방법입니다.
https://wiki.debian.org/Microcode
예제:
https://www.win-raid.com/t3355f47-Intel-AMD-amp-VIA-CPU-Microcode-Repositories.html
만,인텔"마이크로 업데이트 및"사"펌웨어"업데이트한다는 의미에서 그들이 업데이트보다 더 많이 그냥 마이크로 번역 단위의 프로세서입니다.
이러한 통합 프로세서 패키지를 업데이트 우"마이크로 업데이트 및"Intel 또한 업데이트에 다 마이크로컨트롤러(과 같은 PMU 및 전력 관리 core)뿐만 아니라 여러 가지 매개 변수 테이블을 위한 다양에서 죽어 프로세서 일부를 공유 할 수 있습니다. 그들은 오히려 복잡합니다.
이 정보를 사용할 수 있는 여러 가지에 인텔 특허에 관련된 마이크로 및 마이크로 업데이트됩니다.
내가 생각하는 용어"마이크로코드"을 의미는 무엇 코드(그것을 실행하는 낮은 수준 지침을 사용하여 더 낮은 수준 지침),기간 동안"펌웨어"참조로 그것이 어떻게 저장 및 관리(적은 쉽게 업데이트보다는 소프트웨어,더 쉽게 업데이트보 하드웨어). 그런 의미에서 그것이's 히 구별 사"응용 프로그램"a"JAR 파일"-동일한 프로그램 수 있습니다 둘 다,하지만 당신은 그것을 보고에서 두 개의 서로 다른 관점입니다.
또한,의 아이디어는 마이크로 돌아가는 모리스 윌크스 1951 년에서,수십 년 동안 전에 컴퓨터 프로세서에 포함된 실리콘입니다.
[주의:이 대답할 수 있도록 특수하게 만들어진 것입 주소 최근의 편집과하지 않는 그렇지 않으면 추가하여 여러운 답변이 있는 이미 게시되어 있습니다.] 그래서,반복하기 위하여:마이크로(적어도 최초 근사치)는 특정한 종류의 펌웨어가 있습니다.
"마이크로코드"원래의 용어라고 명령했을 구현하는 데 사용되는 통역사에 대한 프로세서는's"공"명령을 설정합니다.
그러나 시간이 지남에 따라,많은 변화에서 구현 계획,차와 같은 그것 가지고 더 많은 막연하다. 처음 수평 vs 수직 마이크로,한 다음 다양한 방식을 쓰기 위한"마이크로코드"(를 구현하는 말,I/O 지침서)"주"프로세서 명령어 집합입니다. 그런 다음 필요가 있었을 구별하는 코드는 쉽게 로드를 통해 일반 프로그램"run"작업에 대 코드(BIOS,예를 들어)는 저장되었 ROM 또는 다른 보호는 상대적으로 변경할 수 없는 저장합니다. 따라서 장기"펌웨어"발명되었을 참조하는 이 지침에는 어떻게든 더 지속(그리고 더 적은 액세스할 수 있에 대한 사용자 수정)에 저장합니다.
하지만 많은 변신하고 꼬 많은 시간 이후 이러한 첫 번째 차이가 이루어졌다,그리고 더 이상의 조건만이 정의와 정밀도에서는 주어진 프로세서와 OS environment.
펌웨어가 일반적으로 참조 코드는 장치를 포함 CPU 지 않 CPU 체 예를 들면 펌웨어에 대한 안드로이드 전화입니다.
마이크로 번역한 것 레이어 사이에 복잡한 명령어 세트(예,486,686,AMD-64ect.) 그리고 낮은 수준 지침을 칩 업체 디자인 실리콘습니다. 그래서 다수의 지침에 CPU 명령어 집합에서 구현되지 않은 실리콘 그 번역을 통해 마이크로 여러 개의 지침에서 구현되는 실리콘입니다.
마이크로코드("제어점")은 데이터에 있는 휘발성이나 비휘발성 메모리--일반적으로 매우 넓은 메모리,그의 데이터 출력 신호는 유선제어 신호입력 병렬 기능적인 하드웨어 장치,제어 임의의 논리,등등. 마이크로코드 메모리's 주소 입력에 의해 제공되는 상태는 기계 단계를 통해서 메모리 워드("microprogram 지")시간에,효과적으로순서 제어 신호하나 이상의 하드웨어 블록입니다. 이시-멀티 플렉스 하드웨어 및 수 복잡한 작업을 구현과 훨씬 적은 임의의 논리입니다.
현대 마이크로프로세서가있을 수 있습 계층 구조의 마이크로/시퀀싱 단위에 필요한 추상적인 육체적인 실리콘 마이크로 아키텍처를 좀 더 일반적인 아키텍처는 가족과 공"컴퓨터 코드"인터페이스입니다. 예를 들어 있을 수 있습니다 여러 층의 마이크로/시퀀싱을 구현하는 명령어 디코더 및 부동 소수점 단위입니다.
펌웨어에서는 전통적인 감각은 어떤 소프트웨어/데이터에 거주하는 비 휘발성 메모리 할 것으로 예상되는 자주 또는 변경되지 않습니다. 이 직접 대비 소프트웨어에서 저장하거나 오히려 기록되고 실행되는 시스템에서 메모리가 끊임없이 변화하고 있습니다. 마이크로 특별히 참조 데이터를 나타내는 microprogram 시퀀스 제어 하드웨어가 있습니다.
마이크로 구현될 수 있에서 펌웨어/펌웨어가 포함될 수 있습 마이크로,하지만 그들이 동일하지 않습니다.
용어
나는'll 응답이 자신만을 사용하여 이용 상황에서이 pdf.
펌웨어-마이크로은*업데이트를 통해 경로를 제공하여 CPU's 펌웨어가 있습니다.
*마이크로*-은 자체에서 사용되는 데이터를"명령어 디코딩 장치(IDU)."는 IDU 수 있hardwired 또는microcoded. Microcoded 이 상황에서 단순히 프로그램되어 있습니다. 도*방법"상기 복수의 마이크로."*IDU
매크로 명령하나의 명령을 전송하 IDU 디코딩할 수 있습니다,반환의 양마이크로 지침을*.
마이크로 명령하나의 사전 계산"컨트롤 word",모든 국가의 지침과 실행에 대한 하나의 클럭 주기입니다. 보냈을 CPU 를 생성제어 신호*.
으므로 이러한 맥락에서,당신은 당'd 업데이트 마이크로코드와 함께 펌웨어가 있습니다. 을 보내 거 지침 microcoded IDU 를 해결하는 매크로 명령으로"마이크로 명령"실행에 대한 CPU 에서는 그들로 제어 신호가 있습니다.
나의 이
마이크로가데이터지업데이트하는 마이크로수행을 통해*펌웨어가 있습니다. 과 혼동하기 때문에 당신이'다시 말하는 것에 대해 기본적으로 금액에는 내부 검색 표's 확실히 자체도펌웨어에서는's 기본적으로 저장된 칩에과에서 사용되는 실행 흐름의 칩이다. 나는 당신을 인수하는 일반적인 미디,하드웨어 포스트스크립트 및 제어 신호를 위한 벙어리 터미널은 또한 해석과 동일한 의미에서,하드웨어에서,그리고 그가는 교육과 궁극적으로 생성"컨트롤 신호를"*에서 어떤 종류의 통역 작업을 수행합니다.
그것은 보인다 우리는 특별한 이름을 위한 이러한 프로세스와 요소를 사용에서는 CPU:"IDU"CPU 에서 그 이름을 특정 입력 테이블 IDU 용 보유하는 모든"microinstructions":"마이크로."에 대한 정보를 이 과정을 소유하고 있습니다. 나는 그것을 가정's 와 유사한 다른 기술에서 모뎀(와 ATDT 과 같은 헤이즈 모뎀),MIDI 드 그러나 우리는't 름 특정 검색 표"마이크로코드",그리고 대신 사용하는 용어"펌웨어"를 위한 번쩍이는 프로세스는 전체 페이로드 저장된 칩에.
펌웨어은 실행가능한 코드에 위치 ROM 또는 다른 비 휘발성 메모리입니다.
원래하고 기본 목적의 펌웨어가 있을 때 CPU 를 시작,그래서 그것은 코드를 실행하기 시작하거나 어떤 부팅 시스템의 CPU 부분입니다. 의 경우 Pc,펌웨어 또한 사용을 제공하는 서비스를 실행하는 운영 체제와 또한 코드에 대한 임베디드 컨트롤러 제어 하는 팬들이,힘,그리고 몇 가지 다른 것들,그리고 코드에 대한 ME/PSP 는 백그라운드에서 실행됩니다.
주변 장치는 펌웨어가 같은 하드 드라이브,USB 장치,등등. 이 포함된 CPU.
마이크로지 않은 실행 파일 코드는,하지만 코드를 사용하여 내부 시설이 있습니다.
It's 로드 Intel 또는 AMD Cpu WRMSR 명령입니다. 펌웨어 선적으로 장치를 포함한 프로그래밍 ROM 또는 플래시 중 또는 의지 작은 로더 프로그램이 존재하는 장치에 동의 펌웨어가 있습니다.
펌웨어는 마이크로 업데이트가에서 유사한 범주-당신이해야 할 것들을 얻는 하드웨어 작업 및 업데이트가 필요할 수 있습 시간에서-그러나 그들은 아주 다른 것입니다.
복잡한 지시에 많은 Cpu 하지 않은 직접 유선 하드웨어에 있지만,"실행되"에 의해 작은 CPU 같은 시설에는 주 CPU. 마이크로 컨트롤러한 작업입니다. 이것은 최소 모토로라 68000 는 a"MicroROM"을 포함하는 마이크로.
아니나 다른 이상 Intel 또는 AMD 프로세서에서 무엇을 알고 마이크로 정말 제어 또는 않습니다,그들을 방출하지 않는 정보. 이 있을 해킹 시도습니다. 참고.
실질적으로,마이크로 업데이트는 본질적으로 사용되는 사용하지 않는 지침 문제가 발생에 알려진 모델/스테핑 Cpu,그리고 최신 Cpu 에 인텔에서 종종 필요 적어도 하나의 마이크로 업데이트하기 전에 그들은 기능을 합니다.
몇 가지 관점에 CPU 마이크로코드로 할 수 있/제가 될 수 있습 얻을 읽을 경우에 대해6502PLA 디코딩 ROM-the6502 은 8-비트 CPU 및 지침을 시퀀싱 했/에 의해 제어되는 내부 PLA. PLA 것 기본적으로 말의 어떤 부분에 칩에 참여의 각 단계에서는 각 명령어(6502 지침의 범위에서 2~7 사이클). 이것은 훨씬,훨씬 전에 같은 것들을 캐싱,superscalar architecture,분기 예측,etc. 가 확실하지 않으면 마이크로 현대 Cpu 에서 제어가는 PLA.
나는've 코스에서 기본적인 ISA 디자인에서 주로 연구하고 디자인의 RISC 프로세서로 MIPS 개념이 있습니다. 여기's 를 기억
나의 이해,기본 블록의 프로세서와 같이 레지스터 ALUs,멀티플렉서와 메모리 모듈을 필요로 특정 신호를 그들을 위해 자신의 작업을 수행합니다. 당신이 전화를 이러한 신호의"assertion"신호,이후 그들은 신호로 작동하는 데 필요한 블록입니다. Cpu 본질적으로는 스파게티의 블록 ALUs,메모리 모듈,레지스터와는 다른 하드웨어입니다. 의미는 각각의 CPU 주장해야합니다 어느 순서 제어 신호의 자신의 작업을 수행하기(내 말은 기본적인 지침과 같은 앤디를,오리,JMP,오스트레일리아,BEQ,etc.). 나는에 대한 감정을 혼합하면 그것을 주장하는 신호를 자신(문자 그대로 가는 모든 통해 MIPS 지)동안 테스트와 디버깅 명령어 집합을 이 교육 과정's 도지't 게 가르쳤어 아무것도에 대한 제어 장치에는 시간입니다.
다른 한편으로,어셈블러 언어로 귀결하여 컴파일하고 그들의 피연산자가에 지시어(기본적으로의 폭은 데이터 버스). 의 관점에서 MIPS,첫 번째는 6 비트의 명령어 당신의 opcode. 한 수학적 검사 혼자할 수 없습니다,"assert"의 ALU,등록,메모리,멀티플렉서..는 기본적으로 하드웨어의 나머지 부분과 함께 6 비트 혼자입니다.
지 않는다는 명령어 디코더. 명령어 디코더 기본적으로 귀하의 코드를 생성합의 모든"assertion"신호로 작동하는 데 필요한 하드웨어. 그러나 그 명령어 디코더와 다를 구현에 사는 아키텍처 그리고 어떤 경우에는,프로그래밍할 수 있습니다. 마이크로 영향을 미치는 프로그래밍 섹션에서의 명령어 디코더.
나는 믿기펌웨어일반적인 기간에 대한 어떠한 정보에 포함된 하드웨어입니다. 어떤 경우에 그것은 또한 참조하여 마이크로로 그것의 비트 스트림을 인코딩하고 저장 하드웨어에서 같은 EEPROM 와 플래시 메모리. 그러나 대부분의 시간,그것은 컴파일 된 코드,asm,또는 VHDL/Verilog 곽 bitstreams 에서 사용되는 Fpga. 마이크로 나처럼 보인다 의미를 지정하는 데 사용됩"주장 신호를"에서 프로세서의 선택입니다.
마이크로코드 sub-asm 수준,cpu-통합된 펌웨어가 있습니다.