Chạy máy tính không có RAM? [bản sao]


14

Tôi đã đọc về thời gian tìm nạp CPU , ở đó tôi thấy rằng CPU mất ít thời gian hơn để truy cập dữ liệu từ RAM so với truy cập vào đĩa cứng và RAM có mặt để lưu trữ thông tin và dữ liệu của chương trình thực thi.

Sau đó, tôi tự hỏi về những gì sẽ xảy ra khi chúng ta chỉ sử dụng một đĩa cứng nhưng không có RAM?



1
@Cornelius cảm ơn bạn đã trả lời tôi sẽ kiểm tra xem :)
akash ujjwal 27/12/14

12
Điều gì xảy ra là một số tiếng bíp sau đó màn hình chuyển sang màu trắng.
arch-abit

1
Câu hỏi của tôi là, ít nhất tôi có thể kiểm tra xem card đồ họa có hoạt động không? Sẽ có video hoặc màn hình làm việc tối thiểu?
soái ca thủ công

Câu trả lời:


27

Tại một số điểm, điều này đặt ra câu hỏi về cái gì thậm chí được tính là "RAM". Có nhiều CPU và bộ vi điều khiển có nhiều bộ nhớ trên chip để chạy các hệ điều hành nhỏ không có chip RAM riêng biệt được gắn vào. Trong thực tế, điều này thực sự tương đối phổ biến trong thế giới của các hệ thống nhúng. Vì vậy, nếu bạn chỉ đề cập đến việc không có bất kỳ chip RAM riêng biệt nào được đính kèm, thì, vâng, bạn có thể làm điều đó với nhiều chip hiện tại, đặc biệt là các chip được thiết kế cho thế giới nhúng. Tôi đã tự làm việc đó. Tuy nhiên, vì sự khác biệt thực sự duy nhất giữa bộ nhớ trên chip có thể đánh địa chỉ và chip RAM riêng biệt chỉ là vị trí (và rõ ràng là độ trễ), nên hoàn toàn hợp lý khi coi bộ nhớ trên chip là RAM. Nếu bạn đang tính đó là RAM, thì số lượng hiện tại,

Nếu bạn đang đề cập đến một PC bình thường, thì không, bạn không thể chạy nó mà không có các thanh RAM riêng biệt được đính kèm, nhưng đó chỉ là do BIOS được thiết kế để không cố khởi động mà không cài đặt RAM (vì vậy, tất cả, vì tất cả Các hệ điều hành PC hiện đại yêu cầu RAM để chạy, đặc biệt là vì các máy x86 thường không cho phép bạn giải quyết trực tiếp bộ nhớ trên chip; nó chỉ được sử dụng làm bộ đệm.)

Cuối cùng, như Zeiss đã nói, không có lý do lý thuyết nào cho thấy bạn không thể thiết kế một máy tính để chạy mà không cần bất kỳ RAM nào, ngoài một vài thanh ghi. RAM tồn tại chỉ vì nó rẻ hơn bộ nhớ trên chip và nhanh hơn nhiều so với đĩa. Các máy tính hiện đại có một hệ thống ký ức bao gồm từ lớn, nhưng chậm đến rất nhanh, nhưng nhỏ. Hệ thống phân cấp bình thường là như thế này:

  • Các thanh ghi - Rất nhanh (có thể được vận hành trực tiếp bằng các lệnh CPU, thường không có độ trễ bổ sung), nhưng thường rất nhỏ (lõi xử lý 64 bit x86 chỉ có 16 thanh ghi mục đích chung, với mỗi thanh ghi có thể lưu trữ số 64 bit đơn.) Kích thước đăng ký thường nhỏ vì các thanh ghi rất đắt trên mỗi byte.
  • Bộ nhớ CPU - Vẫn rất nhanh (thường trễ 1-2 chu kỳ) và lớn hơn đáng kể so với các thanh ghi, nhưng vẫn nhỏ hơn nhiều (và nhanh hơn nhiều) so với DRAM bình thường. Bộ nhớ cache CPU cũng đắt hơn nhiều cho mỗi byte so với DRAM, đó là lý do tại sao nó thường nhỏ hơn nhiều. Ngoài ra, nhiều CPU thực sự có cấu trúc phân cấp ngay cả trong bộ đệm. Chúng thường có bộ đệm nhỏ hơn, nhanh hơn (L1 và L2) ngoài bộ đệm lớn hơn và chậm hơn (L3.)
  • DRAM (cái mà hầu hết mọi người nghĩ là 'RAM') - Chậm hơn nhiều so với bộ đệm (độ trễ truy cập có xu hướng hàng chục đến hàng trăm chu kỳ xung nhịp), nhưng rẻ hơn nhiều cho mỗi byte và do đó, thường lớn hơn nhiều so với bộ đệm. Tuy nhiên, DRAM vẫn nhanh hơn nhiều lần so với truy cập đĩa (thường nhanh hơn hàng trăm đến hàng nghìn lần.)
  • Đĩa - Đây là, một lần nữa, chậm hơn nhiều so với DRAM, nhưng nói chung cũng rẻ hơn nhiều cho mỗi byte và do đó, lớn hơn nhiều. Ngoài ra, các đĩa thường không biến động, nghĩa là chúng cho phép lưu dữ liệu ngay cả sau khi quá trình kết thúc (cũng như sau khi máy tính được khởi động lại.)

