Tại sao hướng dẫn BIOS đầu tiên được đặt tại 0xFFFFFFF0 (trên đỉnh RAM của RAM)?


51

Tôi biết rằng BIOS tải hướng dẫn đầu tiên từ 0xFFFFFFF0, nhưng tại sao địa chỉ cụ thể này? Tôi có một loạt các câu hỏi và hy vọng bạn có thể giúp tôi với một số trong số họ, ít nhất.

Những câu hỏi của tôi:

  • Tại sao hướng dẫn BIOS đầu tiên nằm ở "đỉnh" của RAM 4 GB?
  • Điều gì sẽ xảy ra nếu máy tính của tôi chỉ có 1 GB RAM?
  • Còn các hệ thống có RAM hơn 4 GB (ví dụ: 8 GB, 16 GB, v.v.) thì sao?
  • Tại sao ngăn xếp được khởi tạo với một số giá trị (trong trường hợp này, giá trị nằm ở 0xFFFFFFF0)?

Tôi đã đọc về điều đó chiều nay, và tôi vẫn không nhận được nó.


28
Một câu hỏi cho mỗi câu hỏi.
Cuộc đua nhẹ nhàng với Monica

4
Tôi thích cách câu trả lời được chấp nhận thậm chí không đề cập đến bộ nhớ phân đoạn hoặc chế độ địa chỉ, và nơi duy nhất mà dòng A20 được chạm vào là trong các bình luận.
imallett

Các Atmel AVR bắt đầu thực thi từ địa chỉ 0, trong khi Freescale HCS08 bắt đầu từ 0xFFFE, iirc. Mỗi họ bộ xử lý có những đặc điểm riêng.
Nick T

2
@imallett Tôi thích cách bạn quyết định phàn nàn về nó ở đây hơn là yêu cầu người đăng cập nhật câu trả lời của họ với thông tin thêm. Tôi cũng thích cách bạn nghĩ rằng kiến ​​thức này mà OP có thể phát hiện ra mặc dù mục đích của việc đặt câu hỏi là để có được kiến ​​thức về những thứ mà bây giờ người ta có thể hiểu đầy đủ.
MonkeyZeus

2
@MonkeyZeus cho đến nay, 9 người bình luận khác đã làm điều đó, và nó vẫn không thay đổi. Nhận xét của tôi, trong khi mỉa mai, không bỏ trống; đó là một cảnh báo cho cư dân mạng trong tương lai, cũng như cho OP.
imallett

Câu trả lời:


57

0xFFFFFFF0là nơi CPU tương thích x86 bắt đầu thực hiện các hướng dẫn khi được bật. Đó là khía cạnh cứng, không thể thay đổi (không có phần cứng thêm) của CPU và các loại CPU khác nhau hoạt động khác nhau.

Tại sao lệnh BIOS đầu tiên được đặt ở "đỉnh" của RAM 4 GB?

Nó nằm ở "trên cùng" của không gian địa chỉ 4 GB - và bật nguồn BIOS hoặc UEFI ROM được đặt để đáp ứng việc đọc các địa chỉ đó.

Lý thuyết của tôi về lý do tại sao điều này là:

Tất cả mọi thứ trong lập trình đều hoạt động tốt hơn với các địa chỉ tiếp giáp. Nhà thiết kế CPU không biết người xây dựng hệ thống sẽ muốn làm gì với CPU, do đó, CPU nên yêu cầu các địa chỉ đập vào giữa không gian được yêu cầu cho các mục đích khác nhau. Tốt hơn hết là giữ "tránh đường" ở trên cùng hoặc dưới cùng của không gian địa chỉ. Tất nhiên, hãy nhớ rằng quyết định này được đưa ra khi 8086 còn mới, chưa có MMU .

Trong 8086, các vectơ ngắt tồn tại ở vị trí bộ nhớ 0 trở lên. Các vectơ ngắt cần phải ở các địa chỉ đã biết và mong muốn có RAM để linh hoạt - tuy nhiên người thiết kế CPU không thể biết có bao nhiêu RAM trong một hệ thống. Vì vậy, bắt đầu từ 0 và làm việc có ý nghĩa đối với những người đó (vì không có hệ thống nào vào năm 1978 khi 8086 được phát minh sẽ có 4 Gbyte RAM - vì vậy, hy vọng RAM ở mức 0xFFFFFFF0 không phải là ý tưởng hay), và sau đó ROM sẽ phải ở ranh giới trên.

