내가 그 질문에 대한 답을 썼을 때 , 불행히도 다른 답변 (그리고 다른 곳에서는 수퍼 유저)으로 예시 된 주제에 대한 민속의 지혜는 1991 년경과 같이 세계적으로 갇혀 있습니다. 어떻게 그렇지 않으면 지금.
내 대답을 읽었다면 처음부터 "BIOS loaded from ROM"에 대해 묻지 않기 때문에 혼란스러워하지 않았을 것입니다.
"BIOS 칩" 은 ROM 이 아닙니다 . 프로세서 시작과 펌웨어의 첫 번째 명령 사이에 기계 코드가 없습니다. "RAM"과 "ROM"의 "M"은 "메모리"를 의미합니다.
이전에 쓴 것처럼 최신 PC에서는 머신 펌웨어가 비 휘발성 RAM에 보관되어 있습니다. 예전처럼 ROM이 아닙니다. LPC 버스에 연결된 NVRAM 칩에 대한 자세한 내용은 이전 답변을 참조하십시오. (예를 들어, 내가 이것을 입력 할 때 내 옆에 분해 된 기계에서 펌웨어를 보유한 NVRAM은 Pm49FL004T, LPC 플래시 RAM 칩입니다.)
32 비트 CPU는 리얼 모드에서 시작되지 않으며 1MiB 라인 아래의 주소로 시작하지 않습니다. 16 비트 x86 프로세서 시대에는 수십 년이 지난 쓰레기입니다. 그것들은 구어체 적으로 언리얼 모드 로 알려진 것에서 시작하며 , 나의 이전 답변에서 다시 80386의 출현 이후 실제로 있었던 사건에 대한 세부 사항을 주었다 . 실제로 32 비트 주소 공간의 맨 위에있는 주소에서 첫 번째 명령어를로드합니다 FFFFFFF0
.
이전 답변에서 시스템 펌웨어가 기본적으로 32 비트 및 64 비트 x86 시스템의 물리적 주소 공간에 매핑되는 위치에 대해 자세히 설명했습니다. 기억하십시오 : RAM과 ROM은 모두 memory 입니다. 물리적 주소는 시스템 버스의 메모리 주소입니다. RAM 또는 ROM을 처리 할 수 있습니다. (그들은 심지어뿐만 아니라 다른 일을 처리 할 수 있지만, 그것은 단지이 토론을 복잡합니다.) 물리적 주소는 FFFFFFF0
펌웨어의 상단 512KiB가, 비 휘발성 RAM에있는 512KiB 범위의 맨 아래에 16 바이트 항상 온 매핑 "칩셋"에 의한 시스템 버스.
프로세서 초기화 또는 재설정시 진행되는 일부 신화 ROM 칩에서 "로드"가 없습니다. 펌웨어를 유지하는 칩은 비 휘발성 RAM 입니다. 전원을 껐다 켜는 동안 "깜박일 때"기록 된 내용을 유지합니다. 그리고 CPU는 물리적 메모리 주소를 사용하여 칩셋을 통해 시스템 버스에 연결된 LPC 버스 (및 LPC / FWH 브리지)와 시스템 버스를 통해 펌웨어 명령과 데이터를 읽습니다.
추가 자료