컴퓨터 부트 스트랩 중 RAM에 BIOS를로드하는 사람


8

컴퓨터가 시작되면 BIOS의 코드가 먼저 실행됩니다. 그러나 BIOS의 코드는 어떻게 실행을 위해 RAM에로드됩니까?

나는이 질문을 언급했습니다 -BIOS는 BIOS 칩에서 읽거나 시작할 때 RAM으로 복사됩니까? . 그러나 그것은 나를 더 혼란스럽게했습니다. BIOS가 ROM에서로드되고 ROM이 별도의 칩인 경우 RAM의 세그먼트 주소에 대해 이야기하는 요점은 무엇입니까? 또한 BIOS 코드는 어디에로드됩니까? 마지막 1MiB의 실제 모드 주소 공간 또는 다른 위치에 있습니까?

누군가가 컴퓨터 시동에서 사용 된 메모리 주소를 포함한 첫 번째 BIOS 명령 실행까지의 단계를 나열 할 수 있다면 매우 도움이 될 것입니다

답변:


7

내가 그 질문에 대한 답을 썼을 때 , 불행히도 다른 답변 (그리고 다른 곳에서는 수퍼 유저)으로 예시 된 주제에 대한 민속의 지혜는 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 브리지)와 시스템 버스를 통해 펌웨어 명령과 데이터를 읽습니다.

추가 자료


고마워, 이것은 나에게 훨씬 분명해 보인다. 그러나 비 휘발성 RAM과 데이터를 읽을 때 BIOS가 어떤 방식으로 RAM과 연결되어 있습니까? 각 RAM 칩에는 BIOS가 제공됩니까? 나는 이것이 어리석은 것처럼 보일지 모르지만 나는이 주제의 초보자입니다.
Cygnus

NVRAM (Non-Volatile Random Access Memory)이라고 말하면 주 시스템 메모리 (Dynamic Random Access Memory, DRAM)로 사용되는 RAM과는 다른 기술을 언급하고 있습니다. 전원이 꺼진 상태에서도 펌웨어를 포함하는 메인 RAM과 분리 된 칩이므로 "비 휘발성"부분입니다.
Dougvj

@ Dougvj :이 경우 왜 별도의 FFFFFFF0 주소가 있습니까? NVRAM 크기가 펌웨어 크기가 아닙니까?
Cygnus

귀하의 질문은이 답변에 대한 의견이 아닌 실제 질문으로 더 잘 처리된다고 생각합니다. 오른쪽에있는 "관련"질문 중 일부를보고 이해를 돕기 위해 질문을 찾아보십시오. (기본 사항에 대한 몇 가지 질문과 답변을위한 수퍼 유저에게는 분명한 여지가 있습니다. 간단한 shufti에서 보입니다.)
JdeBP

@JdeBP : 나는 새로운 질문 superuser.com/questions/695769/…를
Cygnus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.