Tất nhiên, bắt đầu với ít nhất 80286, các vectơ ngắt có thể được chuyển đến vị trí bắt đầu khác 0, nhưng CPU x86 64 bit hiện đại vẫn khởi động ở chế độ 8086, vì vậy mọi thứ vẫn hoạt động theo cách cũ để tương thích (thật lố bịch vì có vẻ như năm 2015 vẫn cần CPU x86 của bạn để có thể chạy DOS).

Vì vậy, vì các vectơ ngắt bắt đầu từ 0 và hoạt động trở lên, ROM sẽ phải bắt đầu từ đầu và làm việc xuống dưới.

Điều gì sẽ xảy ra nếu máy tính của tôi chỉ có 1 GB RAM?

Một CPU 32 bit có 4.294.967.296 địa chỉ, được đánh số 0 (0x00000000) đến 4294967295 (0xFFFFFFFF). ROM có thể sống ở một số địa chỉ và RAM có thể sống ở những địa chỉ khác. Với MMU của CPU, điều này thậm chí có thể được bật khi đang di chuyển. RAM không phải sống ở tất cả các địa chỉ.

Chỉ với 1 GB RAM, một số địa chỉ sẽ không có bất cứ điều gì phản hồi khi chúng được đọc hoặc ghi vào. Điều này có thể khiến dữ liệu không hợp lệ được đọc khi các địa chỉ đó được truy cập hoặc khóa hệ thống.

Còn các hệ thống có RAM hơn 4 GB (ví dụ: 8 GB, 16 GB, v.v.) thì sao?

Giữ cho nó đơn giản hơn một chút: CPU 64 bit có nhiều địa chỉ hơn (đó là một trong những điều khiến chúng trở thành 64 bit - ví dụ 0x0000000000000000 đến 0xFFFFFFFFFFFFFFFF), do đó, RAM "phù hợp". Giả sử CPU ở chế độ dài . Cho đến lúc đó RAM ở đó, chỉ là không có địa chỉ.

Tại sao ngăn xếp được khởi tạo với một số giá trị (trong trường hợp này, giá trị nằm ở 0xFFFFFFF0)?

Tôi không thể tìm thấy ngay bất cứ thứ gì trên x86 gán con trỏ ngăn xếp khi bật nguồn, nhưng cuối cùng nó sẽ phải được gán lại bởi một thói quen khởi tạo bất cứ khi nào thói quen đó phát hiện ra có bao nhiêu RAM trong hệ thống. (@Eric Towers trong các bình luận bên dưới báo cáo rằng nó được đặt thành không khi bật nguồn.)


7
Tốt nhất nên nghĩ về không gian địa chỉ là một không gian lớn trong đó mọi thứ có thể được gán bởi phần cứng. Khi CPU đọc / ghi bộ nhớ, nó thực sự thực hiện giao tiếp qua xe buýt và phần cứng có thể đảm bảo những thứ như RAM hoặc ROM đang phản hồi ở các dải địa chỉ cụ thể. Vì vậy, phần cứng như vậy sẽ phải đảm bảo ROM phản hồi ở 0xFFFFFFF0 khi CPU được đặt lại. Không có nghĩa vụ cố hữu rằng ROM xuất hiện ngay sau RAM. Nó có thể xuất hiện bất cứ nơi nào phần cứng cũng nói với nó, tùy thuộc vào khả năng của phần cứng đó.
LawrenceC

4
Có thể có "lỗ hổng" hoặc không gian chưa được gán mà ROM, RAM hoặc bất cứ thứ gì không sử dụng - thường truy cập vào những chỗ đó sẽ gây ra khóa hệ thống.
LawrenceC

16
Câu trả lời này giả định rằng CPU có thể sử dụng 32 bit địa chỉ trong khi ở chế độ 16 bit. Nhưng ở chế độ 16 bit, nó chỉ có thể sử dụng 20 bit địa chỉ. Địa chỉ 0xFFFFFFF0không thể truy cập cho đến khi CPU được chuyển sang chế độ 32 bit. Lần trước tôi đã xem xét kỹ mã BIOS, điểm vào là 0xFFFF0.
kasperd

6
@ MichaelKjlingling tính toán của bạn là sai. Phân đoạn đã thay đổi và phần bù không được OR, chúng được thêm vào. Do đó, FFFF logic: FFF0 là vật lý (1) 0FFE0 (trong đó dẫn đầu 1 có mặt nếu A20 được bật).
Ruslan

