Là một máy tính không có RAM, nhưng với một đĩa, tương đương với một máy tính có RAM?


18

Bộ nhớ được sử dụng cho nhiều thứ, như tôi hiểu. Nó phục vụ như một bộ đệm đĩa và chứa các hướng dẫn của chương trình, ngăn xếp & heap của chúng. Đây là một thử nghiệm suy nghĩ. Nếu người ta không quan tâm đến tốc độ hoặc thời gian để máy tính thực hiện việc bẻ khóa, thì bộ nhớ tối thiểu có thể có là bao nhiêu, giả sử một chiếc có một đĩa rất lớn? Có thể loại bỏ bộ nhớ và chỉ cần có một đĩa?

Bộ nhớ đệm rõ ràng là không cần thiết. Nếu chúng ta thiết lập không gian hoán đổi trên đĩa, ngăn xếp chương trình và heap cũng không cần bộ nhớ. Có bất cứ điều gì đòi hỏi phải có bộ nhớ?



3
Ý tưởng đằng sau câu hỏi này là gì?
Yves Daoust

12
Xác định "đĩa". Chúng tôi đang nhanh chóng tiến tới một thế giới không đĩa (tôi rất vui vì Terry Pratchett không phải chứng kiến ​​điều đó). Điều này có nghĩa là tất cả lưu trữ sẽ là một loại trạng thái rắn hoặc trạng thái rắn khác, đó là loại trả lời câu hỏi của bạn, mặc dù có thể đảo ngược.
Peter - Tái lập Monica

2
Bộ nhớ là bộ nhớ là bộ nhớ
Édouard

8
Theo tôi, bộ nhớ địa chỉ ngẫu nhiên không phải là một yêu cầu tốt nhất đối với máy tính. Băng từ máy Turing không phải là địa chỉ ngẫu nhiên. Không có gì ngăn cản bạn đọc / viết chỉ một bit trên mỗi khối nếu bạn muốn.
Édouard

Câu trả lời:


24

Chắc chắn rồi. Về nguyên tắc, với phần cứng phù hợp, bạn có thể có một đĩa, với mọi thứ được lưu trữ trên đĩa. Bất cứ khi nào CPU thực hiện lệnh tải hoặc lưu trữ, có thể có một số phần cứng biến nó thành đĩa đọc hoặc ghi. Nó cực kỳ chậm: trên một đĩa từ tính, mỗi lần tìm kiếm mất khoảng 10ms, do đó bạn có thể thực hiện khoảng 100 lần đọc và ghi truy cập ngẫu nhiên mỗi giây.

Một số hệ thống có bộ nhớ flash được ánh xạ vào không gian địa chỉ của chúng. Bộ nhớ flash cung cấp lưu trữ không biến động (liên tục). Vì vậy, trong một số cách, điều này giống với những gì bạn đề cập - mặc dù những hệ thống đó cũng thường có RAM.


6
@MSalters đưa ra một điểm tốt là nếu chúng ta sửa đổi một đĩa (hoặc lớp phần cứng bổ sung bên trên nó) để làm cho nó giống như RAM, thì chúng ta cũng có thể gọi nó là RAM. Vấn đề là câu hỏi "Có thể loại bỏ bộ nhớ và chỉ cần có một đĩa" quá mơ hồ. Chúng ta có ý nghĩa gì bởi bộ nhớ và đĩa? Chúng ta có nghĩa là những người tồn tại trong một máy tính để bàn hiện đại? Sau đó, câu trả lời là không. Chúng tôi có nghĩa là một số bộ nhớ giả định và đĩa? Sau đó, trong trường hợp đó, sự khác biệt giữa hai người bị mờ đi và câu hỏi tương đương với "có thể có một máy tính có RAM cơ học không?" .
JBentley

1
AS / 400 loại công trình như thế này. Có một Bộ lưu trữ một cấp và chỉ có một không gian địa chỉ duy nhất. Đĩa và bộ nhớ được kết hợp thành một bản tóm tắt lưu trữ duy nhất bởi phần sụn nền tảng, bản thân HĐH chỉ nhìn thấy một không gian lưu trữ thống nhất phẳng. Không có con trỏ, chỉ tham chiếu đối tượng. Các đối tượng được chuyển từ bộ nhớ sang đĩa và trở lại trong suốt bởi phần sụn nền tảng (BIOS trong PC-speak, SLIC trong AS / 400-speak). Sẽ không có gì khác biệt đối với HĐH và ứng dụng nếu bạn loại bỏ các đĩa và chỉ có RAM hoặc loại bỏ RAM và chỉ có các đĩa.
Jörg W Mittag

