TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH HCMC University of Technology and Education NHÓM 3 : KIẾN TRÚC MÁY TÍNH BÁO CÁO ĐỀ TÀI: DRAM VÀ MÔ PHỎNG DRAMSim2 DƯƠNG QUANG THỊNH 17119104 NGUYỄN ĐĂNG KHOA 17119085 LÊ TRÍ DŨNG 17119065 BÙI THỊ DIỄM 17119062 TRẦN TIẾN ĐẠT 17119068 NGUYỄN HỮU TRỌNG 17119109 VÕ QUANG LINH 17119089 NGUYỄN THÀNH TÍN 17119106 NGUYỄN TẤN ĐẠT 17119117 VŨ TẤN KHOA 17119086 Thành phố Hồ Chí Minh, 12/2019 Contents CHƯƠNG 1: TỔNG QUAN VỀ DRAM...................................................................... 1 1.1 Định nghĩa............................................................................................................ 1 1.2 Tổ chức hệ thống DRAM.....................................................................................2 1.3 Vai trò của DRAM............................................................................................... 5 1.4 Nguyên tắc hoạt động...........................................................................................6 1.5 Phân loại DRAM.................................................................................................. 8 1.6 Ưu điểm và Nhược điểm của DRAM................................................................ 11 CHƯƠNG 2: CẤU TRÚC CỦA DRAM.................................................................... 13 2.1 DIMM, Channel và các thành phần khác.......................................................... 13 2.2 Command........................................................................................................... 14 CHƯƠNG 3: MEMORY CONTROLER...................................................................17 3.1 Bộ điều khiển(Controller).................................................................................. 17 3.2 Row-buffer-management policies......................................................................18 3.3 Ánh xạ địa chỉ(Address mapping)..................................................................... 20 3.4 Hàng chờ lệnh(Command Queue)..................................................................... 21 3.5 Latency............................................................................................................... 23 3.6 Refresh................................................................................................................25 CHƯƠNG 4: TỔNG QUAN MÔ PHỎNG BỘ NHỚ DRAMSim2.........................26 4.1 Ngõ vào DRAMSim2............................................................................................ 26 4.2 Kết quả mô phỏng DRAMSim2............................................................................28 TÀI LIỆU THAM KHẢO, LƯU Ý............................................................................. 32 BẢNG PHÂN CÔNG VÀ HOÀN THÀNH CÔNG VIỆC....................................... 33 CHƯƠNG 1: TỔNG QUAN VỀ DRAM 1.1 Định nghĩa Bộ nhớ truy cập ngẫu nhiên động (DRAM) là một loại bộ nhớ bán dẫn ngẫu nhiên lưu trữ từng bit dữ liệu trong một ô nhớ bao gồm một tụ điện nhỏ và một bóng bán dẫn, cả hai thường dựa trên công nghệ bán dẫn oxit kim loại (MOS). DRAM thường có dạng chip mạch tích hợp, có thể chứa hàng chục đến hàng tỷ tế bào bộ nhớ DRAM. Chip DRAM được sử dụng rộng rãi trong các thiết bị điện tử kỹ thuật, những nơi yêu cầu bộ nhớ máy tính dung lượng cao và chi phí thấp. Một trong những ứng dụng lớn nhất cho DRAM là bộ nhớ chính (tạm gọi là "RAM") trong các máy tính và card đồ họa hiện đại (trong đó "bộ nhớ chính" được gọi là bộ nhớ đồ họa). Nó cũng được sử dụng trong nhiều thiết bị cầm tay và máy chơi game video. Ngược lại, SRAM, nhanh hơn và đắt hơn DRAM, thường được sử dụng khi mà ở đó tốc độ là mối quan tâm lớn hơn chi phí và kích thước, chẳng hạn như bộ nhớ đệm trong bộ xử lý. Do cần một hệ thống để thực hiện làm mới, DRAM có các yêu cầu về mạch và thời gian phức tạp hơn SRAM, nhưng nó được sử dụng rộng rãi hơn nhiều. Ưu điểm của DRAM là sự đơn giản về cấu trúc của các ô nhớ của nó: chỉ cần một bóng bán dẫn và tụ điện cho mỗi bit, so với bốn hoặc sáu bóng bán dẫn trong SRAM. Điều này cho phép DRAM đạt được mật độ rất cao, làm cho DRAM rẻ hơn nhiều trên mỗi bit. Các bóng bán dẫn và tụ điện được sử dụng là cực kỳ nhỏ; với một chip bộ nhớ duy nhất có thể chứa đến hàng tỷ cái . Do tính chất động của các ô nhớ, DRAM tiêu thụ một lượng điện năng tương đối lớn, với các cách khác nhau để quản lý mức tiêu thụ năng lượng. 1 1.2 Tổ chức hệ thống DRAM Hình 1.2 JEDEC - tổ chức bộ nhớ kiểu bus . Hình 1.2 cho thấy một hệ thống của bộ điều khiển bộ nhớ và hai mô-đun bộ nhớ với bus dữ liệu 16 bit và địa chỉ 8 bit và bus lệnh. 2 Hình 1.3 Một tế bào Dram bao gồm một tụ điện được kết nối bởi một bóng bán dẫn thông qua dòng bit (hoặc dòng chữ số hoặc dòng cột). Dòng chữ số (hoặc dòng cột) được kết nối với vô số ô được sắp xếp trong một cột. Dòng từ (hoặc dòng hàng) cũng được kết nối với vô số ô, nhưng được sắp xếp thành một hàng. Nếu dòng từ được xác định, thì bóng bán dẫn T1 trong Hình 1 được mở và tụ C1 được kết nối với dòng bit. Tế bào bộ nhớ DRAM lưu trữ thông tin nhị phân dưới dạng điện tích được lưu trữ trên tụ điện. Nút chung của tụ điện bị sai lệch khoảng tại VCC / 2. Do đó, tế bào chứa điện tích Q = ± VCC / 2 • Ccell, nếu điện dung của tụ điện là Ccell. Điện tích là Q = + VCC / 2 • Ccell nếu ô lưu trữ 1, nếu không thì điện tích là Q = -VCC / 2 • Ccell. Các dòng rò khác nhau sẽ từ từ loại bỏ điện tích, làm cho hoạt động làm mới là không thể tránh khỏi. Nếu chúng ta mở bóng bán dẫn thông qua bằng cách yêu cầu dòng từ, thì điện tích sẽ tiêu tan trên dòng chữ số, dẫn đến thay đổi điện áp. Sự thay đổi điện áp được đưa ra bởi (Vsignal quan sát sự thay đổi điện áp trong dòng chữ số, Ccell điện dung của tụ điện tế bào DRAM và Cline điện dung của dòng chữ số Vsignal = Vcell • Ccell • (Ccell + Cline) -1 Ví dụ: nếu VCC là 3,3V thì Vcell là 1,65V. Các giá trị tiêu biểu cho công suất là 3 Cline = 300fF và Ccell = 50fF. Điều này dẫn đến cường độ tín hiệu là 235 mV. Khi một ô DRAM được truy cập, nó chia sẻ điện tích của nó với dòng chữ số. Hình 1.4 4 1.3 Vai trò của DRAM Hình 1.5 minh họa vị trí của DRAM trong một mô hình PC. Một thiết bị DRAM riêng lẻ thường kết nối gián tiếp với CPU (tức là bộ vi xử lý) thông qua bộ điều khiển bộ nhớ. Hình 1.5 Nhờ tăng dung lượng máy chủ và các công nghệ bộ nhớ đệm tinh vi, DRAM có thể phục vụ như một tầng trong cơ sở hạ tầng lưu trữ. Ngay cả phần cứng máy chủ tầm trung thường có khả năng chứa hơn 1TB DRAM và trong khi 1TB đó có thể tốn gấp 3 đến 5 lần so với lưu trữ flash, khả năng hiệu suất của nó rất hấp dẫn. Ngoài ra, khu vực lưu trữ này có thể truy cập trực tiếp qua khe CPU, do đó tạo ra độ trễ thấp nhất có thể. 5 1.4 Nguyên tắc hoạt động DRAM thường được sắp xếp trong một mảng hình chữ nhật của các ô lưu trữ điện tích bao gồm một tụ điện và bóng bán dẫn trên mỗi bit dữ liệu. Một số ma trận DRAM có hàng ngàn ô có chiều cao và chiều rộng. Các đường ngang dài kết nối mỗi hàng được gọi là dòng từ. Mỗi cột của các ô được tạo thành từ hai dòng bit, mỗi dòng được kết nối với mọi ô lưu trữ khác trong cột. Chúng thường được gọi là các dòng bit "+" và "-". Bộ khuếch đại cảm giác về cơ bản là một cặp biến tần được kết nối chéo giữa các dòng bit. Biến tần đầu tiên được kết nối với đầu vào từ + bit-line và đầu ra đến - bitline. Đầu vào của biến tần thứ hai là từ - bit-line với đầu ra đến + bit-line. Điều này dẫn đến phản hồi tích cực ổn định sau khi một dòng hoàn toàn ở mức điện áp cao nhất và dòng bit khác ở mức điện áp thấp nhất có thể. Hoạt động để đọc một bit dữ liệu lưu trữ DRAM . Các bộ khuếch đại cảm giác bị ngắt kết nối. Các dòng bit được nạp lại với điện áp chính xác bằng nhau ở giữa mức logic cao và thấp (ví dụ: 0,5 V nếu hai mức là 0 và 1 V). Các đường bit đối xứng vật lý để giữ điện dung bằng nhau, và do đó tại thời điểm này điện áp của chúng bằng nhau. Mạch nạp điện bị tắt. Bởi vì các dòng bit tương đối dài, chúng có đủ điện dung để duy trì điện áp được sạc trong một thời gian ngắn. Đây là một ví dụ về logic động . Dòng từ của hàng sau đó được điều khiển cao để kết nối tụ lưu trữ của một phần tử với dòng bit của nó. Điều này làm cho bóng bán dẫn tiến hành, chuyển điện tích từ ô lưu trữ sang đường bit được kết nối (nếu giá trị được lưu là 1) hoặc từ đường bit được kết nối đến ô lưu trữ (nếu giá trị được lưu là 0). Do điện dung của dòng bit thường cao hơn nhiều so với điện dung của ô lưu trữ, nên điện áp trên dòng bit tăng 6 rất nhẹ nếu tụ điện của phần tử lưu trữ bị phóng điện và giảm rất ít nếu phần tử lưu trữ được sạc (ví dụ: 0,54 và 0,45 V trong hai trường hợp). Vì các dòng bit khác giữ 0,50 V, có sự chênh lệch điện áp nhỏ giữa hai dòng bit xoắn. Các bộ khuếch đại cảm giác (sense-amplifier) hiện được kết nối với các cặp bitline. Sau đó phản hồi tích cực xảy ra từ các bộ biến tần được kết nối chéo, do đó khuếch đại chênh lệch điện áp nhỏ giữa các dòng bit lẻ và chẵn của một cột cụ thể cho đến khi một dòng bit hoàn toàn ở điện áp thấp nhất và dòng kia ở điện áp cao tối đa. Khi điều này đã xảy ra, hàng là "mở" (dữ liệu ô mong muốn có sẵn). Tất cả các ô lưu trữ trong hàng mở được cảm nhận đồng thời và đầu ra bộ khuếch đại cảm giác được chốt. Sau đó, một địa chỉ cột sẽ chọn bit nào để kết nối với bus dữ liệu ngoài. Việc đọc các cột khác nhau trong cùng một hàng có thể được thực hiện mà không có độ trễ mở hàng bởi vì, đối với hàng mở, tất cả dữ liệu đã được cảm nhận và chốt. Trong khi việc đọc các cột trong một hàng mở đang diễn ra, dòng điện sẽ chảy ngược dòng bit từ đầu ra của bộ khuếch đại cảm giác và sạc lại các ô lưu trữ. Điều này củng cố (tức là "làm mới") điện tích trong ô lưu trữ bằng cách tăng điện áp trong tụ lưu trữ nếu nó được sạc để bắt đầu hoặc bằng cách giữ cho nó được xả nếu trống. Lưu ý rằng do độ dài của các dòng bit, có độ trễ lan truyền khá dài để điện tích được chuyển trở lại tụ điện của phần tử. Điều này cần thời gian đáng kể sau khi kết thúc khuếch đại cảm giác, và do đó trùng lặp với một hoặc nhiều lần đọc cột. Khi thực hiện với việc đọc tất cả các cột trong hàng mở hiện tại, dòng từ bị tắt để ngắt kết nối các tụ điện lưu trữ (hàng được "đóng") khỏi các dòng bit. Bộ khuếch đại cảm giác bị tắt và các dòng bit được sạc lại. 7 1.5 Phân loại DRAM Khi nhìn vào chính công nghệ bộ nhớ, có rất nhiều loại DRAM khác nhau. Các loại DRAM chính được tóm tắt dưới đây: DRAM không đồng bộ: DRAM không đồng bộ là loại DRAM cơ bản mà tất cả các loại khác dựa trên. DRAM không đồng bộ có các kết nối cho nguồn, địa chỉ đầu vào và đường dữ liệu hai chiều. Mặc dù loại DRAM này không đồng bộ, hệ thống được điều hành bởi bộ điều khiển bộ nhớ có xung nhịp và điều này giới hạn tốc độ của hệ thống thành bội số của tốc độ xung nhịp. Có nhiều loại DRAM không đồng bộ khác nhau : RAS chỉ làm mới, ROR: Đây là loại DRAM không đồng bộ cổ điển và được làm mới bằng cách lần lượt mở từng hàng. Các chu kỳ làm mới được trải đều trên toàn bộ khoảng thời gian làm mới. Một bộ đếm bên ngoài là cần thiết để làm mới các hàng liên tục. CAS trước khi làm mới RAS, CBR: Để giảm mức độ mạch ngoài, bộ đếm cần thiết cho việc làm mới đã được tích hợp vào chip chính. Đây trở thành định dạng chuẩn để làm mới DRAM không đồng bộ. (Đây cũng là hình thức duy nhất thường được sử dụng với SDRAM). FPM DRAM: DRAM FPM hoặc DRAM Chế độ trang nhanh được thiết kế để nhanh hơn các loại DRAM thông thường. Do đó, đây là loại DRAM chính được sử dụng trong PC, mặc dù hiện tại nó đã lỗi thời vì nó chỉ có thể hỗ trợ tốc độ bus bộ nhớ lên tới khoảng 66 MHz. EDO DRAM: DRAM dữ liệu mở rộng, EDO DRAM là một dạng DRAM cung cấp hiệu suất tăng so với DRAM FPM. Tuy nhiên, loại DRAM này vẫn chỉ có thể hoạt động ở tốc độ lên tới khoảng 66 MHz. 8 EDO DRAM đôi khi được gọi là DRAM chế độ Hyper Page vì nó là sự phát triển của loại DRAM của FPM mà nó mang nhiều điểm tương đồng. Loại DRAM EDO có tính năng bổ sung rằng có thể bắt đầu một chu kỳ truy cập mới trong khi đầu ra dữ liệu từ chu kỳ trước vẫn còn. Loại DRAM này đã bắt đầu xuất dữ liệu của nó trên cạnh xuống của dòng / CAS. Tuy nhiên, nó không ức chế đầu ra khi dòng / CAS tăng. Thay vào đó, nó giữ đầu ra hợp lệ cho đến khi / RAS không được xác nhận hoặc cạnh rơi / CAS mới chọn địa chỉ cột khác. Trong một số trường hợp, có thể thực hiện giao dịch bộ nhớ trong một chu kỳ đồng hồ hoặc cung cấp một cải tiến từ việc sử dụng ba chu kỳ đồng hồ thành hai tùy thuộc vào kịch bản và bộ nhớ được sử dụng. Điều này cung cấp cơ hội để tăng đáng kể mức hiệu năng bộ nhớ trong khi cũng giảm chi phí. BEDO DRAM: Burst EDO DRAM là một loại DRAM giúp cải thiện hiệu suất của DRAM EDO thẳng. Ưu điểm của loại BEDO DRAM là nó có thể xử lý bốn địa chỉ bộ nhớ trong một đợt tiết kiệm ba chu kỳ xung nhịp khi so sánh với bộ nhớ EDO. Điều này được thực hiện bằng cách thêm bộ đếm địa chỉ trên chip đếm địa chỉ tiếp theo. BEDO DRAM cũng đã thêm một đường ống để cho phép chia chu kỳ truy cập trang thành hai thành phần: thành phần đầu tiên truy cập dữ liệu từ mảng bộ nhớ đến giai đoạn đầu ra, thành phần thứ hai đã đưa bus dữ liệu từ chốt này ở mức logic phù hợp. Vì dữ liệu đã có trong bộ đệm đầu ra, nên thời gian truy cập nhanh hơn - cải thiện tới 50% so với EDO DRAM thông thường. 9 BEDO DRAM cung cấp một cải tiến đáng kể so với các loại DRAM trước đó, nhưng vào thời điểm nó được giới thiệu, SDRAM đã được tung ra và chiếm lĩnh thị trường. Do đó, BEDO DRAM ít được sử dụng. SDRAM: DRAM đồng bộ là một loại DRAM nhanh hơn nhiều so với các dạng RAM và DRAM thông thường trước đây. Nó hoạt động ở chế độ đồng bộ, đồng bộ hóa với bus trong CPU. RDRAM: Đây là Rambus DRAM - một loại DRAM được phát triển bởi Rambus Inc, rõ ràng lấy tên từ công ty. Nó là đối thủ cạnh tranh với SDRAM và DDR SDRAM và có thể hoạt động ở tốc độ nhanh hơn nhiều so với các phiên bản DRAM trước đây. 10 1.6 Ưu điểm và nhược điểm DRAM Ưu điểm Mật độ dày đặt Chi phí thấp Cấu trúc phần tử bộ nhớ đơn giản Nhược điểm Yêu cầu mạch bên trong phức tạp hơn Quy trình sản xuất phức tạp Thông tin sẽ bị mất dần trừ khi dữ liệu được nạp lại đều đặn Tốc độ hoạt động tương đối chậm Bảng so sánh [1] CƠ SƠ SRAM DRAM FLASH Tốc độ Nhanh Trung bình Đọc nhanh, viết chậm Kích thước Nhỏ Lớn Nhỏ Giá cả Đắt Rẻ Rẻ Vai trò Bộ nhớ cache Bộ nhớ chính Bộ nhớ điện tĩnh SO SÁNH 11 CƠ SƠ SO SÁNH Cấu trúc Yêu cầu một SRAM DRAM FLASH Có cấu trúc phức Có cấu trúc đơn giản, Bao gồm các cổng tạp, sử dụng bóng sử dụng tụ điện và rất logic. bán dẫn và chốt. ít bóng bán dẫn. 6 transistors 1 transistor 2 transistors Thấp Cao Thấp khối bộ nhớ Năng lượng tiêu thụ 12 CHƯƠNG 2: CẤU TRÚC CỦA DRAM 2.1 DIMM, Channel và các thành phần khác Figure 2.1 Figure 2.2 Figure 2.3 DIMM: DIMM (Dual In-line memory module) chứa CHIP ở cả hai mặt bao gồm một chuỗi của các mạch tích hợp DRAM. Các module này được dán lên một board mạch in. CHANNEL: CHANNEL được kết nối với memory controller, khi máy tính chọn một kênh , nó sẽ xác định một DIMM cụ thể. 13 RANK: RANK nằm trong DIMM và một DIMM thì chứa hai RANK.. CHIP: CHIP thì nằm trong RANK, một rank có thể chứa nhiều CHIP. Bên trong CHIP thì có nhiều BANK. BANK: BANK là mảng hai chiều gồm HÀNG (ROW) và CỘT (COLUMN) và được xem như là MẢNG BỘ NHỚ (MEMORY ARRAY). Figure 2.4 2.2 Command +Activate command: để mở HÀNG (ROW) và hàng đó được đưa vào ROW BUFFER. +Read/write command: ĐỌC/GHI cột ở trong ROW BUFFER. 14 +Precharge command: để đóng HÀNG(ROW) và chuẩn bị BANK cho lần truy cập sau. Figure 2.5 Khi nhìn sâu vào CHIP, ta có thể thấy được nhiều BANK. BANK chứa một mảng các hàng và cột. Các hàng và cột tạo nên mảng tế bào bộ nhớ. Tổ chức của CHIP DRAM có một mạch gải mã hàng để giải mã địa chỉ hàng được gửi bằng bus điều khiển, và có row buffer giải mã hàng để giả mã địa chỉ hàng và sau đó là đệm dữ liệu. 15 DRAM read operation [1]: bộ nhớ phải đọc một địa chỉ:(row 0, column 0). Bộ giải mã hàng giải mã một hàng cụ thể (row 0) được đề cập đến ở địa chỉ này. Sau đó, hàng cụ thể đó được đẩy vào row buffer vì thế nó được hiển thị trong row buffer, Tiếp theo, bộ nhớ có thể truy cập vào các cột được liên kết với row này. Ví dụ: đây là row 0, bộ nhớ có thể truy cập vào tất cả các column thuộc row này: [Row, Column]=(0,0);(0,1)…… Nếu bộ nhớ truy cập vào một địa chỉ khác mà có row khác với row 0 như row 1, nó sẽ xảy ra xung đột (conflict) và lệnh precharge được thực thi để đóng row 0. Sau đó chu trình đọc của DRAM được lặp lại như trên. Sau khi tất cả các column của row này được giải mã thì một địa chỉ cụ thể sẽ được gửi đến bus dữ liệu. Row buffer: Cần được làm mới (refresh) theo chu kỳ. Tế bào DRAM dùng một tụ điện và lượng điện nạp trong tụ bị rò rỉ vì thế giá trị được trữ trong row buffer bị thay đổi. Bởi vì DRAM bị rò rỉ lượng điện nạp nên giá trị thì được lưu trong row buffer và sẽ được ghi (write) lại vào tế bào để sử dụng cho chu trình đọc tiếp theo. Nghĩa là, row buffer được dùng để lưu giá trị khi bộ nhớ truy cập đến một vị trí cụ thể sử dụng bộ giải mã hàng và cột. 16 CHƯƠNG 3: MEMORY CONTROLER 3.1 Controller (BỘ ĐIỀU KHIỂN) Trong các hệ thống máy tính, bộ điều khiển bộ nhớ là một phần của chipset cầu bắc xử lý nhiều bộ vi xử lý, đồng xử lý đồ họa, giao tiếp với chipset cầu nam (lần lượt, xử lý tất cả các chức năng I / O của hệ thống) , cũng như giao diện tới hệ thống DRAM. Được thiết kế để giảm thiểu kích thước khuôn, giảm thiểu tiêu thụ năng lượng, tối đa hóa hiệu suất hệ thống, hoặc đơn giản là đạt được sự thỏa hiệp tối ưu hợp lý của các mục tiêu thiết kế xung đột. Chức năng của bộ điều khiển bộ nhớ DRAM là quản lý luồng dữ liệu vào và ra khỏi các thiết bị DRAM được kết nối với bộ điều khiển DRAM đó trong hệ thống bộ nhớ. Giao thức truy cập DRAM xác định giao thức giao diện giữa bộ điều khiển bộ nhớ DRAM và hệ thống các thiết bị DRAM. HÌNH 3.1 17 3.2 Row-buffer management policies Chính sách quản lý Row- buffer 3.2.1 Open-Page Row-Buffer Management Policy Chính sách quản lý Open-Page Row-Buffer Chính sách quản lý open-page row-buffer được thiết kế để ưu tiên truy cập bộ nhớ vào cùng một hàng bộ nhớ bằng cách giữ cho bộ khuếch đại cảm giác mở và giữ một hàng dữ liệu để sẵn sàng truy cập. Khi một hàng dữ liệu được đưa đến mảng của các bộ khuếch đại cảm giác trong một bank của DRAM, các cột khác nhau của cùng một hàng có thể được truy cập lại với độ trễ tối thiểu của tCAS. Trong trường hợp truy cập đọc bộ nhớ khác được thực hiện vào cùng hàng, việc truy cập bộ nhớ đó có thể xảy ra với độ trễ tối thiểu do hàng đã hoạt động trong bộ khuếch đại cảm giác và chỉ cần một lệnh truy cập cột để di chuyển dữ liệu từ bộ khuếch đại (SENSE-AMPLIFIER) sang bộ điều khiển bộ nhớ. Tuy nhiên, trong trường hợp quyền truy cập vào một hàng khác nhau của cùng một bank, bộ điều khiển bộ nhớ trước tiên phải nạp ( điện tích) cho mảng DRAM, kích hoạt một hàng khác kích hoạt, sau đó thực hiện truy cập cột. Chính sách open-page row-buffer thường được triển khai trong các hệ thống bộ nhớ của nền tảng số lượng bộ xử lý thấp 3.2.2 Close-Page Row-Buffer-Management Policy Chính sách quản lý Close-Page Row-Buffer Chính sách quản lý Close-Page Row-Buffer được thiết kế để ưu tiên truy cập vào các vị trí ngẫu nhiên trong bộ nhớ và hỗ trợ tối ưu các mẫu yêu cầu bộ nhớ với mức độ địa phương truy cập thấp. Xác suất trúng hàng giảm và khả năng xung đột bank gia tăng trong các hệ thống, đạt đỉnh điểm của các loại trong đó chính sách close-page cung cấp hiệu suất tốt hơn cho hệ thống máy tính. Chính sách close-page thường được triển khai trong các hệ thống bộ nhớ của các nền tảng số lượng bộ xử lý lớn hơn là trong các hệ thống lớn, việc xen kẽ các chuỗi yêu cầu bộ nhớ từ nhiều bối cảnh luồng, đồng thời, làm giảm vị trí của chuỗi truy cập bộ nhớ kết quả. 18 3.2.3 Hybrid (Dynamic) Row-Buffer Management Policies Chính sách Row-Buffer hỗn hợp (Động) Để hỗ trợ các chuỗi yêu cầu bộ nhớ có tốc độ yêu cầu và truy cập địa chỉ có thể thay đổi đáng kể tùy thuộc vào hoạt động, thời gian chạy của khối lượng công việc, bộ điều khiển bộ nhớ DRAM được thiết kế cho điện toán đa năng có thể sử dụng kết hợp lịch sử truy cập và bộ hẹn giờ để điều khiển động hàng chính sách quản lý row-buffer để tối ưu hóa hiệu suất hoặc giảm thiểu điện năng tiêu thụ. Tỷ lệ tối thiểu của các lần truy cập row buffer có nghĩa là nếu một chuỗi các xung đột bank xảy ra liên tiếp nhanh chóng và tỷ lệ các yêu cầu đọc bộ nhớ là các lần truy cập row buffer nằm dưới ngưỡng được tính toán trước, bộ điều khiển DRAM có thể chuyển sang chính sách trang close-page để tốt hơn hiệu suất. Tương tự, nếu liên tiếp nhanh chóng các yêu cầu bộ nhớ đến một bank nhất định được thực hiện cho cùng một hàng, bộ điều khiển DRAM có thể chuyển sang chính sách open-page để cải thiện hiệu suất. Một cơ chế đơn giản được sử dụng trong các bộ điều khiển DRAM hiện đại để cải thiện hiệu suất và giảm mức tiêu thụ điện năng là sử dụng bộ hẹn giờ để điều khiển các bộ khuếch đại cảm giác. Nghĩa là, bộ hẹn giờ được đặt thành giá trị định trước khi một hàng được kích hoạt. Đồng hồ đếm ngược với mỗi tích tắc đồng hồ và khi nó về 0, lệnh nạp (điện tích) được ban hành để nạp vào bank. Trong trường hợp row buffer truy cập vào bank mở, bộ đếm được đặt lại về giá trị cao hơn và lặp lại đếm ngược. Theo cách này, thời gian và không gian hiện diện trong một chuỗi truy cập bộ nhớ nhất định có thể được sử dụng mà không giữ các hàng mở vô thời hạn. 19 3.3 Ánh xạ địa chỉ (Address Mapping) Sơ đồ ánh xạ địa chỉ (Address Mapping Scheme) là sơ đồ dùng để chuyển địa chỉ vật lý được đưa vào thành các thành phần của hệ thống địa chỉ DRAM bao gồm channel ID (kênh ), rank ID, bank ID, row ID, column ID. Đôi khi công việc của hàm ánh xạ địa chỉ có thể được hiểu là phiên dịch địa chỉ. Nhiệm vụ chính của sơ đồ ánh xạ địa chỉ bao gồm giảm thiểu tỉ lệ xung đột bank, xung đột row trong việc thực hiện các lệnh liên tiếp, đồng thời gia tăng sự tương đồng của hệ thống bộ nhớ. Mỗi thành phần của địa chỉ, được biểu diễn dưới dạng 1 dãy bit, có thể được phiên dịch thành nhiều địa chỉ DRAM khác nhau, tùy thuộc vào sơ đồ ánh xạ địa chỉ. 20 Để bảo đảm hiệu năng tốt nhất, việc lựa chọn sơ đồ ánh xạ địa chỉ thường được chọn cặp cùng với hệ thống quản lý row-buffer (row-buffer-management policy) của khối điều khiển bộ nhớ (memory controller). Ví dụ như, trong trường hợp chọn hệ thống quản lý row-buffer mở (Open-Page Row-Buffer-Management Policy), các địa chỉ vật lý sau khi được phiên dịch thành địa chỉ DRAM, thường được phân thành các channel khác nhau, nhưng lại có cùng địa chỉ row, bank, rank để tận dụng tối đa ưu điểm của hệ thống mở.[1] 3.4 Hàng chờ lệnh (Command Queue) Để điều khiển dòng dữ liệu giữa 2 khối điều khiển bộ nhớ DRAM (DRAM memory controller) và các thiết bị DRAM, dòng dữ liệu được phiên dịch thành chuỗi các lệnh DRAM trong hệ thống điều khiển bộ nhớ DRAM. Để tối đa hóa việc thực hiện các lệnh DRAM, các lệnh này có thể được đặt vào 1 hàng chờ hoặc nhiều hàng chờ khác nhau. Với việc các lệnh DRAM đã được sắp xếp cấu trúc theo dạng hàng chờ lệnh, khối điều khiển bộ nhớ DRAM (DRAM memory controller) sẽ ưu tiên thực hiện các lệnh này dựa vào nhiều yếu tố khác nhau, bao gồm độ ưu tiên của lệnh, các tài nguyên khả dụng để thực hiện lệnh được giao, địa chỉ bank của lệnh, thời gian yêu cầu lệnh, lịch sử truy cập của khối đưa ra lệnh và các yếu tố liên quan. 21 Trong hàng chờ theo bank, giả sử các lệnh có độ ưu tiên như nhau, được sắp xếp vào các hàng chờ lệnh khác nhau theo từng bank. Các chuỗi lệnh được phiên dịch, sau đó được sắp xếp vào các hàng chờ khác nhau dựa vào địa chỉ bank của chúng.[1] Chú thích hình: các lệnh được thực hiện theo vòng tròn trên từng bank, dựa trên độ dài hàng chờ (queue depth – số lệnh có thể thực hiện được) hay tài nguyên hiện có. Đối với hệ thống mở (open-page), với hệ thống của hình 3.3, các lệnh trong hàng chờ sẽ bao gồm 2 phần, 1 phần thuộc row đang được mở, phần còn lại sẽ là các lệnh còn lại, thuộc các row khác. Sau khi các lệnh thuộc row được mở đã được thực hiện, lệnh precharge sẽ được đưa ra để hệ thống có thể thực hiện các lệnh của bank tiếp theo. Đối với hệ thống đóng (close-page), hệ thống của hình 3.3 sẽ thực hiện các lệnh giữa các bank bất kì một cách tối ưu hơn, đồng thời không bị ảnh hưởng bởi việc các thiếu điện áp của các mạnh logic. Tuy nhiên, vẫn có các nhược điểm tồn tại, nhất là trong hệ thống mở (openpage).Trong hệ thống mở, sơ đồ ánh xạ địa chỉ thường phiên dịch các địa chỉ vào cùng một hàng đang mở, và do đó rất nhiều lệnh sẽ thuộc hàng chờ của hàng này. 22 3.5 Latency (ĐỘ TRỄ) 4 thông số cơ bản biểu diễn độ trễ của DRAM (Đơn vị: xung ) CL CAS Latency: số xung đồng hồ tính từ khi bộ nhớ gửi địa chỉ column đến khi dữ liệu được trả lại t RCD Row Address to Column Address Delay: số xung tối thiểu tính từ lúc mở 1 row đến khi truy cập vào column được yêu cầu t RP Row Precharge Time: số xung tối thiểu tính từ lúc yêu cầu lệnh precharge đến khi mở row tiếp theo t RAS Row Active Time: số xung tối thiểu tính từ khi truy cập vào row đã kích hoạt đến khi đưa ra lệnh precharge Độ trễ CAS , viết tắt của “Column Access Strobe”. Đây là số xung đồng hồ tính từ khi bộ nhớ gửi địa chỉ column đến khi dữ liệu được trả lại. Thời gian CAS cao hơn có thể dẫn đến độ trễ cao hơn ngay cả với tốc độ xung nhịp cao hơn. CAS càng thấp, RAM càng nhanh và do đó, càng đắt. Khi quyết định giữa RAM có tốc độ xung nhịp khác nhau, RAM có tốc độ xung nhịp cao hơn là vượt trội; nhưng khi chọn giữa RAM có tốc độ xung nhịp giống hệt nhau, RAM có độ trễ CAS thấp hơn sẽ nhanh hơn. 23 A: Yêu cầu bị trì hoãn trong Hàng đợi B: Yêu cầu được gửi đến Bộ điều khiển bộ nhớ C: Yêu cầu trong hàng đợi lệnh D: Các lệnh được gửi đến DRAM E: Thông số độ trễ E = CL - Row hit E = CL + T RAS - Row miss E = CL + T RAS + T RP - Row Conflict F: Dữ liệu được gửi lại cho CPU Độ trễ DRAM = A + B + C + D + E + F 24 3.6 Refresh Từ "DRAM" là một từ viết tắt của bộ nhớ truy cập ngẫu nhiên động. Bản chất của việc lưu trữ điện tích không liên tục trong các tế bào DRAM có nghĩa là điện tích được lưu trữ trong các tụ lưu trữ sẽ dần bị rò rỉ qua các bóng bán dẫn truy cập. Do đó, để duy trì tính toàn vẹn dữ liệu, các giá trị dữ liệu được lưu trữ trong các ô DRAM phải được đọc định kỳ và khôi phục về mức điện áp đầy đủ tương ứng trước khi các điện tích được lưu trữ phân rã thành các mức không thể phân biệt. Lệnh refresh hoàn thành nhiệm vụ đọc và khôi phục dữ liệu trong các thiết bị DRAM và miễn là khoảng thời gian giữa các lệnh refresh được thực hiện cho một hàng nhất định của mảng DRAM ngắn hơn thời gian phân rã dữ liệu trong trường hợp xấu nhất, các lệnh refresh DRAM có thể được sử dụng để đảm bảo tính toàn vẹn dữ liệu. Hầu hết các thiết bị DRAM sử dụng thanh ghi địa chỉ hàng refresh để theo dõi địa chỉ của hàng được refresh lần cuối. Thông thường, bộ điều khiển bộ nhớ gửi một lệnh refresh cho thiết bị DRAM và thiết bị DRAM tăng địa chỉ trong thanh ghi địa chỉ hàng refresh và đi qua một chu kỳ hàng cho tất cả các hàng có địa chỉ hàng đó trong tất cả các ngân hàng trong thiết bị DRAM . Trong hầu hết các thiết bị DRAM hiện đại, để đảm bảo tính toàn vẹn của dữ liệu được lưu trữ trong các thiết bị DRAM, mỗi hàng DRAM chứa dữ liệu hợp lệ phải được refresh ít nhất một lần mỗi vòng refresh, thường là cứ sau 32 hoặc 64 ms. Luồng yêu cầu của bộ vi xử lý được phân tách thành các hàng yêu cầu đọc hoặc ghi và các lệnh yêu cầu được đặt vào hàng đợi refresh. Theo cách này, trong trường hợp yêu cầu refresh nằm dưới ngưỡng trì hoãn đặt trước, tất cả các yêu cầu đọc và ghi sẽ được ưu tiên hơn yêu cầu refresh. Trong trường hợp hệ thống không hoạt động mà không có yêu cầu đọc hoặc ghi đang chờ xử lý nào khác, thì yêu cầu refresh có thể được gửi đến các thiết bị DRAM. Trong trường hợp hệ thống chứa đầy các yêu cầu đọc và ghi đang chờ xử lý nhưng yêu cầu refresh DRAM gần vượt quá thời gian trì hoãn tối đa, thì yêu cầu refresh DRAM sẽ nhận được mức ưu tiên cao nhất để đảm bảo rằng yêu cầu refresh dược thực hiện trong khoảng thời gian yêu cầu để đảm bảo tính toàn vẹn dữ liệu trong hệ thống bộ nhớ. Hình 3.5 25 CHƯƠNG 4: TỔNG QUAN MÔ PHỎNG BỘ NHỚ DRAMSim2 Tổng quan mô phỏng 4.1 Ngõ vào DRAMSim2 Device Ini File: Định nghĩa các đặc điểm cấu trúc của DRAM như là: - DEVICE_WIDTH: số lượng bit mà dram có thể di chuyển trong 1 chu kỳ, hoặc số chân dữ liệu trên chip. - NUM_BANKS: số lượng bank của dram. - NUM_ROWS: số lượng hàng trên 1 mảng của dram. - NUM_COLS: số lượng cột trên 1mảng của dram. Và các đặc điểm phi cấu trúc: - REFRESH_PERIOD: chu kỳ làm tươi được tính bằng nano giây (nanoseconds). - CL (CAS Latency): khoảng thời gian từ lúc gửi tín hiệu địa chỉ cột vào bộ nhớ đến lúc bắt đầu có dữ liệu phản hồi, được tính bằng chu kỳ.( sẽ nói sau) 26 - tRCD( Row Address to Column Address Delay): số chu kỳ xung clock tối thiểu cần thiết từ lúc mở hàng của bộ nhớ đến lúc truy cập cột ở trong hàng đó. - tRP (Row Precharge Time): số chu kỳ xung clock tối thiểu cần thiết từ lúc gửi lệnh precharge đến lúc mở ra hàng tiếp theo trong bộ nhớ. - tRAS (Row Active Time): số chu kỳ xung clock tối thiểu cần thiết để hàng đó active. System Ini File : biểu diễn các đặc điểm cơ bản của Memory Controller: - JEDEC_DATA_BUS_BITS: luôn để là 64 khi mô phỏng dòng DDR Dram. - TRANS_QUEUE_DEPTH: transaction queue ( tạm dịch: hàng chờ giao dịch) trong hàng đợi này chứa các lệnh ở cấp độ CPU như là: READ 0xbeef. - CMD_QUEUE_DEPTH: command queue (tạm dịch: hàng chờ lệnh) trong hàng chờ này chứa lệnh đã qua bước ánh xạ địa chỉ vật lý (address mapping) các lệnh này ở cấp độ DRAM : CAS 544, RAS 4. - ADDRESS_MAPPING_SCHEME: có 7 scheme tất cả, mỗi sheme là một thuật toán ánh xạ địa chỉ vật lý khác nhau được nhà sx cung cấp sẵn để giải quyết vấn đề row conflict. Memory Trace: - Sơ lược qua về Trace-based Simulation: mục đích của giả lập này là nhìn vào “vết tích” (trace) của hệ thống sau khi thực hiện mô phỏng qua đó đánh giá hiệu năng, hiệu suất của hệ thống. DRAMSim 2 cũng là một trình mô phỏng theo dạng Trace-based Simulation, “vết tích”( hay trace) ở đây trong chế độ chạy độc lập chính là file k6_aoe_02_short.trc( gọi là Trace File) trong TraceFile này có 3 cột : MemoryAddress, Cycles. Transaction Type(P_MEM_WR, P_MEM_RD,P_FETCH), Trong trường hợp frontend driver tạo ra một TraceFile ở cột thứ ba được tính bằng nanoseconds, ta phải đổi nó qua cycles bằng cách chạy python script có tên là traceparse. Sau khi chạy xong tất cả cycles đã được đổi qua chu kỳ ( với 1 chu kỳ cycle 27 bằng 10ns). 4.2 Kết quả mô phỏng DRAMSim2: Để có được kết quả đầu tiên chúng ta phải vào file system.ini chỉnh tất cả các debug flags lên true. [1] Ta có được kết quả mô phỏng cơ bản như sau: Trong kết quả này, có các phần lưu ý sau: - Mọi lệnh hay dữ liệu được gửi lên bus được đóng gói vào một object được gọi là Bus Packet. Ví dụ: BP [ACT] pa[0x5dec818] r[1] b[1] row[1502] col[800] Thông tin được hiển thị ở trên đúng theo thứ tự: loại lệnh, địa chỉ vật lý, rank #, bank #, hàng #, cột #. 28 - Dòng bắt đầu với “--” biểu diễn bus traffic -- R0 Receiving On Bus : BP [ACT] pa[0x5dec7f0] r[0] b[3] row[1502] col[799] => Rank0 nhận được từ bus lệnh ACT active hàng 1502, cột 799 của bank 3, rank 0với địa chỉ vật lý 0x5dec7f0. -- MC Issuing On Data Bus : BP [DATA] pa[0x7edc7e0] r[0] b[2] row[2029] col[799] data[0]=... => Memory Controller gửi lên bus dữ liệu một data ở hàng 2029, cột 799, của bank 2, rank 0. -- MC Issuing On Command Bus : BP [READ_P] pa[0x5dec7f8] r[1] b[3] row[1502] col[799] => Memory Controller gửi lên bus command một lệnh READ_P ở hàng 2029, cột 799, của bank 2, rank 0. - Hàng chờ giao dịch : chứa các lệnh cấp độ cpu như đã nói ở trên. - Ánh xạ địa chỉ vật lý. - Command queue: chứa các lệnh cấp độ DRAM như đã nói ở trên. 29 - Bank State: nằm ở memory controller để kiểm tra trạng thái của bank, mỗi ô [] biểu diễn 1 bank có 4 trạng thái idle, precharge, lowp, active ( hiển thị hàng được active). Ngoài ra còn có các khảo sát mà nhóm tiến hành để khảo sát sự khác biệt về tốc độ của open page policy và close page policy: Open-Page-Policy : (100 cycles) [1] 30 Close-Page-Policy : (100 cycles) [1] Có thể thấy với close page policy bandwidth trung bình thấp hơn rất nhiều so với open page policy, cùng với đó là thời gian latency của close page cũng cao hơn rất nhiều so với open page trong 100 cycles. Xét về năng lượng trung bình thì close page tiêu tốn ít năng lượng hơn so với open page và để ý thì năng lượng dùng để đóng mở hàng (act/pre) của close page nhiều hơn so với open page, lý do đã được giải thích ở trên. Nhìn chung qua mô phỏng DRAMSim2 chúng ta có thể quan sát được cách hoạt động của DRAM, năng lượng tiêu tốn để thực hiện các hoạt động của nó qua đó giúp ta nắm rõ hơn về hiệu năng, hiệu suất tiêu thụ của DRAM cụ thể hơn là DDR DRAM. 31 TÀI LIỆU THAM KHẢO, LƯU Ý Impacts_of_Memory_Address_Mapping_Scheme_on_Reducing_DRAM_Self_refr -esh_Power_for_Mobile_Computing_Devices by Zongwei Zhu, Jing Cao , Xi Li, Junneng Zhan, Youqing X, and Gangyong Jia Memory Systems: Cache, DRAM, Disk by Bruce Jacob, Spencer W. Ng, David T. Wang Computer Architecture: Main memory by Prof. Onur Mutlu, Carnegie Mellon University LƯU Ý [1] PHẦN ĐƯƠC YÊU CẦU CHỈNH SỬA 32 BẢNG PHÂN CÔNG VÀ HOÀN THÀNH CÔNG VIỆC TỔNG QUAN MEMORY CONTROLLER CẤU TRÚC DRAM MÔ PHỎNG DRAMSIM2 POWERPOINT VÕ QUANG LINH: 50% NGUYỄN HỮU TRỌNG: 50% LÊ TRÍ DŨNG 35% BÙI THỊ DIỄM 35% VŨ TẤN KHOA 30% DƯƠNG QUANG THỊNH 35% TRẦN TIẾN ĐẠT 35% NGUYỄN THÀNH TÍN 30% NGUYỄN ĐĂNG KHOA 50% LÊ TRÍ DŨNG 30% NGUYỄN TẤN ĐẠT 20% LÊ TRÍ DŨNG 90% TEAM 10% 33