Bộ nhớ chỉ đế đọc (ROM: Read-only memory) là loại bộ nhớ lưu giữ dữ liệu vĩnh cửu hay bán vĩnh cửu. Nó được gọi là chỉ để đọc (read-only) vì nó không thể hay khó để ghi vào. ROM cũng được gọi là bộ nhớ ổn định (Nonvolatile memory) bởi vì bất kỳ dữ liệu nào lưu trữ trên ROM vẫn tồn tại ngay cả khi nguồn điện bị ngắt. Chính vì điều đó mà ROM là nơi lý tưởng để đặt tập lệnh khởi động của PC đó là phần mềm khởi động hệ thống (BIOS).

Lưu ý là ROM và RAM không phải trái ngược nhau, giống như nhiều người vẫn tưởng vậy. Trên thực tế, ROM theo nghĩa kỹ thuật là tập hợp con của RAM hệ thống. Nói một cách khác, một phần của khoảng địa chỉ bộ nhớ truy cập ngẫu nhiên hệ thống được ánh xạ vào trong một hay nhiều chip ROM. Điều đó là cần thiết để chứa phần mềm cho phép máy tính cá nhân khởi động; nếu không thì bộ xử lý sẽ không có chương trình trong bộ nhớ để vận hành khi được bật nguồn.

Bạn đã hiểu hết về phần cứng ROM?

Ví dụ, khi một máy tính cá nhân được bật nguồn, bộ xử lý tự động nhảy tới địa chỉ FFFFOh, mong đợi tìm thấy các tập lệnh nói bộ xử lý điều phải làm. Vị trí này chính xác là 16 byte từ cuối megabyte đầu tiên của khoảng bộ nhớ RAM, cùng như điểm cuối cùng của chính ROM. Nếu vị trí này được ánh xạ vào những chip RAM thông dụng, bất kỳ dữ liệu nào lưu trữ ở đó sẽ biến mất khi nguồn điện tắt, và bộ xử lý sẽ không tìm thấy tập lệnh để chạy vào lần tới khi nguồn điện được mở. Bằng cách đặt một chip ROM vào địa chỉ này, một chương trình khởi động hệ thống được nạp cố định vào ROM và sẽ luôn luôn có sẵn bất cứ lúc nào hệ thống được mở.

Thông thường, ROM hệ thống bắt đầu tại địa chỉ EOOOOh hay FOOOOh, là 128KB hay 64KB trước cho đến cuối megabyte đầu tiên. Bởi vì chip ROM thường lên tới kích cỡ 128KB, các chương trình ROM được cho phép chiếm toàn bộ phần còn lại 128KB của megabyte đầu tiên, bao gồm địa chỉ tập lệnh khởi động FFFFOh quan trọng, được định vị 16 byte từ cuối khoảng bộ nhớ BIOS. Một vài chip ROM bo mạch chủ lớn hơn, kích cỡ đến 256KB hay 512 KB. Mã thêm vào trong những chip này được cấu hình hoạt động như ROM card video (địa chỉ C0000h-C7FFFh) trên những bo mạch chủ với video dựng sẵn và có thể thậm chí chứa các trình điều khiển ROM thêm vào được cấu hình bất kỳ từ C8000h đến DFFFFh để hổ trợ các thiết bị trên bo thêm vào, như là thiết bị tiếp hợp SCSI hay mạng.

Một số người nghĩ rằng thật là kỳ lạ khi máy tính cá nhân bắt đầu ra thực thi các tập lệnh BIOS 16 byte từ nơi cuối của ROM, nhưng thiết kế này được xây dựng có mục đích vào các bộ xử lý Intel x86. Tất cả mà người lập trình ROM phải làm là đặt một tập lệnh JMP (jump) tại địa chỉ đó hướng dẫn bộ xử lý nháy đến nơi bắt đầu thật sự của ROM trong hầu hết các trường hợp, gần FOOOOh vào khoảng 64KB trước đó trong sơ đồ bộ nhớ. Nó giống như là quyết định đọc mỗi quyển sách khởi đầu 16 trang từ tận cùng và sau đó có tất cả nhà xuất bản sách đồng ý đặt một tập lệnh ở đó để nhảy ngược số trang cần thiết để đến trang 1. Bằng cách thiết lập vị trí khởi động bộ xử lý như vậy, Intel cho phép ROM phát triển lên bất kỳ kích cỡ nào. Trong khi giữ nó ở vùng trên của các địa chỉ trong megabyte đầu tiên khoảng địa chỉ bộ nhớ

Các ROM card tiếp hợp tự động được quét và đọc bởi ROM bo mạch chủ trong phần đầu của quy trình khởi động trong suốt POST. ROM bo mạch chủ quét một vùng RAM đặc biệt dành riêng cho các ROM card tiếp hợp (địa chỉ COOOO-DFFFFh) tìm kiếm các byte ký tự 55AAh. Vùng này chỉ ra sự bắt đầu của một ROM.

Tất cả các ROM tiếp hợp phải bắt đầu với 55AAh: nếu không bo mạch chủ sẽ không nhận diện được chúng. Byte thứ 3 cho biết kích cỡ của ROM trong các đơn vị 512 byte được gọi là các đoạn (Paragraph), và byte thứ 4 là sự bắt đầu thực của các chương trình trình điều khiển. Kích cỡ byte được dùng bởi ROM bo mạch chủ cho các mục đích kiểm tra. ROM bo mạch chủ sẽ cộng tất cả các byte vào ROM và chia tổng cho số byte. Kết quả sẽ tạo ra một số dư 1 OOh. Do đó, khi làm một ROM cho một bộ tiếp hợp, nhà lập trình sử dụng một byte “fill” vào điểm cuối để kiểm tra tổng có kết quả đúng. Bằng cách sử dụng kiểm tra tổng, bo mạch chủ kiểm tra từng ROM tiếp hợp trong suốt POST và đánh dấu bất cứ gì xuất hiện bị hư.

BIOS bo mạch chủ chạy các chương trình một cách tự động trong bất kỳ ROM tiếp hợp nào mà nó tỉm thấy trong suốt quá trình quét. Bạn có thể thấy điều đó trong hầu hết các hệ thống khi bạn bật máy tính lên, trong suốt quy trình POST bạn thấy BIOS video card khởi chạy và thông báo sự có mặt của nó.