9
@kasperd Có một hack tại chỗ - trình quản lý bộ nhớ có 12 bit cao được đặt thành 1 cho đến khi bước nhảy dài đầu tiên diễn ra. Vì vậy, có, về mặt logic, bạn đang làm việc với 0xFFFF0, nhưng trong thực tế, nó ánh xạ tới 0xFFFFFFF0. Tôi hy vọng điều này đã được thực hiện để tương thích với 8086 - cả CPU và CPU hiện đại hơn dường như đều sử dụng 0xFFFF0, nhưng CPU 32 bit thực sự truy cập 0xFFFFFFF0(được ánh xạ tới BIOS ROM).
Luaan

26

Nó không nằm ở đầu RAM; nó nằm trong ROM có địa chỉ nằm trên cùng của không gian địa chỉ bộ nhớ, cùng với bất kỳ bộ nhớ nào trên thẻ mở rộng, như bộ điều khiển Ethernet. Nó ở đó để nó không xung đột với RAM, ít nhất là cho đến khi bạn cài đặt 4 GB. Các hệ thống có RAM 4 GB trở lên có thể thực hiện hai điều để giải quyết xung đột. Các bo mạch chủ giá rẻ chỉ cần bỏ qua các phần của RAM xung đột với vị trí của ROM. Những người quyết định ánh xạ lại rằng RAM dường như có địa chỉ trên mốc 4 GB.

Tôi không chắc chắn những gì bạn đang hỏi về ngăn xếp. Nó chắc chắn không được khởi tạo trong ROM. Khi CPU đặt lại, ban đầu nó ở "chế độ thực", ở đó nó hoạt động giống như 8086 ban đầu và sử dụng địa chỉ được phân đoạn 16 bit, cho phép nó chỉ truy cập 1 MB bộ nhớ. Mã BIOS được đặt ở đầu 1 MB đó. BIOS chọn một nơi nào đó trong RAM để thiết lập ngăn xếp và tải và thực thi cung đầu tiên của ổ đĩa khởi động đầu tiên. Hệ điều hành tùy thuộc vào hệ điều hành 32 hoặc 64 bit một khi nó tiếp quản và thiết lập các ngăn xếp riêng của nó (một cho mỗi tác vụ / luồng).


1
Cảm ơn bạn rất nhiều vì câu trả lời, nhưng @LawrenceC cung cấp thêm chi tiết về câu trả lời của anh ấy và giúp tôi về cách thức toàn bộ hoạt động. Dẫu sao cũng cám ơn bạn! Tôi cung cấp cho bạn một upvote: 3
Fernando Paladini

13

Đầu tiên, điều này không liên quan gì đến RAM, thực sự. Chúng ta đang nói về không gian địa chỉ ở đây - ngay cả khi bạn chỉ có 16 MiB bộ nhớ, bạn vẫn có đủ 32 bit không gian địa chỉ trên CPU 32 bit.

Điều này đã trả lời câu hỏi đầu tiên của bạn, thực sự - tại thời điểm này được thiết kế, các PC trong thế giới thực không có gần 4 GiB bộ nhớ; chúng có nhiều hơn trong phạm vi 1-16 MiB của bộ nhớ. Không gian địa chỉ là, cho tất cả ý định và mục đích, miễn phí.

