Chương 5: Lớn và Nhanh - Tận dụng Hệ thống bộ nhớ (Memory Hierarchy)

Chương 5: Tận dụng hệ thống bộ nhớ phân cấp lớn và nhanh. Tìm hiểu cách khai thác hiệu quả bộ nhớ để tối ưu hiệu năng chương trình.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Báo Cáo

2024

42
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Toàn cảnh về hệ thống phân cấp bộ nhớ trong kiến trúc máy tính

Trong lĩnh vực kiến trúc máy tính, mục tiêu cốt lõi là xây dựng những hệ thống vừa lớn về dung lượng lưu trữ, vừa nhanh về tốc độ truy xuất. Tuy nhiên, thực tế công nghệ cho thấy một sự đánh đổi cố hữu: bộ nhớ càng nhanh thì càng đắt đỏ và dung lượng càng nhỏ. Để giải quyết nghịch lý này, các kỹ sư đã phát triển hệ thống phân cấp bộ nhớ (memory hierarchy). Đây là một cấu trúc nhiều tầng, sắp xếp các loại bộ nhớ khác nhau dựa trên tốc độ, chi phí và dung lượng. Ở đỉnh kim tự tháp là các thanh ghi CPU và bộ nhớ đệm cache – cực nhanh nhưng dung lượng hạn chế. Tầng tiếp theo là bộ nhớ chính RAM, có dung lượng lớn hơn nhưng tốc độ chậm hơn. Cuối cùng là các thiết bị lưu trữ thứ cấp như ổ cứng SSD và HDD, cung cấp dung lượng khổng lồ với chi phí thấp nhất nhưng tốc độ truy cập chậm nhất. Nguyên tắc hoạt động của hệ thống này dựa trên tính cục bộ của tham chiếu (locality of reference), một quy luật cho thấy các chương trình máy tính có xu hướng truy cập lặp lại một nhóm nhỏ dữ liệu và lệnh trong một khoảng thời gian ngắn. Bằng cách di chuyển dữ liệu được sử dụng thường xuyên lên các tầng bộ nhớ nhanh hơn, hệ thống tạo ra ảo giác về một bộ nhớ duy nhất vừa lớn vừa nhanh, từ đó giúp tối ưu hóa hiệu năng tổng thể. Lịch sử phát triển của bộ nhớ, từ đường trì hoãn thủy ngân trong máy EDSAC đến bộ nhớ lõi từ và sự ra đời của DRAM, chính là minh chứng cho nỗ lực không ngừng nghỉ nhằm đạt được sự cân bằng tối ưu này.

1.1. Định nghĩa và vai trò của hệ thống phân cấp bộ nhớ

Hệ thống phân cấp bộ nhớ là một phương pháp tổ chức bộ nhớ trong máy tính thành nhiều cấp độ khác nhau. Mỗi cấp độ đại diện cho một sự đánh đổi giữa tốc độ, dung lượng và chi phí. Mục tiêu chính là kết hợp các ưu điểm của từng loại bộ nhớ để tạo ra một hệ thống tổng thể có hiệu năng cao và chi phí hợp lý. Vai trò của hệ thống này là giảm thiểu thời gian truy cập trung bình của CPU đến dữ liệu. Bằng cách đặt dữ liệu thường xuyên được truy cập vào các cấp bộ nhớ nhanh nhất (như cache), hệ thống có thể đáp ứng phần lớn các yêu cầu của CPU mà không cần phải truy cập đến các cấp bộ nhớ chậm hơn như RAM hay ổ đĩa. Điều này trực tiếp cải thiện tốc độ xử lý và khả năng phản hồi của toàn bộ máy tính.

1.2. Lịch sử phát triển công nghệ bộ nhớ từ core đến DRAM

Lịch sử công nghệ bộ nhớ là một hành trình đầy đột phá. Những máy tính đầu tiên như ENIAC sử dụng ống chân không, rất đắt đỏ và hạn chế. Sự ra đời của đường trì hoãn thủy ngân, dù không đáng tin cậy, đã mở đường cho máy tính lưu trữ chương trình. Bước ngoặt thực sự đến với bộ nhớ lõi từ (core memory) do J. Forrester phát minh vào đầu những năm 1950. Maurice Wilkes, một người tiên phong trong ngành, từng nhận định: "sự phát minh của một hình thức bộ nhớ đáng tin cậy, cụ thể là bộ nhớ core... đã đặt máy tính lên chân của chúng". Bộ nhớ lõi từ rẻ hơn, nhanh hơn và đáng tin cậy hơn, thống trị ngành công nghiệp trong gần 20 năm. Cuối cùng, sự phát triển của mạch tích hợp đã dẫn đến sự ra đời của bộ nhớ chính RAM động (DRAM) vào năm 1970, tạo ra một cuộc cách mạng mới về dung lượng và chi phí, định hình nên các hệ thống máy tính hiện đại.