Lưu ý rằng toàn bộ lý do cho hệ thống phân cấp bộ nhớ chỉ đơn giản là kinh tế. Không có lý do lý thuyết (ít nhất là trong khoa học máy tính, ít nhất) tại sao chúng ta không thể có một terabyte các thanh ghi không bay hơi trên CPU chết. Vấn đề là nó sẽ cực kỳ khó khăn và tốn kém để xây dựng. Có hệ thống phân cấp từ một lượng nhỏ bộ nhớ rất đắt cho đến số lượng lớn bộ nhớ giá rẻ cho phép chúng tôi duy trì tốc độ nhanh với chi phí hợp lý.


Bây giờ cuối cùng tôi nhận được những gì tôi cần. Bạn đã trả lời Chính xác những gì tôi đang mong muốn. Cảm ơn bạn rất nhiều :)
akash ujjwal 27/12/14

Trên thực tế, lý do PC không khởi động mà không có RAM là BIOS, nếu mã BIOS không thể tìm thấy địa chỉ di chuyển trong RAM thì nó sẽ hủy bỏ. Tất cả những gì bạn sẽ nghe là tiếng vo ve của nguồn cung cấp năng lượng và tiếng ồn của quạt và có thể là đĩa quay - nhưng về cơ bản máy tính đã chết não. CPU không bao giờ có cơ hội để làm cho tất cả hoạt động. Vì vậy, có, RAM là khá quan trọng.
arch-abit

@ arch-abit yeah đúng, nhưng RAM có phải là thành phần cần thiết để chạy máy tính không?
akash ujjwal 27/12/14

2
Ngoài những gì @reirab nói, có thể chạy 'PC' mà không cần DRAM theo nghĩa thực thi các hướng dẫn - đây là chế độ mà hệ thống hoạt động trước khi bộ điều khiển DRAM được khởi tạo (được thực hiện bởi BIOS / EFI / Coreboot, v.v.). Tuy nhiên, không chắc là bạn sẽ có thể làm bất cứ điều gì hữu ích vì hầu hết các thành phần có thể sử dụng DMA .
Maciej Piechotka

1
Các thanh ghi cpu 32 bit x86 chỉ có 32 bit, không phải 64 và 64 bit x86 cpus có 32 chứ không phải 8 trong số chúng.
psusi

23

