Chúng ta có thể chạy linux trong một cái gì đó nhanh hơn RAM không?


21

Đây có lẽ là một câu hỏi ngớ ngẩn, và có thể là kết quả của một sự hiểu lầm. Tôi đang nghiên cứu CPU ngay bây giờ và đặc biệt là bộ nhớ. Tôi mới đọc về SRAM nhanh hơn DRAM bao nhiêu nhưng đắt hơn. SRAM rất đắt: Tôi đã mua sắm một chút và tìm thấy một thẻ SRAM chạy bằng pin với 16 MB với giá khoảng 400 đô la.

Gần đây, một người bạn đã đề cập rằng anh ta đang chạy linux linux trong RAM, và nó rất nhanh. Mặc dù vậy, tôi nhận thấy rằng linux lõi nhỏ có thể còn nhỏ hơn ... nhỏ tới 8 MB! Điều này khiến tôi suy nghĩ: chúng ta có thể chạy linux trong SRAM không? Là câu hỏi thậm chí được hình thành tốt?

Googling câu hỏi này tỏ ra không hiệu quả, nhưng nó đặt ra nhiều câu hỏi hơn. Có thể chạy linux trong L3 Cache không? Intel Core i7 có thể có L3 Cache đủ lớn để phù hợp với 8MB ... nhưng tôi có đang mắc một lỗi phân loại không? Sự khác biệt giữa cái này và 'nhúng' linux là gì?

Đó là câu hỏi: chúng ta có thể chạy linux trong SRAM hoặc L3 Cache không? Có gì nhanh hơn không? Linux chúng ta có thể nhanh đến mức nào!?

z.


3
Linux nhúng thường chạy trên ram, hoặc bộ nhớ không bay hơi. Các linux nhúng thường chỉ bị gỡ xuống để chỉ chạy trên phần cứng cụ thể hoặc sử dụng một số tùy chọn kernel ít phổ biến hơn như độ trễ thấp
Journeyman Geek

2
Tôi tự hỏi nếu có bất kỳ sử dụng thực tế cho câu hỏi này?
Robert Niestroj

4
+1 để sử dụng "linux" làm động từ (trong câu cuối cùng)!
Vorac

Câu trả lời:


20

Linux, hoặc bất kỳ HĐH nào khác không biết RAM hoạt động như thế nào. Miễn là bộ điều khiển bộ nhớ được cấu hình đúng (ví dụ: tốc độ làm mới được đặt cho không phải SRAM) thì HĐH không quan tâm là nó chạy trên bộ nhớ động đơn giản (RAM đơn giản), RAM chế độ trang nhanh (RAM RAM, từ C64-ish lần), RAM chế độ dữ liệu mở rộng (EDO), RAM đồng bộ (SDRAM), bất kỳ tốc độ dữ liệu kép SDRAMS (DDR 1/2/3) bất cứ điều gì.

Tất cả những người hỗ trợ đọc và viết từ những nơi ngẫu nhiên. Tất cả sẽ hoạt động.

Bây giờ bộ nhớ cache là một chút khác nhau. Bạn không phải viết cho nó để nội dung thay đổi. Điều đó sẽ cản trở. Tuy nhiên, nó có thể sử dụng được. Tôi biết rằng coreboot sử dụng bộ đệm như một loại bộ nhớ trong khi khởi động, trước khi bộ điều khiển bộ nhớ được cấu hình đúng. (Để biết chi tiết, hãy xem các video từ các cuộc đàm phán coreboot trong FOSDEM 2011).

Vì vậy, trong lý thuyết có, bạn có thể sử dụng nó.

NHƯNG : Đối với các tác vụ thực tế, một hệ thống có bộ nhớ 'tốc độ trung bình' 1 GB 'thông thường' sẽ hoạt động tốt hơn rất nhiều so với chỉ với một vài MB bộ nhớ siêu nhanh. Có nghĩa là bạn có ba lựa chọn:

  1. Xây dựng mọi thứ theo cách 'rẻ' bình thường. Nếu bạn cần thêm tốc độ, hãy thêm vài chục máy tính (tất cả đều có bộ nhớ 'chậm')
  2. Hoặc xây dựng một máy tính duy nhất với giá gấp chục lần và hiệu năng thấp hơn đáng kể gấp chục lần.

Ngoại trừ trong những trường hợp rất hiếm, cuối cùng là không hợp lý.