II. Vượt qua rào cản hiệu năng Độ trễ và băng thông bộ nhớ

Một trong những thách thức lớn nhất trong kiến trúc máy tính hiện đại là khoảng cách ngày càng lớn giữa tốc độ xử lý của CPU và tốc độ của bộ nhớ chính. Hiện tượng này được gọi là "bức tường bộ nhớ" (Memory Wall), nơi CPU thường xuyên phải chờ đợi dữ liệu từ RAM, làm lãng phí các chu kỳ xử lý quý giá. Hai thông số quan trọng quyết định hiệu năng của hệ thống bộ nhớ là độ trễ bộ nhớ (memory latency) và băng thông bộ nhớ (memory bandwidth). Độ trễ là khoảng thời gian từ khi CPU gửi yêu cầu truy cập dữ liệu cho đến khi nhận được dữ liệu đó. Băng thông là tốc độ tối đa mà dữ liệu có thể được truyền giữa bộ nhớ và CPU. Để vượt qua rào cản này, việc tối ưu hóa bộ nhớ trở nên cực kỳ quan trọng. Các kỹ thuật như sử dụng bộ nhớ đệm cache được thiết kế để giảm độ trễ hiệu quả. Khi dữ liệu cần thiết đã có sẵn trong cache (gọi là cache hit), CPU có thể truy cập gần như tức thì. Ngược lại, khi dữ liệu không có trong cache (gọi là cache miss), CPU phải truy cập vào RAM, gây ra một khoảng trễ đáng kể. Tỷ lệ cache hit và cache miss là chỉ số then chốt để đánh giá hiệu quả của hệ thống phân cấp bộ nhớ. Việc giảm thiểu số lần cache miss và xử lý chúng một cách hiệu quả là chìa khóa để tối ưu hóa hiệu năng hệ thống.

2.1. Phân tích hiện tượng bức tường bộ nhớ Memory Wall

"Bức tường bộ nhớ" là thuật ngữ mô tả sự chênh lệch ngày càng tăng về tốc độ giữa bộ vi xử lý (CPU) và bộ nhớ truy cập ngẫu nhiên (RAM). Trong khi tốc độ của CPU tăng theo định luật Moore, tốc độ của DRAM lại cải thiện chậm hơn nhiều. Hậu quả là CPU thường xuyên rơi vào trạng thái chờ, không thể thực hiện tính toán vì dữ liệu chưa được nạp kịp từ bộ nhớ chính RAM. Hiện tượng này tạo ra một nút thắt cổ chai nghiêm trọng, giới hạn hiệu năng thực tế của các hệ thống máy tính, ngay cả khi CPU có sức mạnh xử lý khổng lồ. Việc giảm thiểu tác động của bức tường bộ nhớ là động lực chính đằng sau sự phát triển của các kỹ thuật tối ưu hóa bộ nhớ phức tạp.

2.2. Ảnh hưởng của cache hit và cache miss đến hiệu suất

Hiệu suất của một hệ thống máy tính phụ thuộc rất lớn vào tỷ lệ cache hit và cache miss. Một cache hit xảy ra khi dữ liệu mà CPU yêu cầu được tìm thấy trong bộ nhớ đệm cache. Đây là kịch bản lý tưởng, vì thời gian truy cập cache cực kỳ nhanh. Ngược lại, một cache miss xảy ra khi dữ liệu không có trong cache, buộc hệ thống phải tìm kiếm ở cấp bộ nhớ chậm hơn (RAM). Mỗi lần cache miss gây ra một hình phạt về thời gian (miss penalty), làm đình trệ quá trình xử lý của CPU. Tỷ lệ cache miss cao sẽ làm giảm đáng kể hiệu năng tổng thể, vì thời gian truy cập bộ nhớ trung bình (AMAT) tăng lên. Do đó, mục tiêu của các nhà thiết kế hệ thống là tối đa hóa tỷ lệ cache hit thông qua việc thiết kế cache hiệu quả và các thuật toán thông minh.

III. Bí quyết tăng tốc Tận dụng bộ nhớ đệm cache hiệu quả