Ngoài ra tôi nghĩ rằng tuổi thọ của ổ cứng sẽ ngắn hơn nhiều. Và thậm chí tệ hơn đối với một ổ SSD. Rất có thể là lý do tại sao điện thoại Android không có trao đổi
Suici Doga

16

Về khả năng tính toán, người ta biết rằng mọi máy tính hiện đại đều có thể được mô phỏng bằng Máy Turing có bộ lưu trữ duy nhất là một tế bào băng tuyến tính duy nhất có thể được viết. Giả sử bạn có thể tiếp tục thêm dung lượng đĩa không giới hạn, một máy tính chỉ có ổ cứng cũng mạnh như vậy. Vì vậy, chắc chắn bạn có thể làm cho một máy tính mà không cần bộ nhớ.

Tất nhiên, không có ổ cứng "không giới hạn", nhưng cũng không có RAM không giới hạn.

Có một số vấn đề thực tế, ví dụ, bạn sẽ cần các quy ước để ánh xạ các khu vực và địa chỉ khác nhau trên đĩa, một hệ điều hành ghi vào đĩa để lưu trữ trung gian và địa chỉ đĩa được quản lý. Trong thực tế, cuối cùng bạn sẽ mô phỏng chặt chẽ RAM trên ổ cứng của bạn.


14

Câu hỏi không hoàn toàn là học thuật. Đó là một vấn đề của hồ sơ lịch sử rằng một trong những máy tính được sản xuất thương mại sớm nhất [xin lỗi, tôi không nhớ là máy nào] không có RAM - tất cả các chương trình được thực hiện bằng cách lấy hướng dẫn trực tiếp từ trống từ [một xi lanh quay với bề mặt từ tính bên ngoài (đĩa đến sau)]. Nó tương đối chậm, nhưng rẻ hơn nhiều so với các đối thủ. [đây là cách trở lại trong những ngày 'ống']

Thật thú vị, nó đi kèm với một công cụ đã lỗi thời được gọi là 'trình tối ưu hóa trình biên dịch' - tức là trình biên dịch không chỉ tạo ra các lệnh máy, nó đã viết chúng ra trống không liên tục để giảm thiểu, cho mỗi lệnh, lượng thời gian chờ trống quay sang bên tiếp theo.


3
Bạn có thể nghĩ về Stantec Zebra - archive.computerhistory.org/resource/text/St Chuẩn / . Họ vẫn còn một người trong khoa CS khi tôi đến trường đại học năm 1967.
David Marshall

3
Trên thực tế, tôi nghĩ rằng tôi có thể đã nghĩ về IBM 1408.
PMar

8
Xem thêm Câu chuyện về Mel ( catb.org/jargon/html/story-of-mel.html ) kể về một lập trình viên làm việc trên Royal McBee LPG-30, có bộ nhớ trống.
db48x

@ db48x: Tôi đã quên câu chuyện đó hay đến thế nào. Tôi có lẽ đã không đọc nó trong 10 năm.
Peter Cordes

7

Không. Ổ đĩa không phải là Địa chỉ ngẫu nhiên như RAM. Thay vào đó, chúng chặn các thiết bị lưu trữ. Bạn không thể đọc hoặc viết một byte từ họ. Và CPU của bạn không thể đọc toàn bộ một khu vực cùng một lúc, họ cần quyền truy cập ngẫu nhiên đó. Các hệ điều hành che giấu mức độ chi tiết này từ bạn, nhưng chúng làm như vậy bằng cách đọc toàn bộ bộ ghi vào RAM, sửa đổi nó và viết lại.

Kết quả là, bạn cần một khối lưu trữ truy cập ngẫu nhiên. Tuy nhiên, đây có thể là bộ đệm CPU, được tạo từ SRAM (một loại RAM nhanh).

Đó không chỉ là đĩa. Bộ nhớ flash là do thiết kế được xây dựng từ các khối, đó là chìa khóa cho giá thấp của nó. Nó thậm chí có khối lớn hơn nhiều so với các ổ đĩa thông thường, nhưng nó sử dụng RAM bên trong để ẩn nó khỏi HĐH.

Bạn có thể tạo bộ nhớ liên tục mà CPU có thể sử dụng trực tiếp. Bộ nhớ EEPROM sẽ nằm trong danh mục này (Bộ nhớ "Chỉ đọc" có thể lập trình được bằng điện tử - mặc dù "Tối ưu hóa đọc" sẽ là một mô tả thực tế tốt hơn).