6
Nhiều CPU hỗ trợ chế độ "bộ nhớ cache như RAM" thông qua các thanh ghi cụ thể của mô hình CPU (MSR). Cũng lưu ý rằng SRAM tiêu thụ nhiều năng lượng hơn DRAM và đó cũng là một yếu tố thiết kế. Nếu bộ đệm của CPU đủ lớn hoặc hạt nhân đủ nhỏ, bạn có thể kích hoạt chế độ bộ nhớ cache này và giữ cho nó thực thi hoàn toàn trong SRAM trên CPU. Bạn sẽ có một lượng RAM hạn chế để chạy các chương trình, v.v. bởi vì AFAIK cache-as-RAM và chế độ bình thường sẽ không hoạt động đồng thời. Tôi có thể sai về điều đó mặc dù. Ngay cả khi nó đã làm, hầu hết tốc độ của CPU ngày nay là do sử dụng bộ đệm L2, L3.
LawrenceC

@Hennes có phải là Linux chỉ quan tâm đến (ánh xạ) địa chỉ bộ nhớ?
Alvin Wong

SDRAM là RAM đồng bộ D (ynamic), trong khi SRAM là RAM tĩnh. Tôi không biết bạn muốn nói đến đoạn nào trong đoạn đầu tiên và tôi không có đại diện để thực hiện các chỉnh sửa "tầm thường", nhưng có lẽ bạn có thể khắc phục điều đó? Ngoài ra, câu trả lời tốt.
một CVn

Tôi không ngại làm rõ, nhưng tôi không chắc những gì bạn muốn làm rõ. Bạn có thể thêm nó trong một bình luận và tôi sẽ chỉnh sửa nó.
Hennes

Khi tôi lần đầu tiên đọc bình luận này, tôi thấy, "Linux, hoặc bất kỳ HĐH nào khác đều chết vì không biết RAM hoạt động như thế nào". Sự cố của bạn là một điều tốt: Tôi nghĩ rằng tôi không có ảo tưởng rằng điều này sẽ "tốt hơn". Tôi chỉ tự hỏi liệu nó có thể được thực hiện.
Ziggy

8

Vâng, bạn có thể, và thực tế đây là cách nó đã được thực hiện, tự động. Các phần được sử dụng thường xuyên nhất của RAM được sao chép trong bộ đệm. Nếu tổng mức sử dụng RAM của bạn nhỏ hơn kích thước bộ đệm của bạn (như bạn cho là), cơ chế bộ đệm hiện tại sẽ sao chép mọi thứ trong RAM.

Lần duy nhất khi bộ nhớ cache sau đó được sao chép trở lại RAM bình thường là khi PC chuyển sang chế độ ngủ S3. Điều này là cần thiết bởi vì bộ nhớ cache được tắt trong chế độ S3.


1
Không phải tất cả có thể / sẽ được sao chép. Đối với cấu trúc bộ đệm Intel / x86: Nếu tôi có bộ đệm 256KiB và bộ đệm 1024KiB tôi có thể đọc địa chỉ 0. Nó sẽ được lưu trong bộ đệm ở vị trí 0. Sau đó tôi có thể đọc địa chỉ 1 và nó sẽ được lưu trong bộ đệm ở vị trí 1 Tuy nhiên, nếu tôi đọc địa chỉ từ (256Kib + 1) cũng sẽ được lưu trữ tại địa chỉ 1 trong bộ đệm. Bộ đệm sử dụng thêm SRAM (thẻ) để chỉ ra cái nào trong hai cái được lưu trữ. Điều này có nghĩa là đọc từ nhiều kích thước bộ nhớ cache sẽ không hoạt động tốt. (Lưu ý rằng đây sẽ là một điều hiếm gặp và thường có thể bị bỏ qua).
Hennes

Điều này là sâu sắc! Tại sao tôi lại vụng về nhét những gì tôi nghĩ là quan trọng vào L3 Cache khi tôi có thể để một đội quân thiên tài xác định điều tối ưu cần làm và lập trình CPU để thực hiện điều tối ưu đó. Đúng?
Ziggy

3

Nhiều CPU cho phép Cache được sử dụng làm RAM. Ví dụ, hầu hết các CPU x86 mới hơn có thể định cấu hình các khu vực nhất định dưới dạng ghi lại mà không điền vào các lần đọc qua MTRR. Điều này có thể được sử dụng để chỉ định một vùng của không gian địa chỉ là - hiệu quả - cache-as-ram.