Để thu hẹp khoảng cách hiệu năng giữa CPU và bộ nhớ chính, bộ nhớ đệm cache là giải pháp quan trọng nhất. Đây là một bộ nhớ nhỏ, tốc độ cao, nằm giữa CPU và RAM. Ý tưởng về cache được Wilkes đề xuất lần đầu tiên vào năm 1965, và máy tính thương mại đầu tiên tích hợp cache là IBM 360/85. Nguyên lý hoạt động của cache dựa trên tính cục bộ của tham chiếu. Khi CPU yêu cầu một dữ liệu, hệ thống sẽ kiểm tra cache trước tiên. Nếu có (cache hit), dữ liệu được trả về ngay lập tức. Nếu không (cache miss), hệ thống sẽ truy cập RAM, lấy dữ liệu cần thiết cùng với một khối dữ liệu xung quanh (cache line) và nạp vào cache, với giả định rằng dữ liệu lân cận cũng sẽ sớm được cần đến. Quá trình quản lý bộ nhớ trong cache bao gồm các chiến lược phức tạp như ánh xạ (direct-mapped, set-associative, fully-associative) để xác định vị trí lưu trữ dữ liệu, và các chính sách thay thế (LRU, FIFO) để quyết định khối dữ liệu nào sẽ bị loại bỏ khi cache đầy. Việc lựa chọn đúng cấu trúc dữ liệu và bộ nhớ trong lập trình cũng ảnh hưởng lớn đến hiệu quả của cache, vì nó có thể tăng cường hoặc phá vỡ tính cục bộ. Tối ưu hóa bộ nhớ ở cấp độ cache là một lĩnh vực nghiên cứu không ngừng, với sự ra đời của các hệ thống cache đa cấp (L1, L2, L3) để đáp ứng nhu cầu ngày càng tăng về hiệu năng.

3.1. Cấu trúc và nguyên lý hoạt động của bộ nhớ đệm cache

Bộ nhớ đệm cache được cấu tạo từ các chip SRAM (Static RAM) tốc độ cao. Về mặt cấu trúc, cache được chia thành các đơn vị nhỏ gọi là các dòng cache (cache lines) hoặc khối cache (cache blocks). Mỗi dòng chứa một bản sao của một khối dữ liệu từ bộ nhớ chính RAM, cùng với một thẻ (tag) để định danh địa chỉ gốc của khối dữ liệu đó. Khi CPU cần truy cập một địa chỉ bộ nhớ, phần cứng cache sẽ so sánh thẻ của địa chỉ đó với các thẻ đang được lưu trong cache. Nếu tìm thấy một thẻ khớp và dòng cache đó hợp lệ, một cache hit xảy ra. Nếu không, một cache miss xảy ra, và khối dữ liệu tương ứng sẽ được nạp từ RAM vào cache.

3.2. Các chiến lược ánh xạ và chính sách thay thế trong cache

Để quản lý dữ liệu hiệu quả, cache sử dụng các chiến lược ánh xạ và chính sách thay thế. Chiến lược ánh xạ quyết định một khối dữ liệu từ RAM có thể được đặt vào vị trí nào trong cache. Ba loại chính là: ánh xạ trực tiếp (Direct Mapped), liên kết tập hợp (Set-Associative), và liên kết toàn phần (Fully-Associative). Mỗi loại có ưu nhược điểm riêng về độ phức tạp phần cứng và tỷ lệ xung đột (conflict miss). Khi cache đầy và cần nạp một khối dữ liệu mới, chính sách thay thế sẽ được kích hoạt để chọn một khối cũ để loại bỏ. Các chính sách phổ biến bao gồm LRU (Least Recently Used - loại bỏ khối ít được sử dụng gần đây nhất) và FIFO (First-In, First-Out). Việc lựa chọn chiến lược và chính sách phù hợp là rất quan trọng để tối ưu hóa hiệu năng cache.

IV. Nguyên tắc vàng Khai thác tính cục bộ của tham chiếu locality

Hiệu quả của toàn bộ hệ thống phân cấp bộ nhớ phụ thuộc vào một nguyên tắc cơ bản nhưng vô cùng mạnh mẽ: tính cục bộ của tham chiếu (locality of reference). Nguyên tắc này phát biểu rằng các chương trình máy tính không truy cập bộ nhớ một cách ngẫu nhiên. Thay vào đó, chúng có xu hướng tập trung vào một vùng nhỏ của không gian địa chỉ trong một khoảng thời gian nhất định. Tính cục bộ được chia thành hai loại chính. Thứ nhất là tính cục bộ về thời gian (temporal locality), nghĩa là nếu một vị trí bộ nhớ được truy cập, nó có khả năng cao sẽ được truy cập lại trong tương lai gần. Các vòng lặp và biến đếm là ví dụ điển hình. Thứ hai là tính cục bộ về không gian (spatial locality), nghĩa là nếu một vị trí bộ nhớ được truy cập, các vị trí lân cận nó cũng có khả năng cao sẽ được truy cập ngay sau đó. Việc duyệt qua các phần tử của một mảng là ví dụ kinh điển. Bộ nhớ đệm cache khai thác cả hai loại tính cục bộ này. Nó giữ lại các dữ liệu vừa được truy cập (khai thác tính cục bộ thời gian) và nạp cả một khối dữ liệu xung quanh thay vì chỉ một từ (khai thác tính cục bộ không gian). Việc hiểu và viết mã nguồn tận dụng tốt tính cục bộ của tham chiếu là một kỹ năng quan trọng để tối ưu hóa hiệu năng phần mềm.