5
Tôi nghĩ "Không" của bạn phải là "Có, nhưng nó sẽ yêu cầu các đĩa được xây dựng tùy chỉnh".
Taemyr

3
Bạn chắc chắn có thể đọc một byte, trên cả hai. Những gì bạn không thể làm là viết một byte đơn, bởi vì ghi cần một toàn bộ khối viết cùng một lúc. Tuy nhiên, về nguyên tắc, không có lý do nào khiến bạn không thể sửa đổi một khối bằng cách sao chép dữ liệu chưa sửa đổi từ khối ban đầu sang một khối mới, viết dữ liệu mới thay vào đó khi cần thiết, sau đó sao chép nó trở lại khối ban đầu. Bạn sẽ hao mòn đĩa của mình khá nhanh, nhưng dù sao đó cũng không thể tránh khỏi câu hỏi của OP.
Graham

3
Và "chặn" được thực hiện để sử dụng hiệu quả không gian đĩa vật lý: bạn cần không gian xung quanh từng phần dữ liệu "thực" để xác định khối, cung cấp không gian "bảo vệ" giữa các khối, v.v. Không có lý do kỹ thuật nào khiến các khối không thể là một byte dài (nhưng tốc độ sẽ giảm hơn nữa tùy theo dung lượng).
TripeHound

6
Trên thực tế, ngay cả RAM hiện tại không thực sự có địa chỉ byte - DDR3 hoạt động theo cụm và kích thước đọc / ghi tối thiểu là 8 từ 64 bit (tức là 64 byte); Tôi không phải là một chuyên gia, nhưng tôi cá rằng việc truy cập phù hợp cũng được yêu cầu. Tất cả điều này không giống với các đĩa cũ hơn, trong đó kích thước khối theo thứ tự 512 byte, vì vậy tôi nói rằng những sự phân biệt này chủ yếu là lịch sử, dòng thực sự mờ.
Matteo Italia

1
(ngoài ra, không có gì ngăn bạn sử dụng toàn bộ một khối - dù nó có kích thước như thế nào - chỉ để giữ một byte - hơi kém hiệu quả nhưng miễn là tôi không phải là người trả tiền cho các đĩa thì không sao)
Matteo Italia

1

Khi bạn sử dụng bộ nhớ ảo và cần xử lý lỗi trang, thì ít nhất, trình xử lý ngoại lệ xử lý lỗi trang, trình điều khiển đĩa đọc dữ liệu từ ổ cứng và trước tiên ghi các trang bẩn vào đĩa và các bảng trang cần để được trong RAM tất cả các thời gian. Bởi vì nếu chúng không có trong RAM, bạn không thể trao đổi chúng trở lại vào RAM. Thêm vào đó bạn cần không gian cho ít nhất một trang RAM.

Nếu bạn có CPU như Xeon 12 lõi đồ sộ với bộ nhớ cache 30 MB, có thể có một hệ thống không có RAM cũng không có ổ cứng, nhưng chỉ sử dụng bộ nhớ đệm. (Không chắc chắn nếu điều đó thực sự hoạt động hoặc nếu vì lý do nào đó cần phải có RAM).


IIRC, x86 có chế độ sử dụng bộ đệm trong làm bộ nhớ chính. Electronics.stackexchange.com/questions/16485/ có một số chi tiết. Tôi nghĩ đôi khi nó được gọi là "chế độ không lấp đầy", tức là CPU không cố thực sự lấp đầy các dòng bộ đệm từ bộ nhớ ngoài. Điều này có thể loại trừ sử dụng DMA cho I / O ổ cứng, vì "tác nhân hệ thống" không thể DMA vào bộ đệm L3. Nó có thể hoạt động trên Skylake với L4 eDRAM, vì nó được thiết lập dưới dạng bộ đệm phía bộ nhớ (không giống như Broadwell) có thể lưu trữ mọi thứ , kể cả DMA. Lập trình-IO vẫn sẽ hoạt động cho đĩa.
Peter Cordes

Tất nhiên, tại thời điểm đó, bạn đang chạy System-on-Chip với 128MiB RAM, đây là một con số khá lớn cách đây 15 năm. Chỉ với bộ nhớ cache L3 SRAM, vẫn còn 4 đến 8MiB trong chip máy tính để bàn, có thể đủ cho một Linux bị loại bỏ, nhưng đủ dễ dàng cho DOS. Nếu hầu hết mã của bạn là ROM, không phải RAM, thì tốt thôi.
Peter Cordes

