Gần 100 năm, bài toán giữ một bit vẫn chưa xong
Từ lỗ trên bìa tới HBM, cách nhớ một bit đã đổi thế nào?
Bài trước dừng ở một chuyện rất thời sự: AI đòi quá nhiều bộ nhớ, HBM được ưu tiên, còn nhà máy mới thì không xuất hiện sau vài tháng.
Giờ bỏ thị trường, giá RAM và nhà máy sang một bên. Nhìn vào trong chính con chip HBM đó, thứ giữ dữ liệu vẫn là những ô DRAM rất nhỏ, và mỗi ô chỉ phải trả lời đúng một câu hỏi.
Đây là 0 hay 1?
Đó cũng là câu hỏi máy tính phải giải từ những ngày đầu tiên.
Một bit phải nằm ở đâu đó trong thế giới thật
Số 0 và số 1 không tự tồn tại trong máy. Muốn nhớ một bit, máy cần một thứ có ít nhất hai trạng thái mà mạch phân biệt được.
Với một tấm thẻ, hai trạng thái đó nhìn thấy bằng mắt. Với lõi từ thì không còn cái lỗ nào, và với DRAM thì không còn gì để nhìn:
tấm bìa không lỗ / có lỗ
lõi từ từ hoá hướng này / hướng kia
DRAM ít điện tích / nhiều điện tích
Tên công nghệ đổi, vật liệu đổi, kích thước đổi hàng triệu lần. Việc phải làm ở dưới cùng thì không:
tạo ra hai trạng thái đủ khác nhau để ghi được, giữ được và đọc lại được.
Ta đã dùng rất nhiều thứ để giữ một bit
| Công nghệ | Bit nằm ở đâu | Phân biệt hai trạng thái bằng |
|---|---|---|
| Thẻ đục lỗ | một vị trí trên tấm bìa | có lỗ hay không |
| Lõi từ | một vòng ferrite | hai hướng từ hoá |
| SRAM | một mạch transistor tự giữ | mạch nghiêng về bên nào |
| DRAM | một tụ điện cực nhỏ | mức điện tích trong tụ |
| NAND | transistor giữ được điện tích lâu | mức điện áp ngưỡng |
Bên trong chúng không có con số 0 hay 1 nào. Chỉ có giấy, từ trường, điện áp và electron.
0 và 1 là tên ta đặt cho hai trạng thái mà máy phân biệt được. Từ cái tên đó mới có byte, số, ký tự, ảnh, chương trình và mọi thứ hiện trên màn hình.
Nhưng giữ được một bit chưa bao giờ là đủ.
Giữ được một bit chưa bao giờ là đủ
Nếu chỉ cần giữ dữ liệu thì thẻ đục lỗ đã làm được việc đó từ rất lâu rồi. Máy tính lại đòi thêm: bit phải nhỏ hơn, đọc nhanh hơn, ghi lại được, chứa được hàng tỷ bit, đủ rẻ để làm hàng loạt, và đôi khi phải còn nguyên cả khi tắt điện.
Mỗi đời bộ nhớ ra đời vì đời trước mắc ở một trong những yêu cầu đó. Dòng thời gian dưới đây là các mốc lớn:
- 1890 Thẻ đục lỗ có lỗ / không lỗ trên tấm bìa
- Thập niên 1940 Relay, đèn điện tử mạch tự giữ một trong hai trạng thái ổn định
- 1946–49 Ống thuỷ ngân, ống Williams xung chạy vòng trong ống; chấm điện tích trên màn
- 1953 Lõi từ hướng từ hoá của một vòng ferrite
- 1970 Bộ nhớ bán dẫn, DRAM một chút điện tích trong tụ điện
- Nay DDR · LPDDR · HBM vẫn là điện tích trong tụ; đổi cách đóng gói và đưa tới CPU
Cái mới không xoá cái cũ, nó chỉ gỡ đúng chỗ đang vướng rồi để lại chỗ vướng mới.
| Cách giữ dữ liệu | Làm được gì mới | Rồi mắc ở đâu |
|---|---|---|
| Thẻ đục lỗ | giữ rất lâu, không cần điện | đọc ghi chậm và hoàn toàn cơ học |
| Mạch đèn điện tử | dữ liệu nằm trong mạch, đổi rất nhanh | quá nhiều đèn cho quá ít bit |
| Ống thuỷ ngân, ống Williams | chứa được nhiều bit hơn | phải chờ bit chạy tới, phải ghi lại liên tục |
| Lõi từ | chọn vị trí nào cũng đọc ghi được ngay | mỗi vòng ferrite phải xâu dây bằng tay |
| SRAM | đưa bộ nhớ lên silicon, chạy rất nhanh | một bit tốn nhiều transistor |
| DRAM | một transistor với một tụ cho mỗi bit | tụ rò nên phải refresh |
| Cache | kéo dữ liệu hay dùng về sát CPU | nhỏ và đắt |
| NAND | giữ dữ liệu khi tắt điện | chậm hơn DRAM, cell có giới hạn số lần ghi |
| DDR, LPDDR, HBM | chỉnh DRAM cho từng loại máy | mỗi thiết kế đổi lấy giá, điện hoặc độ phức tạp |
Nên SRAM, DRAM và NAND vẫn sống cùng lúc trong một cỗ máy. Mỗi loại giỏi một việc mà loại kia làm dở.
Vậy suốt gần 100 năm đó, thứ gì mới thật sự đổi?
Thứ đổi nhiều nhất là kích thước
Thời thẻ đục lỗ, một bit là một cái lỗ nhìn thấy bằng mắt. Thời lõi từ, một bit là một vòng ferrite vẫn cầm được bằng tay. Năm 1970, chip Intel 1103 đưa 1.024 bit lên một miếng silicon.
Một thanh RAM 16 GB hôm nay phải giữ:
16 × 1024³ × 8 ≈ 137 tỷ bit
Khoảng 137 tỷ trạng thái 0 hoặc 1 cùng tồn tại trong vài con chip bé xíu, ở kích thước phải chế tạo bằng quang khắc mới với tới.
Nhưng nhỏ đi không làm các vấn đề biến mất. Nó chỉ đổi vấn đề này lấy vấn đề khác.
Càng nhỏ thì mọi thứ càng khó
Tụ DRAM nhỏ hơn thì cùng một con chip chứa được nhiều bit hơn. Đổi lại, tụ nhỏ giữ ít điện tích hơn, tín hiệu đọc ra yếu hơn, và phân biệt 0 với 1 khó hơn.
Mỗi lối thoát cũng có giá của nó: SRAM nhanh nhưng tốn quá nhiều transistor cho mỗi bit, NAND giữ được dữ liệu khi cúp điện nhưng đáp chậm hơn DRAM, HBM cho băng thông khổng lồ nhưng phải xếp chồng die và nối bằng hàng nghìn đường xuyên silicon.
Không có vật liệu thần kỳ nào vừa rất nhanh, vừa rất lớn, vừa rất rẻ, vừa ít điện, lại không mất dữ liệu khi cúp điện. Có thì máy tính đã chỉ cần đúng một loại bộ nhớ, thay vì phải xếp tầng:
thanh ghi → cache SRAM → DRAM → SSD
Mỗi tầng bỏ một thứ để đổi lấy một thứ khác. Cũng chính những đánh đổi đó là gốc của mấy câu hỏi hay gặp khi mua máy.
Vài câu hỏi hay gặp
Thêm RAM có làm máy nhanh hơn không?
Không trực tiếp, vì RAM không tính toán. Nó chỉ giúp khi máy đang thiếu chỗ và phải đẩy dữ liệu xuống ổ đĩa. Đủ rồi thì thêm nữa không nhanh hơn.
Cache có phải là RAM không?
Cache là SRAM nằm trong chip CPU, còn thanh RAM là DRAM. Cả hai đều mất dữ liệu khi cúp điện, nhưng khác nhau ở cách giữ bit, tốc độ và giá.
VRAM trên card đồ hoạ là gì?
Là DRAM dành riêng cho GPU, thường là GDDR hoặc HBM, đặt sát GPU để có băng thông lớn.
Unified memory của Apple có phải một loại bộ nhớ mới?
Không. Đó là một vùng bộ nhớ chung trong cùng vỏ chip, để CPU và GPU dùng chung dữ liệu mà không phải chép qua lại.
Vì vậy bài toán bộ nhớ vẫn chưa kết thúc
Những cỗ máy đầu tiên cần vài chục bit để giữ một con số. Máy hôm nay cần hàng trăm tỷ bit trong RAM, còn một GPU chạy AI cần tới hàng trăm gigabyte HBM. Quy mô đổi tới mức khó hình dung, nhưng ở đáy mọi hệ thống đó vẫn là đúng một câu hỏi:
Có tạo được hai trạng thái vật lý đủ khác nhau, giữ đủ lâu và đọc đủ nhanh hay không?
Thẻ đục lỗ trả lời bằng một cái lỗ, lõi từ bằng hướng từ hoá, SRAM bằng trạng thái của một mạch, DRAM bằng điện tích trong một tụ, NAND bằng electron nhốt sau lớp cách điện.
Gần 100 năm làm bộ nhớ thực chất là gần 100 năm tìm câu trả lời tốt hơn cho câu hỏi đó. Tới hôm nay vẫn chưa ai có câu trả lời hoàn hảo.
Bài kiểm tra cuối khoá không hỏi tên viết tắt. Nó hỏi bạn có kể lại được chuỗi vừa rồi không.
Thử xem bạn đã kể lại được máy tính giữ một bit bằng cách nào chưa.
Nguồn bài viết (2)
- The Intel 1103 DRAM (October 1970) · Intel Timeline
- Dynamic random-access memory (DRAM) · IBM History