4.1. Phân biệt tính cục bộ về thời gian Temporal Locality

Tính cục bộ về thời gian đề cập đến xu hướng một chương trình truy cập lại cùng một vị trí bộ nhớ nhiều lần trong một khoảng thời gian ngắn. Ví dụ, trong một vòng lặp, các lệnh của vòng lặp và các biến điều khiển được truy cập liên tục. Hệ thống phân cấp bộ nhớ khai thác điều này bằng cách giữ các dữ liệu và lệnh được truy cập gần đây trong các cấp bộ nhớ nhanh hơn như cache. Khi CPU cần truy cập lại chúng, dữ liệu đã sẵn sàng, dẫn đến cache hit và giảm thiểu độ trễ bộ nhớ.

4.2. Khai thác tính cục bộ về không gian Spatial Locality

Tính cục bộ về không gian mô tả xu hướng một chương trình truy cập các vị trí bộ nhớ gần nhau về mặt địa chỉ. Ví dụ phổ biến nhất là việc xử lý tuần tự các phần tử trong một mảng. Khi một phần tử được truy cập, rất có thể phần tử tiếp theo cũng sẽ sớm được cần đến. Hệ thống bộ nhớ tận dụng điều này bằng cách nạp toàn bộ một khối dữ liệu (cache line) vào cache mỗi khi có một cache miss. Điều này giúp các lần truy cập tiếp theo vào các dữ liệu lân cận trở thành cache hit, cải thiện đáng kể băng thông bộ nhớ hiệu quả.

V. Mở rộng không gian Giải pháp quản lý bộ nhớ với bộ nhớ ảo

Bên cạnh việc tăng tốc độ, quản lý bộ nhớ hiệu quả cũng là một thách thức lớn, đặc biệt khi các ứng dụng ngày càng yêu cầu nhiều bộ nhớ hơn dung lượng RAM vật lý có sẵn. Bộ nhớ ảo (Virtual Memory) là một kỹ thuật tinh vi giải quyết vấn đề này. Được triển khai lần đầu trên máy tính Atlas tại Đại học Manchester, bộ nhớ ảo tạo ra một không gian địa chỉ ảo cho mỗi tiến trình, lớn hơn nhiều so với bộ nhớ vật lý thực tế. Hệ điều hành, với sự hỗ trợ của phần cứng (MMU - Memory Management Unit), sẽ ánh xạ các địa chỉ ảo này tới các địa chỉ vật lý trong RAM. Khi một tiến trình cần truy cập một trang (page) dữ liệu chưa có trong RAM, một lỗi trang (page fault) sẽ xảy ra. Hệ điều hành sẽ xử lý lỗi này bằng cách tạm dừng tiến trình, tìm trang dữ liệu đó trên ổ đĩa, nạp nó vào một khung trang (frame) trống trong RAM, và sau đó cho tiến trình tiếp tục hoạt động. Bộ nhớ ảo không chỉ cho phép chạy các chương trình lớn hơn bộ nhớ vật lý mà còn cung cấp cơ chế bảo vệ bộ nhớ, ngăn các tiến trình can thiệp vào không gian nhớ của nhau. Nó cũng đơn giản hóa việc chia sẻ bộ nhớ giữa các tiến trình. Kỹ thuật này sử dụng ổ đĩa như một phần mở rộng của RAM, tạo thành một cấp thấp nhất trong hệ thống phân cấp bộ nhớ và là nền tảng cho các hệ điều hành đa nhiệm hiện đại.

5.1. Khái niệm và lợi ích của công nghệ bộ nhớ ảo