Về mặt lý thuyết, có thể thiết kế một máy tính để hoạt động với rất ít (giá trị một vài thanh ghi) hoặc không có RAM (tìm định nghĩa của máy Turing - thực sự có thể được xây dựng trong triển khai Conway's Life phù hợp lớn / nhanh mô phỏng).

Lý do tất cả các máy tính trong thế giới thực sử dụng RAM là, trước tiên, theo lịch sử: bộ nhớ lõi (nguyên mẫu cho RAM, chỉ bán dễ bay hơi) có khả năng lưu trữ lớn như trống từ hoặc đĩa (mặc dù nó xuất hiện sau thẻ đục lỗ và băng giấy - trước đây xuất hiện từ năm 1801 (vâng, bắt đầu từ thế kỷ 19; máy dệt Jacquard đã sử dụng các thẻ đục lỗ để tự động dệt một mô hình màu của các thập kỷ phức tạp tùy ý trước cả các công cụ khác biệt của Babbage) , RAM (như bộ nhớ lõi), là điện tử, nhanh hơn rất nhiều so với bất kỳ thiết bị nào phụ thuộc vào chuyển động vật lý của phương tiện lưu trữ để trình bày dữ liệu cho cơ chế đọc / ghi.

Một hệ thống hoặc độ phức tạp tương tự như một máy tính Windows hoặc Linux hiện đại chạy không có RAM (tương tự như máy Turing thực sự), sẽ mất nhiều ngày chỉ để khởi động và hàng giờ để cập nhật màn hình cho giao diện đồ họa ở độ phân giải hiện đại. Ngay cả một hệ điều hành chỉ có văn bản có thể so sánh với CP / M hoặc các phiên bản đầu tiên của DOS cũng sẽ mất một thời gian rất dài để đến dấu nhắc lệnh ban đầu.


4
Tôi nghĩ rằng bạn có thể coi một số DSP (bộ xử lý tín hiệu số) và các bộ vi xử lý tương tự là máy tính chạy không có RAM, vì về cơ bản chúng đang tính toán trên một luồng dữ liệu liên tục.
jamesqf

1
Tôi nghĩ rằng ước tính của bạn về sự chậm chạp của một máy "chỉ bộ nhớ ảo" là hơi phóng đại, nhưng về nguyên tắc là đúng.
leftaroundabout 27/12/14

1
Vì đĩa chậm hơn 1.000.000 so với RAM, tôi nghĩ rằng ước tính là, nếu có bất cứ điều gì, ở phía thấp.
Dancrumb

2
@Dancrumb Tôi không chắc 1.000.000 (lần?) Của bạn đến từ đâu. DDR3 SDRAM có thể cung cấp cho bạn theo thứ tự 10 GB / s , trong khi đó, ngay cả ổ cứng 7200 vòng / phút sẽ giúp bạn có được tuần tự khoảng 100 MB / s (0,1 GB / giây). Đó là hệ số 100; chắc chắn có ý nghĩa, nhưng khác xa so với 1.000.000 lần. Trong đó RAM vượt trội hơn nhiều so với ổ cứng đang tìm kiếm độ trễ, nhưng bạn có thể giảm bớt rất nhiều điều đó bằng cách sử dụng ổ SSD. DDR3 có độ trễ trong khu vực 10 ns và SSD nhanh có thể có độ trễ trong khu vực 10.000 ns (100k IOPS), với hệ số 1.000; vẫn còn xa 1.000.000.
một CVn

1
@PeterCordes Đã chỉnh sửa nên có vẻ như tôi không khẳng định Win / Linux có thể chạy mà không cần RAM.
Zeiss Ikon

10

Bạn có thể, bởi vì khi CPU x86 khởi động, bộ đệm L2 ban đầu là SRAM trước khi được sử dụng làm bộ đệm. Vì vậy, bạn có thể viết bios của riêng mình để không khởi tạo RAM và chỉ sử dụng một lượng nhỏ SRAM bên trong CPU dưới dạng RAM thay vì bộ đệm L2 / L3.

Chỉ cần đọc hướng dẫn BIOS từ các nhà sản xuất CPU.


4
+1 để nói rằng. Trên thực tế, mọi hệ thống x86 (máy tính) đều khởi động "không sử dụng ram". Mã Bios trước tiên phát hiện nếu có bất kỳ ram nào và tiếng bíp trong trường hợp không có. Mã này có thể chạy mà không cần ram;) (không thể thực hiện được nhiều thứ mà không có ram, vì chắc chắn các thanh ghi sẽ không đủ để xử lý ổ cứng và sử dụng nó "như ram")
Sebi

10

TẤT CẢ các CPU hiện đại, tiêu chuẩn, đa năng đều hoạt động cơ bản như thế này:

  • CPU duy trì một thanh ghi trỏ trong không gian địa chỉ của nó tới lệnh tiếp theo
  • CPU tìm nạp bất cứ thứ gì trong không gian địa chỉ đó và gia tăng đăng ký
  • Nếu hướng dẫn cần thêm thông tin, như địa chỉ đích hoặc toán hạng khác, thì nó cũng được tìm nạp
  • CPU thực thi lệnh
  • Nếu lệnh là một bước nhảy, gọi, trả lại, trả về từ ngắt hoặc nhánh, nó có thể sửa đổi thanh ghi trỏ đến hướng dẫn tiếp theo.
  • Nói lại

CPU tìm nạp bất cứ thứ gì trong không gian địa chỉ đó và gia tăng đăng ký

Điều gì có thể "sống" trong một không gian địa chỉ?

  • Không có gì (có thể trả về số không, dữ liệu ngẫu nhiên hoặc khiến CPU bị khóa)
  • RAM (RAM bo mạch chủ, RAM từ thiết bị PCI như bộ điều hợp đồ họa, v.v.)
  • ROM
  • Các thanh ghi của thiết bị I / O (bao gồm "các thiết bị I / O bên trong" như APIC cục bộ của CPU)
  • Các CPU hiện đại cho phép "bộ đệm như RAM" để một phần bộ đệm của CPU có thể xuất hiện trong không gian địa chỉ

Lưu ý "đĩa cứng" không có trong danh sách đó. Đĩa cứng không được kết nối trực tiếp với CPU. Dữ liệu đến và đi trên đĩa cứng bằng thiết bị I / O (bộ điều hợp máy chủ SATA) được kết nối với CPU.

Thiết bị I / O sử dụng DMA để tải / lưu dữ liệu đến / từ đĩa cứng. Điều này có nghĩa là thiết bị I / O trực tiếp đọc / ghi RAM - mà không cần sự can thiệp của CPU - và cũng phụ thuộc vào RAM ở đó. Nhưng nếu thiết bị I / O không được tải vào RAM, CPU không có cơ hội nhìn thấy nó.

Vì vậy, bạn không thể có hướng dẫn tìm nạp CPU trực tiếp từ đĩa cứng.


Điều gì xảy ra trong một lỗi trang là:

  • CPU cố gắng truy cập một trang bộ nhớ được đánh dấu là đã tráo đổi trong các bảng trang CPU cục bộ (luôn có trong RAM.)
  • Truy cập này gây ra ngoại lệ lỗi trang trong CPU.
  • CPU, hiện ở chế độ kernel, nhìn vào trang mà quá trình khác đang cố truy cập.
  • Hạt nhân thông báo một quá trình người dùng đang cố truy cập vào một trang bị tráo đổi và gọi quy trình I / O bình thường để trao đổi trang đó trở lại từ đĩa. Đây là quy trình tương tự sẽ được sử dụng khi tải / lưu bất kỳ dữ liệu nào khác từ đĩa. Nó không khác nhau chỉ vì CPU đang phân trang trong bộ nhớ bị tráo đổi.
  • CPU sau đó điều khiển trở lại quá trình bị gián đoạn, điều này tiếp tục như thể không có gì xảy ra.

Vì vậy, CPU cần lấy dữ liệu từ đĩa vì bộ nhớ bị tráo đổi là không khác nhau.


2
+1vì là câu trả lời duy nhất ở đây giải quyết vấn đề thực sự , không chỉ về những gì sẽ xảy ra , mà còn tại sao .

@ultrasawblade tại sao cpu không có cơ hội xem dữ liệu, ngay cả khi cpu yêu cầu một trang (thông tin) và nếu nó không có sẵn trong ram (bộ nhớ chính), thì đã xảy ra lỗi trang, sau đó cpu yêu cầu ổ cứng dữ liệu mong muốn. Điều đó có nghĩa là cpu cuối cùng phải vào đĩa cứng để biết thông tin cần thiết.
akash ujjwal 27/12/14

2
Xem các chỉnh sửa. Hạt nhân phân trang trong bộ nhớ hoán đổi không khác gì tải chương trình hoặc chương trình đọc / ghi vào đĩa. Nó chỉ xảy ra trong kernel và đằng sau hậu trường của một quá trình người dùng, nhưng không xảy ra đằng sau hậu trường của kernel.
LawrenceC

Lưu ý rằng ít nhất x86 có thể sử dụng bộ đệm như RAM với chế độ không lấp đầy, nhưng sau đó bạn đang ở trong cùng một thuyền với các bộ vi điều khiển đi kèm với một số RAM tích hợp. Chạy CPU chỉ với ROM và không có không gian địa chỉ có thể ghi là hợp lý (nếu tất cả trạng thái của bạn phù hợp với các thanh ghi, và lưu ý rằng các CPU x86 gần đây nhất có ba thanh ghi vector ZMM 512b ...) Nhưng đồng ý rằng nó không hợp lý không gian địa chỉ có thể đọc được cho mã (và GDT / LDT / IDT và các bảng khác cho x86).
Peter Cordes

7

Một máy tính cá nhân cần RAM để chạy. Mọi ứng dụng được khởi chạy từ đĩa cứng sẽ được sao chép vào RAM trước khi nó được thực thi.

Vì vậy, nếu bạn không có RAM trong máy tính, máy tính của bạn sẽ không khởi động, có thể cung cấp cho bạn một vài tiếng bíp cảnh báo để cho bạn biết rằng không có bất kỳ RAM nào được cài đặt.


5
Sau đó, bạn gõ vào trán của bạn và nói "Tôi không nên thử cài đặt các thanh RAM này trong môi trường trải thảm với độ ẩm dưới 10%, vào ngày 27 tháng 12 ở Bắc bán cầu?" Đúng?
arch-abit

@LPChip tại sao nó được lưu trữ cho Ram mục đích chính của nó là gì. Để làm cho hệ thống nhanh hoặc giảm thời gian truy cập, có bộ đệm sẵn có để làm điều đó. Tôi đúng hay sai?
akash ujjwal 27/12/14

1
RAM là bộ nhớ lưu trữ nhanh, truy cập đĩa chậm, lưu trữ bộ nhớ không biến động và bộ đệm CPU có sẵn vì những lý do khác.
Phòng thí nghiệm Fiasco

1
@FiascoLabs Trên thực tế, bộ đệm CPU có cùng lý do với RAM: Nó thực sự lưu trữ rất nhanh. Nó nhanh hơn nhiều so với RAM, nhưng đắt hơn trên mỗi byte.
đăng lại

Và một máy tính sẽ không chạy độc lập trên đó, do đó "các lý do khác"
Fiasco Labs

5

Máy tính sẽ không chạy. RAM là một phần thiết yếu của bài đăng thành công từ bo mạch chủ. Khi RAM không có hoặc bị hỏng, nhiều bo mạch chủ thường cung cấp mã tiếng bíp để chỉ ra nơi cần khắc phục sự cố.


Đúng, chúng là những vòng kim loại nhỏ sẽ bị từ hóa / khử từ. vi.wikipedia.org/wiki/Mag từ-core_memory (Trả lời nhận xét về các máy tính ống chân không cũ đã bị xóa)
Fiasco Labs

2

Trên thực tế, bạn có thể trong ít nhất hai trường hợp chạy máy tính mà không được gọi là RAM về mặt kỹ thuật

  1. Các "máy tính" cơ khí cũ đầu tiên (cấu trúc của Konrad Zuse và máy tính của Charles Babbage là các thiết bị cơ học không có động cơ RAM được gọi là máy tính)

  2. Một máy tính hiện đại không có RAM và chỉ có bộ xử lý (chip) có thanh ghi . Trong hầu hết các trường hợp, bạn có SRAM (bộ nhớ đệm) trên bộ xử lý nhưng bộ nhớ máy tính nhanh nhất được gọi là các thanh ghi nằm trên chip và các thanh ghi kỹ thuật trên chip không phải là RAM.


1
Cảm ơn câu trả lời này - lần đầu tiên tôi nhớ lại việc nghe về Zuse và các máy tính cơ điện đầu tiên của anh ấy (mặc dù những lần đọc đầu tiên tôi nhớ về các máy tính luôn nói về "rơle" là các bộ chuyển mạch, tất cả các máy tính đầu tiên khác dường như đã sử dụng ống chân không ).
Zeiss Ikon

1

Nó sẽ không chạy. Bo mạch chủ rất có thể sẽ phát ra tiếng bíp một cách bất thường và tắt. Nếu bạn không có đủ RAM, thậm chí 128 MB cho Windows XP, nó sẽ từ chối cài đặt (thực tế đã thử điều này với một máy tính cũ; một trong những con chip không được đặt chính xác). Vì vậy, với các thiết lập hiện tại là không thể. Ngay cả khi bạn có thể vô hiệu hóa kiểm tra bo mạch chủ, CPU không thể đọc dữ liệu trực tiếp từ đĩa cứng và cần RAM cho mọi hoạt động.

Tôi đoán, về mặt lý thuyết, có thể xây dựng một cỗ máy sử dụng ít hoặc không có RAM, nhưng nó sẽ không hiệu quả.

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.