Một CPU có thể hoạt động không có gì ngoài nguồn cung cấp năng lượng và ROM, chỉ sử dụng bộ đệm trong như RAM?


61

CPU (chẳng hạn như Intel i3 / i5 / i7 / Xeon) với RAM bộ nhớ cache trên chip có thể sử dụng như RAM duy nhất của nó, mà không có bất kỳ ngân hàng bộ nhớ ngoài nào được đính kèm không?

Hoặc phải có RAM ngoài và bộ nhớ cache không thể được truy cập hoặc sử dụng một mình?

CPU máy tính để bàn / máy chủ hiện đại thường có nhiều RAM bộ nhớ trong hơn so với nhiều máy tính của năm 1990 có trong toàn bộ bộ nhớ hệ thống, do đó cần có đủ số lượng lớn để chạy mã đơn giản.

Các CPU từ trước khi tồn tại bộ đệm như 6502 sẽ không thể làm được gì, vì RAM CPU bên trong chỉ chiếm một vài byte cho bộ đếm địa chỉ và bộ tích lũy.

Đây không phải là câu hỏi về việc chạy bất kỳ loại hệ điều hành hiện đại nào, nhưng chạy mã đơn giản được lập trình vào ROM tùy chỉnh hoặc nhập bằng tay với bàn phím nhập hex.


1
Hoàn toàn phụ thuộc vào CPU và ý nghĩa chính xác của bạn là "bộ đệm" vì một số CPU có ram của chúng được tích hợp và không cần chip bên ngoài.
PlasmaHH

42
về cơ bản, nếu bạn bao gồm bộ nhớ có thể định địa chỉ trong bộ xử lý, bạn xây dựng cái mà chúng ta gọi là vi điều khiển. Những tồn tại.
Marcus Müller

1
Ai nói bạn cần bất kỳ RAM nào?
Chris Stratton

1
Phụ thuộc vào cách bạn xác định "chức năng". Tôi cá là một chiếc i7 hoàn toàn có khả năng tạo nhiệt chỉ với một cục pin được kết nối với nó.
Dmitry Grigoryev

2
Có một số điều bạn có thể làm chỉ với một vài thanh ghi và không có thêm RAM. Ví dụ, một trình tạo hàm.
David Schwartz

Câu trả lời:


67

Xem tài khoản cực kỳ chi tiết này của trình tự khởi động PC: http://www.drdobbs.com/pool/boote-an-intel-arch architecture-system-par / 232300699? Pgno = 2

Vì không có DRAM tại thời điểm này, mã ban đầu hoạt động trong môi trường không có chồng. Hầu hết các bộ xử lý hiện đại đều có bộ đệm trong có thể được cấu hình là RAM để cung cấp ngăn xếp phần mềm. Các nhà phát triển phải viết mã cực kỳ chặt chẽ khi sử dụng tính năng RAM-as-RAM này bởi vì việc trục xuất sẽ không được chấp nhận đối với hệ thống tại thời điểm này trong trình tự khởi động; không có bộ nhớ để duy trì sự gắn kết. Đó là lý do tại sao các bộ xử lý hoạt động ở chế độ "Không bị trục xuất" (NEM) tại thời điểm này trong quá trình khởi động, khi chúng hoạt động trên cơ sở bộ nhớ cache như RAM. Trong NEM, lỗi dòng bộ đệm trong bộ xử lý sẽ không gây ra sự trục xuất. Phát triển mã với ngăn xếp phần mềm có sẵn dễ dàng hơn nhiều và mã khởi tạo thường thực hiện thiết lập tối thiểu để sử dụng ngăn xếp ngay cả trước khi khởi tạo DRAM.

Bạn có thể quan sát điều này bằng cách chạy PC không có RAM: nó sẽ phát một loạt tiếng bíp. Chương trình phát những chương trình này được chạy từ BIOS Flash ROM.

Tôi cũng đã thấy hành vi này trên một số bộ xử lý ARM. Sẽ có các thanh ghi cấu hình bên trong SoC cho phép bạn sử dụng bộ đệm dưới dạng RAM sớm trong chuỗi khởi động, để chạy chương trình tìm, liệt kê và định cấu hình DRAM.



2
Chi tiết khác về cách thức hoạt động của chế độ "cache-as-ram" (CAR) của x86 , trong câu trả lời đưa ra dưới dạng trường hợp sử dụng INVD(khi thoát chế độ CAR, làm mất hiệu lực bộ đệm thay vì có dữ liệu vô dụng được ghi vào bộ nhớ một cái gì đó có giá trị).
Peter Cordes

Có gì sai khi đuổi việc khi DRAM không có sẵn? Không phải là vấn đề đọc từ hơn là ghi vào RAM?
Mehrdad

14