Bộ nhớ ảo là một cơ chế cho phép hệ điều hành cung cấp cho mỗi tiến trình một không gian địa chỉ riêng, liên tục và độc lập, gọi là không gian địa chỉ ảo. Lợi ích chính của nó bao gồm: (1) Cho phép chạy các chương trình có kích thước lớn hơn bộ nhớ vật lý có sẵn bằng cách sử dụng đĩa cứng làm bộ nhớ phụ. (2) Cung cấp cơ chế bảo vệ, cô lập không gian bộ nhớ của các tiến trình, ngăn chặn một tiến trình lỗi làm hỏng các tiến trình khác. (3) Đơn giản hóa việc quản lý bộ nhớ và lập trình, vì lập trình viên không cần lo lắng về địa chỉ vật lý thực tế. (4) Cho phép chia sẻ bộ nhớ hiệu quả giữa các tiến trình.

5.2. Quá trình xử lý lỗi trang Page Fault trong hệ thống

Lỗi trang (page fault) là một ngắt (interrupt) do phần cứng tạo ra khi một chương trình cố gắng truy cập một trang trong không gian địa chỉ ảo của nó nhưng trang đó hiện không được nạp vào bộ nhớ vật lý (RAM). Khi lỗi trang xảy ra, quá trình xử lý diễn ra như sau: CPU chuyển quyền điều khiển cho hệ điều hành. Hệ điều hành xác định vị trí của trang bị thiếu trên đĩa. Nó tìm một khung trang trống trong RAM (hoặc chọn một trang để thay thế nếu RAM đã đầy). Sau đó, hệ điều hành đọc trang từ đĩa vào khung trang đã chọn và cập nhật bảng trang (page table) để ánh xạ địa chỉ ảo tới địa chỉ vật lý mới. Cuối cùng, quyền điều khiển được trả lại cho chương trình, và lệnh gây ra lỗi trang được thực thi lại, lần này sẽ thành công.

VI. Tương lai của hệ thống bộ nhớ Hướng tới tối ưu hóa hiệu năng

Lịch sử của hệ thống phân cấp bộ nhớ là câu chuyện về sự đổi mới không ngừng để theo kịp tốc độ phát triển của CPU. Từ việc phát minh ra cache, bộ nhớ ảo, đến các hệ thống RAID (Redundant Arrays of Inexpensive Disks) giúp tăng cường hiệu suất và độ tin cậy của lưu trữ đĩa, mỗi bước tiến đều nhằm mục đích tối ưu hóa hiệu năng tổng thể. Trong tương lai, xu hướng này sẽ tiếp tục với những thách thức và cơ hội mới. Sự phát triển của các bộ xử lý đa lõi (multi-core) đặt ra yêu cầu cao hơn về băng thông bộ nhớ và các cơ chế đảm bảo tính nhất quán của cache (cache coherency) giữa các lõi. Các công nghệ bộ nhớ mới như bộ nhớ không bay hơi (Non-Volatile Memory - NVM) đang dần xóa nhòa ranh giới giữa RAM và lưu trữ thứ cấp, hứa hẹn những kiến trúc bộ nhớ mới. Các kỹ thuật tối ưu hóa bộ nhớ tiên tiến hơn ở cả cấp độ phần cứng và phần mềm, chẳng hạn như prefetching (tìm nạp trước) thông minh, tối ưu hóa của trình biên dịch, và các cấu trúc dữ liệu và bộ nhớ thân thiện với cache (cache-friendly data structures), sẽ đóng vai trò ngày càng quan trọng. Cuối cùng, mục tiêu vẫn không thay đổi: xây dựng một hệ thống bộ nhớ có thể cung cấp dữ liệu cho bộ xử lý một cách nhanh chóng và hiệu quả nhất, giúp khai thác tối đa tiềm năng của kiến trúc máy tính hiện đại.

6.1. Thách thức và xu hướng phát triển hệ thống bộ nhớ đa lõi

Với sự phổ biến của bộ xử lý đa lõi, hệ thống phân cấp bộ nhớ đối mặt với những thách thức mới. Việc chia sẻ bộ nhớ đệm cache (ví dụ cache L3) giữa nhiều lõi đòi hỏi các cơ chế phức tạp để quản lý truy cập và đảm bảo tính nhất quán dữ liệu. Băng thông bộ nhớ trở thành một nút thắt cổ chai nghiêm trọng hơn khi nhiều lõi cùng lúc yêu cầu dữ liệu từ bộ nhớ chính RAM. Các giao thức snooping và directory-based được sử dụng để duy trì cache coherency, nhưng chúng cũng làm tăng độ phức tạp và độ trễ bộ nhớ. Xu hướng tương lai bao gồm việc thiết kế các hệ thống cache trên chip (on-chip) thông minh hơn và các kết nối liên mạng (interconnects) tốc độ cao để giảm thiểu tranh chấp tài nguyên.

6.2. Vai trò của tối ưu hóa trình biên dịch và cấu trúc dữ liệu