1

Đó là khái niệm có thể. RAM chỉ là một mức bộ nhớ đệm. Có nhiều cấp độ bộ nhớ đệm trong một máy tính hiện đại (xem bộ nhớ cache L1, L2, L3 .. của CPU, tất nhiên là Ram, vùng trao đổi - đây là phần logic của đĩa được sử dụng làm RAM ...-), nếu bạn đặt hoặc thêm một, máy sẽ hoạt động. Ví dụ, một đĩa CD trực tiếp Ubuntu có thể không sử dụng mức bộ nhớ đệm của ổ cứng. Tuy nhiên, tôi không nghĩ có bất kỳ HĐH nào có thể hỗ trợ việc không có mức RAM.


1
Đó không phải là HĐH, mà là phần cứng được thiết kế yêu cầu các hướng dẫn phải vào ram (thực ra, được ánh xạ trên không gian địa chỉ).
Ángel

@Angel có thực sự cần thiết trong một hệ điều hành hiện đại rằng văn bản (hướng dẫn), bss, stack và heap được tải vào bộ nhớ để chương trình thực thi không? Họ không thể được trao đổi (đĩa)? Trong Linux, nói.
Tosh

1
Chúng ta đang nói về khoa học máy tính hay kỹ thuật máy tính? Tôi không biết việc triển khai HĐH, không phải ở cấp độ phần cứng, tôi chỉ dựa trên luận điểm của Church-Turing. Có thể điều này là không thể khi sử dụng phần cứng hiện có trên thị trường hoặc sử dụng các HĐH hiện có, nhưng có thể khả thi trong một kịch bản lý thuyết.
Picci

1
@Tosh không phải là vấn đề của HĐH mà là phần cứng. CPU của bạn thực thi một lệnh nằm ở địa chỉ bộ nhớ được trỏ bởi con trỏ lệnh. Vì vậy, chỉ cần có một đĩa sẽ không hoạt động (mà không thay đổi phần cứng của bạn). Trả lời câu hỏi của bạn, không phải tất cả các phần sẽ cần được tải vào bộ nhớ, trên thực tế, HĐH chỉ có thể tải chúng khi chương trình cố gắng truy cập chúng. Như một ví dụ cực đoan, bạn có thể chạy chương trình "từ đĩa" bằng cách sử dụng trình giả lập đọc một từ * tại một thời điểm từ hdd. Nhưng bạn sẽ cần trong bộ nhớ, vì vậy bạn vẫn sẽ cần một chút RAM.
Ángel

1
Xin lỗi, @Tosh: " trình giả lập của bạn sẽ cần phải có trong bộ nhớ".
Ángel

-1

Về mặt kỹ thuật, RAM là bộ nhớ biến động chính được sử dụng để cải thiện tốc độ xử lý. Khi mất điện, dữ liệu trong bộ nhớ chính sẽ bị mất. Nếu chúng tôi sử dụng đĩa, như bạn nói, chỉ có đĩa chứ không phải RAM, chúng tôi vẫn có thể chạy máy tính của mình nhưng sẽ có nhiều chi phí ghi hơn do đó làm chậm đáng kể hệ thống. Do đó, chúng tôi sử dụng RAM.


Chào mừng đến với CS.SE! Bạn có thể biện minh cho tuyên bố của mình rằng chi phí đọc-ghi nhiều hơn làm tăng khả năng xảy ra sự cố hệ thống thường xuyên không? Điều đó không đúng với tôi.
DW

Nó phụ thuộc vào việc bạn đang sử dụng. Giống như trong unix / Linux, có một khái niệm được gọi là bộ đệm. Nó có thể được sử dụng để lưu trữ các khối được tìm nạp trước hoặc các khối được đánh dấu để ghi chậm. Nhưng trong Windows hoặc Mac không có khái niệm như vậy. Do đó, bạn phải truy cập các khối cần thiết từ bộ lưu trữ thứ cấp. Bây giờ trong khi chạy các quy trình song song, chi phí đọc ghi sẽ tăng lên và do đó tốc độ xử lý sẽ giảm. Các quy trình sẽ không thể thực thi do đó làm chậm máy tính khiến nó bắt đầu bị treo và sau đó gặp sự cố
Sanket Gupte

2
Nghe có vẻ như một quan niệm sai lầm. Làm chậm máy tính không có nghĩa là máy tính sẽ bị sập.
DW
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.