Bây giờ, tại sao 0xFFFFFFF0 chính xác? CPU không biết có bao nhiêu BIOS. Một số BIOS có thể chỉ mất vài kilobyte, trong khi một số khác có thể chiếm hết megabyte bộ nhớ - và tôi thậm chí không nhận được nhiều RAM tùy chọn khác nhau. CPU phải được kết nối với một số địa chỉ để bắt đầu - không có gì để cấu hình CPU. Nhưng đây chỉ là ánh xạ không gian địa chỉ - địa chỉ được ánh xạ trực tiếp vào chip ROM BIOS (vâng, điều này có nghĩa là bạn không có quyền truy cập vào toàn bộ 4 GiB RAM vào thời điểm này nếu bạn có nhiều - nhưng điều đó không có gì đặc biệt, nhiều thiết bị yêu cầu phạm vi riêng trong không gian địa chỉ). Trên CPU 32 bit, địa chỉ này cung cấp cho bạn 16 byte đầy đủ để thực hiện khởi tạo rất cơ bản - đủ để thiết lập các phân đoạn của bạn và, nếu cần, chế độ địa chỉ (hãy nhớ,khởi động "thủ tục" thực sự . Tại thời điểm này, bạn hoàn toàn không sử dụng RAM - tất cả chỉ là bản đồ ROM. Trên thực tế, RAM thậm chí chưa sẵn sàng để được sử dụng tại thời điểm này - đó là một trong những công việc của BIOS POST! Bây giờ, bạn có thể nghĩ - chế độ thực 16 bit truy cập địa chỉ 0xFFFFFFF0 như thế nào? Chắc chắn, có các phân đoạn, vì vậy bạn có không gian địa chỉ 20 bit, nhưng điều đó vẫn chưa đủ. Chà, có một mẹo đối với nó - 12 bit cao của địa chỉ được đặt cho đến khi bạn thực hiện bước nhảy dài đầu tiên, cho phép bạn truy cập vào không gian địa chỉ cao (trong khi từ chối quyền truy cập vào bất cứ thứ gì thấp hơn 0xFFF00000 - cho đến khi bạn thực hiện bước nhảy dài) .

Tất cả điều này là những điều chủ yếu được ẩn từ các lập trình viên (không đề cập đến người dùng) trên các hệ điều hành hiện đại. Bạn thường không có quyền truy cập vào bất cứ thứ gì ở mức độ thấp - một số thứ đã vượt quá khả năng cứu hộ (bạn không thể chuyển đổi chế độ CPU willy-nilly), một số được xử lý độc quyền bởi nhân hệ điều hành.

Vì vậy, một cái nhìn đẹp hơn đến từ mã hóa trường học cũ trên MS DOS. Một ví dụ điển hình khác về bộ nhớ thiết bị được ánh xạ trực tiếp vào không gian địa chỉ là truy cập trực tiếp vào bộ nhớ video. Ví dụ: nếu bạn muốn viết văn bản lên màn hình nhanh, bạn đã viết trực tiếp vào địa chỉ B800:0000(cộng với offset - ở chế độ văn bản 80x25, điều này có nghĩa là (y * 80 + x) * 2nếu bộ nhớ của tôi phục vụ tôi đúng - hai byte cho mỗi ký tự, theo từng dòng). Nếu bạn muốn vẽ từng pixel theo pixel, bạn đã sử dụng chế độ đồ họa và địa chỉ bắt đầu A000:0000(thông thường, 320x200 với 8 bit mỗi pixel). Làm bất cứ điều gì hiệu suất cao thường có nghĩa là đi sâu vào hướng dẫn sử dụng thiết bị, để tìm ra cách truy cập chúng trực tiếp.

Điều này tồn tại cho đến ngày nay - nó chỉ bị ẩn. Trên Windows, bạn có thể thấy các địa chỉ bộ nhớ được ánh xạ tới các thiết bị trong Trình quản lý thiết bị - chỉ cần mở các thuộc tính của một cái gì đó như thẻ mạng của bạn, đi đến tab Tài nguyên - tất cả các mục Phạm vi bộ nhớ là ánh xạ từ bộ nhớ thiết bị đến không gian địa chỉ chính của bạn. Và trên 32 bit, bạn sẽ thấy hầu hết các thiết bị đó được ánh xạ trên dấu 2 GiB (sau này là 3 GiB) - để giảm thiểu xung đột với bộ nhớ có thể sử dụng được, mặc dù đây không thực sự là vấn đề với bộ nhớ ảo ( các ứng dụng không nhận được bất cứ nơi nào gần không gian địa chỉ phần cứng thực - chúng có bộ nhớ ảo hóa riêng, có thể được ánh xạ tới RAM, ROM, thiết bị hoặc tệp trang chẳng hạn).

Đối với ngăn xếp, tốt, nó sẽ giúp hiểu rằng theo mặc định, ngăn xếp phát triển từ đầu. Vì vậy, nếu bạn thực hiện push, con trỏ ngăn xếp mới sẽ ở 0xFFFFFEC- nói cách khác, bạn không cố ghi vào địa chỉ init của BIOS :) Điều đó tất nhiên có nghĩa là các thường trình khởi động BIOS có thể sử dụng ngăn xếp một cách an toàn, trước khi ánh xạ lại ở đâu đó hữu ích hơn. Trong lập trình trường học cũ, trước khi phân trang trở thành mặc định thực tế, ngăn xếp thường bắt đầu vào cuối RAM và "tràn ngăn xếp" đã xảy ra khi bạn bắt đầu ghi đè lên bộ nhớ ứng dụng. Bảo vệ bộ nhớ đã thay đổi rất nhiều điều này, nhưng nói chung, nó duy trì khả năng tương thích ngược càng nhiều càng tốt - lưu ý làm thế nào ngay cả CPU x86-64 hiện đại nhất vẫn có thể khởi động MS DOS 5 - hoặc làm thế nào Windows vẫn có thể chạy nhiều ứng dụng DOS mà không có ý tưởng về phân trang.