Liệu điều này có lợi hay không là một câu hỏi khác - nó sẽ khóa kernel vào RAM, nhưng đồng thời sẽ làm giảm kích thước hiệu quả của bộ đệm. Cũng có thể có các tác dụng phụ (chẳng hạn như phải vô hiệu hóa bộ nhớ đệm cho phần còn lại của hệ thống) sẽ khiến việc này chậm hơn rất nhiều.


2

"chúng ta có thể chạy linux trong L3 Cache không?"

Không , điều này là không thể vì bộ nhớ cache không được xử lý trực tiếp / tuyến tính.
Do cách thiết kế bộ nhớ đệm, bộ đăng ký Bộ đếm chương trình CPU (IP) không thể trỏ đến một vị trí trong bộ nhớ đệm.

Bộ đệm CPU có "tính kết hợp" của riêng nó và tính kết hợp này xác định cách bộ nhớ "bình thường" được "ánh xạ" vào bộ nhớ đệm. Tính năng này của bộ nhớ đệm là một trong những lý do khiến bộ nhớ cache quá nhanh.


1

"chúng ta có thể chạy linux trong L3 Cache không?"

Không, Cache có sẵn cho một công việc cụ thể là giữ dữ liệu chương trình và hướng dẫn sẵn sàng khi bộ xử lý sẽ cần chúng. Dù sao bạn cũng sẽ tìm thấy hệ điều hành trong bộ đệm vì nó liên tục được sử dụng. Tải tất cả HĐH vào bộ đệm không hiệu quả vì bạn không sử dụng mọi đường dẫn mã trong kernel cùng một lúc.

"chúng ta có thể chạy linux trong SRAM không?"

Chắc chắn bạn có thể sử dụng SRAM được hỗ trợ bằng pin làm phân vùng khởi động, sau đó bạn có thể sử dụng cờ thực thi được nhúng tại chỗ. Điều đó có thể dẫn đến thời gian khởi động nhanh hơn và hoạt động nhanh hơn một chút. Tuy nhiên, một yếu tố chính là băng thông giữa L3 Cache và nơi chứa kernel (ổ đĩa khởi động hoặc RAM).

"Có gì nhanh hơn không? Chúng ta có thể linux nhanh đến mức nào!?"

Thông thường các nhà sản xuất phần cứng và nhà phát triển hệ điều hành đang làm việc để xử lý nhanh nhất có thể. Tuy nhiên, câu hỏi của bạn rất chung chung, bạn có muốn tăng tốc thời gian khởi động, tối ưu hóa truy cập hệ thống tệp, tăng tốc tính toán hay không. Một khi bạn có một câu hỏi cụ thể hơn, bạn chắc chắn có thể bắt đầu tìm ra nút cổ chai và loại bỏ nó. Ổ đĩa SRAM của bạn chắc chắn sẽ tăng tốc quá trình khởi động của bạn. Đến GUI trong 3 giây sẽ rất tuyệt để xem.


1

Quay trở lại thời 486, trước đây từng có những cỗ máy có tất cả RAM là SRAM. Điều này trở lại khi 8 MB là rất nhiều, nhưng dường như phù hợp với các ràng buộc của bạn. Tôi chắc chắn rằng 8 MB SRAM bây giờ rẻ hơn nhiều so với trước đây.

Vì vậy, bạn có thể chạy Linux trong SRAM nếu máy được tạo ra theo cách đó. Nó không phải là một lý thuyết; Nó đã được thực hiện.

Nhưng, không phải trong Cache. Cache có dây khác nhau, và quan trọng hơn là địa chỉ khác nhau. Bạn không thể giải quyết nó như nhau. Chunks được ánh xạ trong khác nhau, không phải là một đoạn liên tục. Và nội dung không nhất thiết là những gì bạn thấy trên đĩa - các chip Intel mới hơn thực hiện một kiểu "biên dịch" đúng lúc (nhiều mã hóa lại CISC => RISC-micro-op) trong đó các vi lệnh là những thứ kết thúc trong bộ nhớ cache. Nói tóm lại, những gì trong bộ nhớ cache không phải là chương trình của bạn, mà là một cái nhìn đã thay đổi về nó, vì vậy bạn không thể sử dụng nó làm đại diện cho bộ nhớ của chương trình nữa.

Câu hỏi là tại sao. Khác với "bởi vì tôi có thể" không có nhiều lý do cho việc này. Hệ thống Cache giúp bạn có được hầu hết các lợi ích về tốc độ với chi phí thấp hơn rất nhiều. Và hãy nhớ rằng chi phí không chỉ là đô la .... SRAM cần nhiều bóng bán dẫn hơn, có nghĩa là nhiều điện hơ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.