Nói chung, bộ nhớ cache không thể đánh địa chỉ. Một chương trình không thể lưu trữ hoặc lấy dữ liệu có chủ ý từ nó.


2
+1 Đây là một câu trả lời rất sắc sảo. Bộ nhớ cache được tải và nghỉ hưu theo ý muốn từ các truy cập địa chỉ từ bộ nhớ chính, theo cách gần như ngẫu nhiên.
Ale..chenski

17
Vâng, đây là lý do tại sao nó yêu cầu một chế độ đặc biệt (như trong câu trả lời của pjc), hoặc một loại mánh khóe đặc biệt nào đó. Một tùy chọn khác (ngoài câu trả lời được chấp nhận) có thể là làm cho hệ thống nghĩ rằng nó có một số DRAM, nhưng bộ nhớ thực sự chỉ ghi lại dữ liệu và đọc tạo ra tất cả các số không (hoặc dữ liệu thực tế từ ROM cho một số vùng địa chỉ). Miễn là tất cả các tải được nhấn trong bộ đệm, hệ thống sẽ hoạt động chính xác. IDK đủ về cách x86 khởi động để biết liệu có thể vào chế độ dài 64 bit mà không cần bất kỳ bộ đệm ẩn thực sự nào không.
Peter Cordes

3
Tuy nhiên, CPU Skylake có bộ đệm eDRAM trong gói sử dụng nó làm bộ đệm phía bộ nhớ (giữa bộ điều khiển bộ nhớ và mọi thứ khác, không giống như trong Broadwell), do đó, nó thậm chí có thể lưu bộ nhớ truy cập DMA từ các thiết bị hệ thống không phải CPU hoặc tải CPU / lưu trữ vào các vùng bộ nhớ "không thể điều khiển" (bỏ qua L1 / L2 / L3).
Peter Cordes

3
@PeterCordes Tuy nhiên, câu trả lời không phải là "không" chỉ vì cần một chế độ đặc biệt - câu hỏi đặt ra là liệu chế độ đặc biệt có tồn tại hay không.
dùng253751

1
Câu hỏi là - điều gì xảy ra nếu bạn sử dụng bộ đệm tuy nhiên và đảm bảo rằng nó không bao giờ bị mất hoặc bị xóa - nó sẽ trở thành địa chỉ ngay khi một cái gì đó được ghi vào một địa chỉ trong RAM không tồn tại, phải không? Việc ghi thực tế bị bỏ trên sàn, nhưng dù sao thì đọc cũng được phục vụ từ bộ đệm?
rackandboneman

9

Mặc dù điều này không trực tiếp giải quyết các họ bộ xử lý được chỉ định trong câu hỏi, sơ đồ bên dưới sẽ hoạt động trên các bộ xử lý x86 trước đó, vì vậy, có thể hoạt động mà không cần RAM hoặc bộ đệm, mặc dù cách tiếp cận này đòi hỏi một số kỹ năng lập trình sáng tạo.

Quay trở lại những năm 1980, tôi đã bắt gặp một thiết kế cho một máy thu radio giải mã tín hiệu thời gian MSF được phát ở Anh. Thiết kế này đã sử dụng bộ xử lý Z80 và chỉ có ROM để lưu trữ chương trình. Tất cả quá trình xử lý và lưu trữ dữ liệu được thực hiện bằng các thanh ghi bên trong bộ xử lý. Điều này rõ ràng có nghĩa là không thể có các cuộc gọi chương trình con vì có bộ nhớ để giữ ngăn xếp.

Trước đó, chi phí RAM cao và vì đây là một dự án sở thích, việc giảm chi phí là rất quan trọng, ngoài việc nó là một bài tập học thuật thú vị. Điều này cũng có trước thời của các bộ vi điều khiển có sẵn rộng rãi (8751 với chi phí eprom hơn £ 100 IIRC).


Giới hạn bản thân với dữ liệu có thể được lưu trong sổ đăng ký thực sự giới hạn các chức năng hữu ích bạn có thể thực hiện. Tôi nghĩ rằng câu hỏi là về bộ nhớ cache trong bộ xử lý hiện đại.
Đánh dấu tiền chuộc

Tất nhiên, không cần phải nói rằng việc không sử dụng RAM sẽ hạn chế chức năng có thể. Ứng dụng được trích dẫn cho thấy mức độ khả thi với tài nguyên lưu trữ dữ liệu rất hạn chế, mặt trước radio và màn hình LCD.
uɐɪ

-3

Thông thường một CPU sẽ yêu cầu một đồng hồ bên ngoài. Nhưng với điều đó, có nó có thể.


1
Nó sẽ thích hợp để giải thích tại sao và trả lời kỹ lưỡng câu hỏi của người dùng. Câu trả lời này là về phía yếu.
Điện áp tăng đột biến
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.