3
Câu trả lời tuyệt vời, chỉ để mở rộng và nói rằng các bộ xử lý hiện đại đang bắt đầu giảm các bản hack như mặt nạ dòng A20 , vì vậy hỗ trợ cho các trường hợp cạnh cũ đang chết dần.
Cơ bản

2
Đến đoạn cuối: BIOS không thể sử dụng ngăn xếp "một cách tự do": nó không thể ghi vào ROM ( 0xFFFFFFECsẽ được ánh xạ). Điều này có nghĩa là không chỉ không pushmà ví dụ là không call. Chúng phải đợi cho đến khi RAM sẵn sàng.
Vee

7

Ngoài các điểm khác được đề cập, có thể hữu ích để hiểu địa chỉ là gì . Mặc dù các kiến ​​trúc mới hơn làm phức tạp mọi thứ, nhưng trong lịch sử, một máy trên mỗi chu kỳ bộ nhớ sẽ tạo địa chỉ mong muốn trên 20 đến 32 dây (tùy thuộc vào kiến ​​trúc, với một số thủ thuật đặc biệt cần lưu ý đồng thời cần một cặp hoặc bốn byte); các bộ phận khác nhau của hệ thống bộ nhớ sẽ kiểm tra trạng thái của các dây đó và tự kích hoạt khi chúng thấy các kết hợp nhất định của các giá trị cao và thấp.

Nếu một máy có 32 dây địa chỉ chỉ cần sử dụng 1MB RAM và 64KB ROM [khá hợp lý đối với một số bộ điều khiển nhúng] thì nó có thể kích hoạt RAM cho tất cả các địa chỉ nơi dây địa chỉ hàng đầu thấp và ROM cho tất cả các địa chỉ nơi có cao. 20 dây địa chỉ dưới cùng sau đó sẽ được gắn vào RAM để chọn một trong số 1.048.576 byte và 16 dây dưới cùng cũng sẽ được nối với ROM, để chọn một trong 65.536 byte. 11 dây địa chỉ còn lại đơn giản sẽ không được kết nối với bất cứ điều gì.

Trên một máy như vậy, truy cập vào địa chỉ 0x00100000-0x001FFFFF sẽ tương đương với truy cập vào địa chỉ RAM 0x00000000-0x000FFFFF. Tương tự như vậy với các địa chỉ 0x000200000-0x0002FFFFF hoặc 0x7FF00000-0x7FFFFFFFF. Các địa chỉ trên 0x80000000 sẽ đọc ROM, với mẫu 64K lặp lại trong toàn bộ không gian.

Mặc dù bộ xử lý có không gian địa chỉ 4.294.967.296 byte, nhưng không cần phải có phần cứng nhận ra nhiều địa chỉ riêng biệt. Đặt vectơ thiết lập lại gần đỉnh của không gian địa chỉ là một thiết kế sẽ hoạt động tốt bất kể hệ thống có bao nhiêu RAM và ROM và tránh được yêu cầu giải mã hoàn toàn không gian địa chỉ.


Điểm hay - Bạn sẽ không tìm thấy bất kỳ phần cứng 64 bit nào sẽ hỗ trợ mọi thứ gần với không gian bộ nhớ 64 bit có thể đánh địa chỉ (hoặc thậm chí là 1x10 ^ -12 của nó).
Cơ bản

3