Phần mềm đóng một vai trò không thể thiếu trong việc tối ưu hóa hiệu năng bộ nhớ. Các trình biên dịch hiện đại có khả năng phân tích mã nguồn và tự động sắp xếp lại các lệnh và dữ liệu để cải thiện tính cục bộ của tham chiếu. Các kỹ thuật như lồng vòng lặp (loop interchange) và đệm khối (blocking) có thể thay đổi thứ tự truy cập bộ nhớ để tăng tỷ lệ cache hit. Ngoài ra, việc lập trình viên chủ động lựa chọn và thiết kế các cấu trúc dữ liệu và bộ nhớ phù hợp là cực kỳ quan trọng. Sử dụng các cấu trúc dữ liệu có các phần tử được lưu trữ liền kề trong bộ nhớ sẽ giúp khai thác tối đa tính cục bộ không gian, mang lại hiệu suất vượt trội so với các cấu trúc phân mảnh.

11/09/2025

Trích đoạn nội dung tài liệu

BO THONG TIN TRUYEN THONG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THONG KHOA CÔNG NGHỆ THÔNG TIN 2 BAI BAO CAO Ban dich thuat Chuong 5 LON VA NHANH: TAN DUNG HE THONG BO NHO (Large and Fast: Exploiting Memory Hierarchy) Phan: e Góc nhìn Lịch sử và Đọc thêm (5 18) se Bài tập (5 19) Sinh viên thực hiện Họ tên: Phạm Văn Phú Thành phố Hồ Chí Minh, 03/2024 MSSV: N22DCCN160 Muc luc Trang 5.18 Quan diém Lich str va Doc thém „1 Lưu trữ Đĩa 8 Một Lịch sử Rất Ngắn về Bộ Nhớ Flash .12 Cơ chế Bảo VỆ. 0n Hà Hà 1 12112111 11111111111111 1111111111111 11Ex11T11111e1111111111111111 11 te, 13 Lịch sử Ngắn gọn về Hệ điều hành Hiện đại 13 250105 .c c sec s c s sc s es sec s s sec s esc se s es se s ecstaue s ues es 19 Thành phố Hồ Chí Minh, 03/2024 5 18 Quan diém Lich su va Doc thém Phan lich sử này cung cấp một cái nhìn tổng quan về các công nghệ bộ nhớ, từ đường trì hoãn thủy ngân đến DRAM, sự phát minh của hệ thống bộ nhớ và cơ chế bảo vệ, và kết thúc với một lược sử ngắn về các hệ điều hành, bao gồm CTSS, MULTICS, UNIX, BSD UNIX, MS- DOS, Windows và Linux. Sự phát triên của hầu hết các khái niệm trong chương này đã được thúc đây bởi những tiền bộ đột phá trong công nghệ chúng ta sử dụng cho bộ nhớ. Trước khi chúng ta thảo luận về việc hệ thống bộ nhớ đã phát trién ra sao, hãy cùng điểm qua một chuyến tham quan ngắn về sự phát triên của công nghệ bộ nhớ.

ENIAC chỉ có một sé lượng nhỏ các thanh ghi (khoảng 20) đề lưu trữ và triển khai chúng với cùng một công nghệ Ô ống chân không cơ bản mà nó sử dụng đê xây dựng mạch logic. Tuy nhiên, công nghệ ống chân không quá đất đỏ đề sử dụng đề xây dựng một dung lượng bộ nhớ lon hon. Eckert đã đưa ra ý tưởng phát triển một công nghệ mới dựa trên đường trì hoãn thủy ngân. Trong công nghệ nảy, tín hiệu điện được chuyên đối thành rung động được gửi xuống một ống thủy ngân, đến đầu kia, nơi chúng được đọc ra và tuần hoàn.

Một đường trì hoãn thủy ngân có thê lưu trữ khoảng 0. Mặc dù các bịt này được truy cập theo chiều tuần tự, đường trì hoãn thủy ngân rẻ hơn khoảng trăm lần so với bộ nhớ ông chân không. Các đường trì hoãn thủy ngân đầu tiên được biết đến đã được phát triển tại Cambridge cho EDSAC.1 cho thấy các đường trì hoãn thủy ngân của EDSAC, có 32 bê và 512 từ 36 bịt. Mặc dù dây trễ thủy ngân đã đem lại sự tiến bộ đáng kể, nhưng chúng vẫn rất không đáng tin cậy và khá đắt đỏ.

