Ví dụ, bộ nhớ và giao diện mạng không nhanh hơn nhiều so với CPU khi cung cấp dữ liệu Ngày nay, Khi các lõi CPU trở nên nhanh hơn và nhiều hơn, yếu tố hạn chế đối với hầu hết các chương
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN-ĐIỆN TỬ
-
-BÁO CÁO BÀI TẬP LỚN KĨ THUẬT MÁY TÍNH
Đề Tài :
Nguyễn Thành Trung
Trang 2Mục Lục
1 RAM
1.1 Tổng quát về RAM
1.2 Phân loại RAM
1.2.1 RAM Tĩnh
1.2.2 RAM Động
1.3 Các Thông số của RAM
1.4 Truy cập DRAM
1.5 Chi tiết kỹ thuật truy cập DRAM
1.6 Giao thức truy cập đọc
2 Bộ nhớ Cache
2.1 Cache là gì?
2.2 Vai trò và nguyên lý hoạt động
2.2.1 Vai Trò
2.2.2 Nguyên lý hoạt động của cache
2.2.3 Trao đổi dữ liệu giữa CPU – cache
2.2.4 Các hệ số Hit và Miss
2.3 Các dạng kiến trúc cache
2.3.1 Kiến trúc Look Aside
2.3.2 Kiến trúc Look Through
2.4 Các phương pháp đọc ghi
2.5 Hiệu năng cache
2.6 Các phương pháp giảm miss cho cache
2.6.1 Các loại miss của cache
2.6.2 Các phương pháp giảm miss cho cache
3 Bộ nhớ ảo
3.1 Tổng quan bộ nhớ ảo
3.2 Simplest Address Translation (Dịch địa chỉ đơn giản nhất)
3.3 Bảng trang nhiều cấp
3.4 Tối ưu hóa bảng trang nhiều cấp
Trang 33.5 Tác động của ảo hóa 21
Lời mở đầu
Trong những ngày đầu, máy tính đơn giản hơn nhiều Các thành phần khác nhau của
hệ thống, chẳng hạn như CPU, bộ nhớ, bộ nhớ chung và giao diện mạng, được phát triển cùng nhau và do đó, hiệu suất của chúng khá cân bằng Ví dụ, bộ nhớ và giao diện mạng không nhanh hơn (nhiều) so với CPU khi cung cấp dữ liệu
Ngày nay, Khi các lõi CPU trở nên nhanh hơn và nhiều hơn, yếu tố hạn chế đối với hầu hết các chương trình hiện nay và sẽ là khả năng truy cập bộ nhớ trong một thời gian Các nhà thiết kế phần cứng đã đưa ra các kỹ thuật tăng tốc và xử lý bộ nhớ phức tạp hơn bao giờ hết - chẳng hạn như bộ nhớ đệm của CPU
Bài báo cáo này giải thích cấu trúc của hệ thống con bộ nhớ được sử dụng trên phần cứng hàng hóa hiện đại, minh họa lý do tại sao bộ nhớ đệm CPU được phát triển, cáchchúng hoạt động và chương trình nên làm gì để đạt được hiệu suất tối ưu bằng cách
sử dụng chúng
Trang 41 RAM
1.1 Tổng quát về RAM
RAM (viết tắt của Random Access Memory) là một loại bộ nhớ khả biến cho phép truy xuất đọc-ghi ngẫu nhiên đến bất kỳ vị trí nào trong bộ nhớ dựa theo địa chỉ bộ nhớ Thông tin lưu trên RAM chỉ là tạm thời, chúng sẽ mất đi khi mất nguồn điện cung cấp
RAM là bộ nhớ chính của máy tính và các hệ thống điều khiển, để lưu trữ cácthông tin thay đổi đang sử dụng Các hệ thống điều khiển còn sử dụng SRAM như làm một thiết bị lưu trữ thứ cấp (secondary storage) Khi cần thiết thì bố trí một pin nhỏ làm nguồn điện phụ để duy trì dữ liệu trong RAM RAM có một đặc tính
là thời gian thực hiện thao tác đọc hoặc ghi đối với mỗi ô nhớ là như nhau, cho dù đang ở bất kỳ vị trí nào trong bộ nhớ Mỗi ô nhớ của RAM đều có một địa chỉ
Thông thường, mỗi ô nhớ là một byte (8 bit); tuy nhiên hệ thống lại có thể đọc ra hay ghi vào nhiều byte (2, 4, 8 byte) một lúc
Bộ nhớ RAM có 4 đặc trưng sau:
Dung lượng bộ nhớ: Tổng số byte của bộ nhớ (nếu tính theo byte) hoặc
là tổng số bit trong bộ nhớ nếu tính theo bit
Tổ chức bộ nhớ: Số ô nhớ và số bit cho mỗi ô nhớThời gian thâm nhập: Thời gian từ lúc đưa ra địa chỉ của ô nhớ đến lúc đọc được nội dung của ô nhớ đó
Chu kỳ bộ nhớ: Thời gian giữa hai lần liên tiếp thâm nhập bộ nhớ
1.2 Phân loại RAM
1.2.1 RAM Tĩnh
Bộ nhớ truy cập ngẫu nhiên tĩnh (SRAM hay RAM tĩnh) là một loại bộ nhớ sử dụng công nghệ bán dẫn Từ "tĩnh" nghĩa là bộ nhớ vẫn lưu dữ liệu nếu có điện, khôngnhư RAM động cần được nạp lại thường xuyên Không nên nhầm RAM tĩnh với bộ nhớ chỉ đọc và bộ nhớ flash vì RAM tĩnh chỉ lưu được dữ liệu khi có điện
Trang 5Hình 2.4 mô tả cấu trúc của một tế bào SRAM 6 bóng bán dẫn.
Lõi của tế bào này được hình thành bởi bốn bóng bán dẫn M1 đến M4 tạo thànhhai bộ biến tần ghép chéo Chúng có hai trạng thái ổn định, đại diện cho 0 và 1tương ứng Trạng thái ổn định miễn là bật nguồn Vdd có sẵn
Truy cập ngẫu nhiên nghĩa là bất kì một ô nhớ nào cũng đều có thể được đọc và ghi theo bất kì thứ tự nào Mỗi bit trong 1 thanh SRAM được chứa trong 4 transistor tạo thành 2 cặp chéo nhau Ô chứa này có 2 trạng thái 0 và 1 Ngoài ra còn 2
transistor được sử dụng điều khiển quyền truy cập tới một ô nhớ trong quá trình đọc
và ghi Tổng cộng, cần 6 transistor để chứa 1 bit bộ nhớ
Truy cập tới cell được kích hoạt bởi word line (WL ở trong hình) vốn điều khiển
2 transistor truy cập M5 và M6, và khi tới lượt, điều khiển cho tới mỗi cell sẽ được kết nối tới các đường bit: BL và BL Đường bit được sử dụng để truyền dữ liệu cho cảhai tác vụ đọc và ghi Mặc dù việc có cả hai đường bit là không bắt buộc, những hầu hết đều cung cấp cả hai để cải thiện biên nhiễu tín hiệu Kích thước của một bộ nhớ SRAM với m đường địa chỉ và n đường dữ liệu là 2m từ, tức 2m × n bit
1.2.2 RAM Động
Trang 6Bộ nhớ truy cập ngẫu nhiên động (DRAM hay RAM động) là một loại bộ nhớ truy cập ngẫu nhiên lưu mỗi bit dữ liệu trong một tụ điện riêng biệt trên một mạch tích hợp Vì các tụ điện bị rò điện tích nên thông tin sẽ bị mất dần trừ khi dữ liệu được nạp lại đều đặn Đây là điểm khác biệt so với RAM tĩnh Ưu điểm của DRAM là có cấu trúc đơn giản: chỉ cần một transistor và một tụ điện cho mỗi bit trong khi cần sáu transistor đối với SRAM Điều này cho phép DRAM lưu trữ với mật độ cao Vì DRAM mất dữ liệu khi không có điện nên nó thuộc loại thiết bị nhớtạm thời.
DRAM thường được sắp xếp trong một mảng hình chữ nhật của một phần dựtrữ bao gồm một tụ điện và transistor cho mỗi bit dữ liệu Hình bên phải là một
ví dụ đơn giản với ma trận 4x4 Một số ma trận DRAM có tới hàng nghìn phần
Về cấu trúc, RAM động đơn giản hơn nhiều so với RAM tĩnh Hình 2.5 cho thấy cấu trúc của một thiết kế ô DRAM thông thường Tất cả những gì nó bao gồm một bóng bán dẫn và một tụ điện Sự khác biệt lớn về độ phức tạp này tất nhiên có nghĩa là nó hoạt động rất khác so với RAM tĩnh
Một tế bào RAM động giữ trạng thái của nó trong tụ điệnC Bóng bán dẫnMđược sử dụng để bảo vệ quyền truy cập vào trạng thái Để đọc trạng thái của
ô, dòng truy cậpALđược nuôi dưỡng; điều này gây ra một dòng điện chạy trên đường dữ liệu DLhoặc không, tùy thuộc vào điện tích trong tụ điện Để ghi dòng
dữ liệu vào ôDLđược thiết lập thích hợp và sau đó ALđược nâng lên trong một thời gian đủ dài để tích điện hoặc tiêu hao tụ điện
1.3 Các Thông số của RAM
BUS
Có hai loại BUS là: BUS Speed và BUS Width
- BUS Speed chính là BUS RAM, là tốc độ dữ liệu được xử lý trong một giây
- BUS Width là chiều rộng của bộ nhớ Các loại RAM DDR, DDR2, DDR3, DDR4 hiện nay đều có BUS Width cố định là 64
Công thức tính băng thông (bandwidth) từ BUS Speed và BUS Width:
Bandwidth = (Bus Speed x Bus Width) / 8
Trang 7Bandwidth là tốc độ tối đa RAM có thể đọc được trong một giây Bandwidthđược ghi trên RAM là con số tối đa theo lý thuyết Trên thực tế, bandwidth thường thấp hơn và không thể vượt quá được con số theo lý thuyết.
1.4 Truy cập DRAM
Một chương trình chọn vị trí bộ nhớ bằng địa chỉ ảo Bộ xử lý chuyển địa chỉ này thành địa chỉ vật lý và cuối cùng bộ điều khiển bộ nhớ chọn chip RAM tương ứng với địa chỉ đó Để chọn ô nhớ riêng lẻ trên chip RAM, các phần của địa chỉ vật
lý được truyền dưới dạng một số dòng địa chỉ Sẽ hoàn toàn không thực tế nếu giải quyết các vị trí bộ nhớ riêng lẻ từ bộ điều khiển bộ nhớ: 4GB RAM sẽ yêu cầu các dòng địa chỉ Thay vào đó, địa chỉ được mã hóa dưới dạng số nhị phân bằng cách
sử dụng một tập hợp các dòng địa chỉ nhỏ hơn Địa chỉ được chuyển tới chip DRAM theo cách này trước tiên phải được phân kênh Một bộ phân kênh với N dòng địa chỉ sẽ có 2N các dòng đầu ra Các dòng đầu ra này có thể được sử dụng
để chọn ô nhớ Sử dụng cách tiếp cận trực tiếp này không phải là vấn đề lớn đối với các chip có dung lượng nhỏ
Nhưng nếu số lượng tế bào phát triển thì cách tiếp cận này không còn phù hợp nữa Một con chip với 1Gbit6dung lượng sẽ cần 30 dòng địa chỉ và230chọn dòng
Kích thước của bộ phân kênh tăng lên theo cấp số nhân với số lượng dòng đầu vào khi tốc độ không bị hy sinh Một bộ phân kênh cho 30 đường địa chỉ cần rất nhiều bất động sản chip bên cạnh độ phức tạp (kích thước và thời gian) của bộ phân kênh Quan trọng hơn nữa là truyền tải 30 xung đồng bộ trên các đường địa chỉ khóhơn nhiều so với việc truyền “chỉ” 15 xung Ít dòng hơn phải được bố trí ở cùng một độ dài hoặc thời gian thích hợp
Hình 2.7 cho thấy một chip DRAM ở mức rất cao
Các ô DRAM được tổ chức thành các hàng và cột Tất cả chúng đều có thể đượcxếp thành một hàng nhưng khi đó chip DRAM sẽ cần một bộ phân kênh lớn Với
Trang 8cách tiếp cận mảng, thiết kế có thể sử dụng một bộ phân kênh và một bộ ghép kênh
có kích thước bằng một nửa số Đây là một khoản tiết kiệm rất lớn trên tất cả các mặt Trong ví dụ, các dòng địa chỉa0vàa1 thông qualựa chọn địa chỉ hàng(RAS)bộ phân kênh chọn các dòng địa chỉ của toàn bộ hàng ô Khi đọc, nội dung của tất cả các ô do đó được cung cấp cholựa chọn địa chỉ cột(CAS)bộ ghép kênh Dựa trên các dòng địa chỉa2vàa3nội dung của một cột sau đó được cung cấp cho chân dữ liệu của chip DRAM Điều này xảy ra nhiều lần song song trên một số chip DRAM để tạo ra tổng số bit tương ứng với độ rộng của bus dữ liệu
Để ghi, giá trị ô mới được đặt trên bus dữ liệu và khi ô được chọn bằng RAS và CAS, giá trị này sẽ được lưu trữ trong ô đó Một thiết kế khá đơn giản Trong thực
tế - rõ ràng là - còn nhiều phức tạp hơn nữa Cần có thông số kỹ thuật về độ trễ saukhi có tín hiệu là bao nhiêu trước khi dữ liệu có sẵn trên bus dữ liệu để đọc Các tụ điện không tải ngay lập tức, như được mô tả trong phần trước Tín hiệu từ các tế bào rất yếu nên nó cần được khuếch đại Để ghi, nó phải được chỉ định thời gian
dữ liệu phải có sẵn trên bus sau khi thực hiện RAS và CAS để lưu trữ thành công giá trị mới trong ô (một lần nữa, dung lượng
1.5 Chi tiết kỹ thuật truy cập DRAM
Trong phần giới thiệu DRAM, chúng ta đã thấy rằng các chip DRAM ghép cácđịa chỉ để tiết kiệm tài nguyên dưới dạng các chân địa chỉ Chúng tôi cũng thấy rằng việc truy cập các ô DRAM mất nhiều thời gian vì các tụ điện trong các ô đó không phóng điện ngay lập tức để tạo ra tín hiệu ổn định; chúng tôi cũng thấy rằng các ô DRAM phải được làm mới Bây giờ là lúc để tổng hợp tất cả những điều này lại với nhau và xem tất cả những yếu tố này quyết định cách thức truy cập DRAM diễn ra như thế nào
DRAM đồng bộ, như tên cho thấy, hoạt động liên quan đến nguồn thời gian Bộ điều khiển bộ nhớ cung cấp một xung nhịp, tần số xác định tốc độ của Front Side Bus (FSB) - giao diện bộ điều khiển bộ nhớ được sử dụng bởi các chip DRAM
Theo văn bản này, các tần số 800MHz, 1.066MHz hoặc thậm chí 1.333MHz có sẵnvới các tần số cao hơn (1.600MHz) sẽ được công bố cho thế hệ tiếp theo Điều nàykhông có nghĩa là tần suất sử dụng trên xe buýt thực sự cao như vậy Thay vào đó, các xe buýt ngày nay được bơm gấp đôi hoặc bốn, có nghĩa là dữ liệu được vận chuyển hai hoặc bốn lần mỗi chu kỳ Số lượng bán cao hơn nên các nhà sản xuất thích quảng cáo xe buýt 200MHz được bơm bốn như là một xe buýt 800MHz
“hiệu quả”
Đối với SDRAM ngày nay mỗi lần truyền dữ liệu bao gồm 64 bit - 8 byte Do đó, tốc độ truyền của FSB là 8 byte nhân với tần số bus hiệu dụng (6.4GB / s cho bus 200MHz được bơm bốn) Nghe có vẻ nhiều nhưng đó là tốc độ bùng nổ, tốc độ tối đa
sẽ không bao giờ vượt qua được Như chúng ta sẽ thấy bây giờ, giao thức để
Trang 9nói chuyện với các mô-đun RAM có rất nhiều thời gian chết khi không có dữ liệu nào có thể được truyền Đó chính xác là thời gian chết mà chúng ta phải hiểu
và giảm thiểu để đạt được hiệu suất tốt nhất
1.6 Giao thức truy cập đọc
Hình 2.8 cho thấy hoạt động trên một số đầu nối của mô-đun DRAM xảy ra ở bapha có màu khác nhau Như thường lệ, thời gian trôi từ trái sang phải Rất nhiều chi tiết bị bỏ sót Ở đây chúng ta chỉ nói về đồng hồ bus, tín hiệu RAS và CAS, địa chỉ và bus dữ liệu Một chu kỳ đọc bắt đầu với bộ điều khiển bộ nhớ làm cho địa chỉ hàng có sẵn trên địa chỉ bus và hạ tín hiệu RAS Tất cả các tín hiệu được đọc trên cạnh lên của đồng hồ (CLK) nên không có vấn đề gì nếu tín hiệu không hoàn toàn vuông miễn là nó ổn định tại thời điểm nó được đọc Việc đặt địa chỉ hàng sẽ khiến chip RAM bắt đầu chốt hàng được định địa chỉ Tín hiệu CAS có thể được gửi sau chu kỳ đồng hồ tRCD (RAS-to-CAS Delay) Địa chỉ cột sau đó được truyền bằng cách làm cho nó có sẵn trên bus địa chỉ và hạ dòng CAS Ở đây chúng
ta có thể thấy cách hai phần của địa chỉ (nhiều hơn hoặc ít hơn một nửa, không có
ý nghĩa gì khác) có thể được truyền qua cùng một bus địa chỉ
Bây giờ việc định địa chỉ đã hoàn tất và dữ liệu có thể được truyền đi Chip RAM cần một thời gian để chuẩn bị cho việc này Độ trễ thường được gọi là Độ trễCAS (CL) Trong Hình 2.8, độ trễ CAS là 2 Nó có thể cao hơn hoặc thấp hơn, tùy thuộc vào chất lượng của bộ điều khiển bộ nhớ, bo mạch chủ và mô-đun DRAM
Độ trễ cũng có thể có một nửa giá trị Với CL = 2,5, dữ liệu đầu tiên sẽ có sẵn ở lần đầu tiênrơiflmắt cá chân trong khu vực màu xanh
Với tất cả sự chuẩn bị này để truy cập dữ liệu sẽ là lãng phí nếu chỉ chuyển một từ
dữ liệu Đây là lý do tại sao các mô-đun DRAM cho phép bộ điều khiển bộ nhớ chỉ định lượng dữ liệu được truyền Thường thì sự lựa chọn là giữa 2, 4 hoặc 8 từ Điều này cho phép lấp đầy toàn bộ các dòng trong bộ nhớ đệm mà không cần trình tự RAS/ CAS mới Bộ điều khiển bộ nhớ cũng có thể gửi tín hiệu CAS mới mà không cần đặt lại lựa chọn hàng Bằng cách này, các địa chỉ bộ nhớ liên tiếp có thể
Trang 10được đọc hoặc ghi nhanh hơn đáng kể vì tín hiệu RAS không phải được gửi đi vàhàng không cần phải hủy kích hoạt (xem bên dưới) Giữ hàng “mở” là điều mà bộđiều khiển bộ nhớ phải quyết định Việc cố ý để nó mở mọi lúc có bất lợi với cácứng dụng trong thế giới thực (xem [3]).x, ở đâuxlà một giá trị như 1 hoặc 2; nó sẽ là
1 cho các mô-đun DRAM hiệu suất cao chấp nhận các lệnh mới mỗi chu kỳ)Trong ví dụ này, SDRAM phát ra một từ mỗi chu kỳ Đây là những gì thế hệ đầu tiên làm DDR có thể truyền hai từ mỗi chu kỳ Điều này làm giảm thời gian chuyển nhưng không thay đổi độ trễ Ở hoàng tử ple, DDR2 hoạt động giống nhaumặc dù trong thực tế, nó trông khác nhau Không cần phải đi vào chi tiết ở đây
Cần lưu ý rằng DDR2 có thể được sản xuất nhanh hơn, rẻ hơn, đáng tin cậy hơn
và tiết kiệm năng lượng hơn (xem [6] để biết thêm thông tin)các ô DRAM phải liên tục được làm mới sau mỗi 64ms theo đặc điểm kỹ thuật của JEDEC (Hội đồng Kỹ thuật Thiết bị Điện tử Chung)
2 Bộ nhớ Cache
2.1 Cache là gì?
Cache hay còn gọi là bộ nhớ đệm, bộ nhớ khay là một thành phần của cấu trúcphân cấp của hệ thống bộ nhớ Cache đóng vai trong trung gian, trung chuyển
dữ liệu từ bộ nhớ chính về CPU và ngược lại
Hình 1 Vị trí của bộ nhớ cache trong hệ thống nhớVới các hệ thống CPU cũ sử dụng công nghệ tích hợp thấp, bộ nhớ cache thường nằm ngoài CPU; với các CPU mới sử dụng công nghệ tích hợp cao, bộ nhớ cache thường được tích hợp vào trong CPU nhằm nâng cao tốc độ và băng thông trao đổi dữ liệu giữa CPU và cache
Dung lượng của bộ nhớ cache thường nhỏ so với dung lượng của bộ nhớ chính
và bộ nhớ ngoài Cache có tốc độ truy cập nhanh hơn nhiều so với bộ nhớ chính, đặc biệt với cache được tích hợp vào CPU Tuy nhiên, giá thành bộ nhớ cache (tínhtheo bit) thường đắt hơn nhiều so với bộ nhớ chính
2.2 Vai trò và nguyên lý hoạt động 2.2.1 Vai Trò
Do nhớ cache là một thành phần của hệ thống nhớ phân cấp, nên vai trò của cache tương tự như vai trò của cấu trúc phân cấp hệ thống nhớ: tăng hiệu năng hệ thống vào giảm giá thành sản xuất Sở dĩ cache có thể giúp tăng hiệu năng hệ thống là nhờ cache
có khả năng dung hoà được CPU có tốc độ cao và bộ nhớ chính có tốc
Trang 11độ thấp làm cho thời gian trung bình CPU truy nhập dữ liệu từ bộ nhớ chính tiệm cậnthời gian truy nhập cache Ngoài ra, do cache là một loại bộ nhớ “thông minh” có khảnăng đoán và chuẩn bị trước các dữ liệu cần thiết cho CPU xử lý nên xác xuất CPU phải trực tiếp truy nhập dữ liệu từ bộ nhớ chính là khá thấp và điều này cũng giúp làm giảm thời gian trung bình CPU truy nhập dữ liệu từ bộ nhớ chính.
2.2.2 Nguyên lý hoạt động của cache
Cache hoạt động dựa trên hai nguyên lý cơ bản: nguyên lý lân cận về không gian (Spatial locality) và nguyên lý lân cận về thời gian (Temporal locality)
Hình 2 Lân cận về không gian trong không gian chương trìnhNguyên lý lân cận về không gian có thể phát biểu như sau: “Nếu một ô nhớ đang được truy nhập thì xác xuất các ô nhớ liền kề với nó được truy nhập trong tương lai gần là rất cao” Lân cận về không gian thường được áp dụng cho nhóm lệnh hoặc dữ liệu có tính tuần tự cao trong không gian chương trình Do các lệnh trong một chương trình thường tuần tự, cache có thể đọc cả khối lệnh từ bộ nhớ chính và khối lệnh đọc được bao phủ cả các ô nhớ lân cận (neighbour cell) của ô nhớ đang được truy nhập (current cell)
Khác với nguyên lý lân cận về không gian, nguyên lý lân cận về thời gian chú trọng hơn đến tính lặp lại của việc truy nhập các mẩu thông tin trong một khoảng thời gian tương đối ngắn Có thể phát biểu nguyên lý này như sau: “Nếu một ô nhớ đang được truy nhập thì xác xuất nó được truy nhập lại trong tương lai gần là rất cao” Lân cận
về thời gian được áp dụng cho dữ liệu và nhóm các lệnh trong vòng lặp Với các phần
tử dữ liệu, chúng được CPU cập nhập thường xuyên trong quá trình thực hiện chương trình nên có tính lân cận cao về thời gian Với các lệnh trong vòng lặp, chúng thường được CPU thực hiện lặp đi lặp lại nhiều lần nên cũng có tính lân cận cao về thời gian;
nếu cache nạp sẵn khối lệnh chứa cả vòng lặp sẽ phủ được tính lân cận về thời gian