Lý do của tôi là bởi vì chúng tôi đang sử dụng logic âm, cái kỹ thuật số (1) hoàn toàn không có lực căng (O volt) Chúng tôi chỉ phải đặt lực căng lên 4 bit cuối khi khởi tạo để bộ đếm chương trình (hoặc con trỏ lệnh) nằm ở 1111 1111 1111 1111 1111 1111 1111 0000. Chúng ta không phải giải quyết 28 bit trên vì hầu hết các cpu (cũ) là 16 bit và các nibble thấp hơn có thể được xử lý bằng một chip địa chỉ duy nhất trong những ngày cũ. Bây giờ vì chúng ta có 64 bit có khả năng tương thích với 32 bit và 32 bit đến 16 bit, nên khả năng tương tác phần cứng đã được cải thiện nhưng phương thức vẫn tồn tại. Ngoài ra, các bios không phải lúc nào cũng được lập trình 64 bit hoặc 32 bit. Ý kiến ​​của tôi cũng là vì ký ức không phải lúc nào cũng giống nhau, bios phải nằm ở cùng phân khúc đầu tiên. Cách chúng ta nhìn thấy địa chỉ bios không phải là địa chỉ thực sự mọi lúc. Chỉ là một sự dạy dỗ của tôi ...


2

khi đặt lại, một cpu tương thích 8088/8086 thực hiện các hướng dẫn ở 0FFFF0, thấp hơn 16 byte so với giới hạn 1 megabyte. thông thường ROM tại vị trí này (trong triển khai PC) sẽ là BIOS, vì vậy ở cuối ROM BIOS, có một bước nhảy đến khi bắt đầu rom BIOS.

hiển thị ở đây: bắt đầu vectơ và chữ ký 'ngày' đằng sau nó, IBM 5150 PC 8KB eprom dump bios ngày: 10/19/1981

00001FEE  FF                db 0xff
00001FEF  FF                db 0xff
00001FF0  EA5BE000F0        jmp word 0xf000:0xe05b
00001FF5  3130              xor [bx+si],si
00001FF7  2F                das
00001FF8  3139              xor [bx+di],di

lưu ý rằng địa chỉ là một rom 8KB $ 2000, đặt địa chỉ bắt đầu (JMP tuyệt đối xa, đến bất kỳ vị trí nào khác, trong trường hợp này trong bản rom 8KB, mặc dù không phải là địa chỉ thấp nhất có thể trong rom đó) tại $ FFFF: $ 0 được phân đoạn hoặc $ FFFF0 tuyến tính.

về khả năng tương thích: nếu một số 'bộ xử lý hiện tại' hoặc bộ xử lý hiện tại 'mong đợi' thì nó sẽ có nhiều F hơn trước địa chỉ, điều đó không thành vấn đề. để tương thích với các cpus mới hơn trong các hệ thống cũ, các dòng địa chỉ bổ sung vẫn không được kết nối và do đó dữ liệu trên cơ sở dữ liệu hoàn toàn giống nhau. miễn là các bit có ý nghĩa nhỏ nhất vẫn là FFFF0.

(trong một hệ thống chỉ có 1mb ram và rom được đặt ở cuối ram đó, và không có gì khác, nó sẽ vui vẻ 'nghĩ rằng' nó đang nói chuyện với địa chỉ cao hơn nhưng vẫn có được dữ liệu chính xác, bởi vì những triển khai đó chưa bao giờ nghe thấy dòng địa chỉ cao hơn A19)

lưu ý rằng thế giới không chỉ là 'chiếc' ... máy tính ibm là một 'tai nạn', những bộ xử lý này không bao giờ được thiết kế riêng cho 'chiếc' và đi vào rất nhiều thứ hơn là chỉ chiếc (như vệ tinh, vũ khí sytems, vv). Chế độ được bảo vệ 32 và 64 bit thường không được mong muốn. (chế độ ảo 8086 thú vị hơn rất nhiều vì lý do chọn phiên bản mới hơn (386+) chẳng hạn). do đó, có rất nhiều thứ để 'tương thích ngược' hơn là 'nó sẽ chạy dos'.


1

Bo mạch chủ đảm bảo rằng lệnh tại vectơ thiết lập lại là một bước nhảy đến vị trí bộ nhớ được ánh xạ tới điểm nhập BIOS. Bước nhảy này hoàn toàn xóa địa chỉ cơ sở ẩn có mặt khi bật nguồn. Tất cả các vị trí bộ nhớ này đều có nội dung phù hợp với CPU nhờ vào bản đồ bộ nhớ được giữ bởi chipset. Tất cả chúng đều được ánh xạ tới bộ nhớ flash chứa BIOS vì tại thời điểm này, các mô-đun RAM có crap ngẫu nhiên trong đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.