Đột phá đến với việc phát minh bộ nhớ lõi bởi J. Forrester tại MIT trong khuôn khổ dự án Whirlwind vào đầu những năm 1950 (xem Hình e5. Bộ nhớ lõi sử dụng lõi từ sắt, có thê từ tính hóa, và sau khi từ tính hóa, nó hoạt động như một bộ nhớ (giống như băng ghi âm từ tính lưu trữ thông tin). Một tập hợp dây điện chạy qua trung tâm của lõi, có kích thước từ 0.0 milimét, cho phép đọc giá trị được lưu trữ trên bất kỳ lõi từ sắt nao.

Whirlwind cuối cùng đã bao gồm một bộ nhớ lõi với 2048 từ 16-bit, trong duong 32Kbit. Bd nhớ lõi là một bước tiến lớn: nó rẻ hơn, nhanh hơn, dang tin cậy hơn và có mật độ cao hơn. Bộ nhớ lõi tốt hơn đáng kê so với các phương án khác, và chỉ sau vải năm kề từ khi được phát minh, nó đã trở thành công nghệ bộ nhớ chiếm ưu thế và duy trì vị thế đó trong gần 20 năm. “một sự phái triển duy nhất đã đặt máy tính lên chân của chúng, đó là sự phát mình của một hình thức bộ nhỏ đáng tin cậy, cụ thể là bộ nhó core.

Chỉ phí của nó là hợp lý, nó đáng tin cậy và, bởi vì nó đáng tin cậy, nó có thể được tạo ra lớn theo thời gian. Maurice IWilkes, Hồi ký của một Người tiên phong Máy tính, 1985.1 Các đường trễ thủy ngân trong EDSAC. Công nghệ này đã làm cho việc xây dựng máy tính lưu trữ chương trình đầu tiên trở thành hiện thực. Kỹ sư trẻ trong bức ảnh này không ai khác chính là Maurice Wilkes, kiến trúc sư trưởng cua EDSAC.” Page 2| 42 474 Chapter 5 Large and Fast: Exploiting Memory Hierarchy “Hình e5.2 Một mặt phẳng bộ nhớ core từ Whirlwind chứa 256 cores được sắp xếp trong một mảng 16 x 16.

Bộ nhớ core được phát minh cho Whirlwind, được sử dụng cho các vấn đề phòng không, và hiện nay đang được trưng bày tại Smithsonian. (Ngẫu nhiên, Ken Olsen, người sáng lập Digital và là chủ tịch của nó trong 20 năm, đã xây dựng máy tính kiểm tra những bộ nhớ core này; đó là máy tính đầu tiên của anh ấy.)” Công nghệ thay thế cho bộ nhớ core chính là công nghệ mà chúng ta đang sử dụng cho cả logic và bộ nhớ: mạch tích hợp. Trong khi các thanh ghi được xây dựng từ bộ nhớ transistor hóa vào những năm 1960, và máy tính IBM sử dụng bộ nhớ transistor hóa cho cửa hàng microcode và bộ nhớ cache vào năm 1970, việc xây dựng bộ nhớ chính từ transistor vẫn còn quá đắt đỏ cho đến khi phát triển mạch tích hợp. Với mạch tích hợp, việc xây dựng DRAM (bộ nhớ truy cập ngẫu nhiên động - xem Phụ lục A để biết mô tả trở nên khả thi.

Các DRAM đầu tiên được xây dựng tại Intel vào năm 1970, và các máy tính sử dụng bộ nhớ DRAM (như một tùy chọn tốc độ cao Page 3| 42 474 Chapter 5 Large and Fast: Exploiting Memory Hierarchy so với core) xuất hiện ngay sau đó; chúng sử dụng DRAM 1 Kbit. Thực tế, truyền thông máy tính cho rằng Intel đã phát triển vi xử lý một phần để giúp.3 Một bo mạch DRAM sớm. Bo mạch này sử dụng các chip 18Kbit.3 cho thấy một bo mạch DRAM sớm. Vào cuối những năm 1970, bộ nhớ core đã trở thành một hiện vật lịch sử.

Giống nhưữ công nghệ bộ nhớ core đã cho phép một sự mở rộng khổng lồ về kích thước bộ nhớ, công nghệ DRAM đã cho phép một sự mở rộng tương đương. Vào những năm 1990, nhiều máy tính cá nhân có nhiều bộ nhớ như những máy tính lớn nhất sử dụng bộ nhớ core từng có. Ngày nay, DRAM thường được đóng gói với nhiều chip trên một bo mạch nhỏ gọi là DIMM (module bộ nhớ nội suy kép). SIMM (module bộ nhớ nội suy đơn) được hiển thị trong Hình e5.4 chứa tổng cộng 1 MB và được bán với giá khoảng 5 đô la vào năm 1997.

Tính đến năm 2004, DIMM có sẵn với dụng lượng lên đến 1024 MB và được bán với giá khoảng 100 đô la. Trong khi DRAM sẽ tiếp tục là công nghệ bộ nhớ chủ đạo trong một thời Page 4| 42 474 Chapter 5 Large and Fast: Exploiting Memory Hierarchy gian tới, các đổi mới trong việc đóng gói DRAM để cung cấp cả băng thông cao hơn và mật độ lớn hơn đang tiếp tục.4 Một SIMM 1MB, được xây dựng vào năm 19866, sử dụng các chip 1Mbit. SIMM này được bán với giá khoảng 5 đô la/MB vào năm 1997. Tính đến năm 2006, hầu hết bộ nhớ chính được đóng gói trong DIMM tương tự như này, mặc dù sử dụng các chip bộ nhớ mật độ cao hơn nhiều (1 Gbit).

Sự Phát Triển của Hệ thống Bộ Nhớ Mặc dù những người tiên phong của ngành công nghệ thông tin đã nhìn thấy nhu cầu về một hệ thống bộ nhớ và đã đặt ra thuật ngữ, việc quản lý tự động hai cấp độ được đề xuất lần đầu tiên bởi Kilburn và các đồng nghiệp của ông và được thực hiện tại Đại học Manchester với máy tính Atlas, máy tính này đã thực hiện bộ nhớ ảo. Đây là năm trước khi IBM 360 được công bố. IBM đã lên kế hoạch bao gồm bộ nhớ ảo với thế hệ tiếp theo (Hệ thống/370), nhưng hệ điều hành OS/360 không đáp ứng được thách thức vào năm 1970. Bộ nhớ ảo đã được công bố cho gia đình 370 vào năm 1972, và đó là máy tính mà thuật ngữ bộ đệm dịch chuyển-lookaside được đặt ra.

Tất cả máy tính nhúng ngoại trừ một số đều sử dụng bộ nhớ ảo ngày nay. Các vấn đề về không gian địa chỉ không đủ đã làm phiền các nhà thiết kế nhiều lần. Các kiến trúc sư của PDP-11 đã xác định không gian địa chỉ nhỏ là lỗi kiến trúc duy nhất mà từ đó khó có thể phục hồi. Khi PDP-11 được thiết kế, mật độ bộ nhớ core đang tăng ở một tốc độ rất chậm, và sự cạnh tranh từ 100 công ty minicomputer khác có nghĩa là DEC có thể không có một sản phẩm cạnh tranh về chi phí nếu mỗi địa chỉ phải đi qua đường dẫn dữ liệu 16 bit hai lần - do đó, quyết định chỉ thêm 4 bit địa chỉ hơn so với người tiền nhiệm của PDP-11, từ 16 từ 12.

Các kiến trúc sư của IBM 360 đã nhận thức được tầm quan trọng của kích thước địa chỉ và đã lên kế hoạch Page 5| 42 474 Chapter 5 Large and Fast: Exploiting Memory Hierarchy để kiến trúc mở rộng đến 32 bit địa chỉ. Chỉ 24 bit duoc str dung trong IBM 360, tuy nhiên, vì các mô hình 360 cấp thấp sẽ chậm hơn nữa với các địa chỉ lớn hơn. Thật không may, nỗ lực mở rộng đã bị phức tạp hóa nhiều bởi các lập trình viên đã lưu trữ thông tin bổ sung trong 8 bit trên cùng. Page 6| 42 474 Chapter 5 Large and Fast: Exploiting Memory Hierarchy Các bit địa chỉ 'không sử dụng”.

Địa chỉ rộng hơn kéo dài cho đến năm 2000, khi IBM mở rộng kiến trúc lên 64 bit trong dòng z. Việc hết không gian địa chỉ thường là nguyên nhân gây ra “cái chết' cho một kiến trúc, trong khi các kiến trúc khác đã quản lý để chuyển sang một không gian địa chỉ lớn hơn. Ví dụ, PDP-11, một máy tính 16 bit, đã được thay thế bằng VAX 32 bit. 80386 mở rộng kiến trúc 80286 từ một không gian địa chỉ 24 bit phân đoạn sang một không gian địa chỉ 32 bit phẳng vào năm 1985.

Trong những năm 1990, một số bộ hướng dẫn RISC đã chuyển từ địa chỉ 32 bit sang địa chỉ 64 bit bằng cách cung cấp một phần mở rộng tương thích của bộ hướng dẫn của họ. MIPS là người đầu tiên làm như vậy. Một thập kỷ sau, Intel và HP công bố IA-64 phần lớn để cung cấp một người kế nhiệm địa chỉ 64 bit cho kiến trúc Intel IA-32 32 bit và HP Precision.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