09/17 Vì sao DRAM phải refresh? Các chương

Vì sao DRAM phải liên tục "làm mới" dữ liệu?

Nếu điện tích trong DRAM cứ rò đi, làm sao RAM giữ được dữ liệu suốt nhiều giờ?

Ở bài trước, ta đã thấy điểm yếu của DRAM:

bit 1 chỉ là một chút điện tích trong một tụ rất nhỏ, và điện tích đó rò dần.

Nếu ghi 1 rồi bỏ mặc:

mới ghi        một lúc sau       lâu hơn nữa

██████████     ███████           ███
    1              1               ?

Đến một lúc nào đó, lượng điện còn lại quá ít.

Mạch không còn chắc đây là 1 hay 0.

Nhưng máy tính có thể chạy hàng giờ, thậm chí hàng ngày.

Làm sao DRAM không quên?

Câu trả lời là:

Đừng chờ đến khi bit mất. Hãy nạp lại nó trước đó.

Việc này gọi là refresh — làm mới dữ liệu.

Nạp lại trước khi quá muộn

Giả sử một cell đang giữ 1. Điện tích giảm dần, nhưng vẫn còn đủ rõ để đọc là 1.

Đây chính là lúc DRAM hành động:

███████

đọc ra 1

nạp lại

██████████

Sau một khoảng thời gian, quá trình lại lặp lại.

Miễn là refresh xảy ra trước khi dữ liệu trở nên không đáng tin, bit có thể được giữ rất lâu.

Nhưng refresh phải biết cell đang giữ 0 hay 1

Không thể đơn giản nạp điện vào tất cả các tụ. Nếu nạp đầy tất cả, mọi bit sẽ biến thành 1.

Vì vậy trước khi nạp lại, DRAM phải biết giá trị hiện tại là gì. May mắn là nó đã có sẵn cơ chế đó: đọc.

Ở bài trước, đọc một cell là mở cửa cho điện tích tràn sang bitline, để sense amplifier kết luận 0 hay 1, rồi nạp lại cell theo đúng kết luận đó.

Vì vậy refresh rất đơn giản:

đọc giá trị hiện tại

nạp lại đúng giá trị đó

Không có chương trình nào cần nhận kết quả. RAM chỉ đang tự chăm sóc dữ liệu của mình.

Không refresh từng cell một

Một chip DRAM có quá nhiều cell để đi từng ô một.

May mắn là các cell không đứng riêng lẻ. Chúng được xếp thành hàng và cột, và các cell trên cùng một hàng dùng chung một wordline.

Bật wordline của một hàng là mở tất cả cell của hàng đó cùng lúc. Các sense amplifier ở các cột đọc cả hàng và nạp lại dữ liệu.

Vì thế DRAM không refresh từng cell, mà refresh:

hàng 1

hàng 2

hàng 3

...

hàng cuối

quay lại hàng 1

Đây là ý quan trọng nhất của chương:

Refresh diễn ra theo hàng, không phải từng cell một.

RAM cứ quét các hàng hết vòng này đến vòng khác

Thử bấm Dừng refresh và chờ:

Refresh giữ dữ liệu như thế nào?

refresh đang quét từng hàng

H1 10110010
H2 01001101
H3 11010011
H4 00101100
H5 10011001
H6 01110010
H7 11000101
H8 00110110
Ổn định64 / 64
Không còn chắc chắn0

Hàng đang refresh: 1 / 8

Refresh ngăn dữ liệu mất. Nó không phục hồi dữ liệu đã mất.

Refresh phải chạy ngay cả khi bạn không làm gì

Giả sử máy tính đang bật nhưng bạn không chạm vào bàn phím. Không chương trình nào đọc RAM, cũng không chương trình nào ghi dữ liệu mới.

DRAM vẫn phải quét hàng này sang hàng khác, liên tục. Nếu dừng đủ lâu, dữ liệu trong RAM sẽ dần trở nên không đáng tin.

Đó là lý do refresh chạy ngay cả khi máy đang gần như nhàn rỗi.

Refresh không miễn phí

Trong lúc một hàng đang được refresh, mạch DRAM phải dành thời gian cho việc đọc và nạp lại hàng đó. Nó cũng phải dùng điện để bật wordline, bitline và sense amplifier.

Vì vậy refresh có hai cái giá:

tốn một ít thời giantốn một ít điện.

Chip càng nóng, điện tích càng khó giữ lâu, nên hệ thống cũng có thể phải refresh thường xuyên hơn.

Nếu refresh phiền như vậy, tại sao không dùng SRAM?

Cái giá đổi lấy một cell rất nhỏ

SRAM không có vấn đề này. Một bit SRAM được mạch transistor chủ động giữ, không cần refresh định kỳ.

Nhưng một cell SRAM phổ biến cần khoảng 6 transistor, trong khi DRAM chỉ cần 1 transistor và 1 tụ điện.

DRAM chấp nhận một hệ thống phức tạp hơn:

điện tích rò

phải refresh

để đổi lấy một lợi ích rất lớn:

cell nhỏ

nhét được nhiều cell hơn

nhiều GB bộ nhớ với chi phí thấp hơn

Đó cũng là nguồn gốc của chữ Dynamic trong DRAM. Dữ liệu không tự đứng yên; mạch phải liên tục giữ nó sống.

SRAM dùng nhiều transistor để bit tự giữ mình.

DRAM dùng một cell nhỏ hơn nhiều, rồi trả giá bằng việc phải refresh liên tục.

Nhưng refresh theo hàng đặt ra một câu hỏi mới.

Một thanh RAM 16 GB có hơn một trăm tỷ bit. Không thể kéo một dây riêng tới từng cell.

Vậy hàng tỷ cell đó được sắp xếp và đánh địa chỉ như thế nào để máy tính tìm đúng dữ liệu cần đọc?