07/17 SRAM Các chương

SRAM: một bit tự giữ mình như thế nào?

Làm sao một nhóm transistor có thể giữ nguyên 0 hoặc 1 miễn là còn điện?

Ở bài trước, ta thấy transistor có thể được ghép thành những mạch rất nhỏ trên chip.

Nhưng có một vấn đề:

một transistor đứng riêng không nhớ được 0 hay 1.

Tín hiệu vào mất thì trạng thái của nó cũng mất theo.

Vậy làm sao tạo ra một mạch có thể giữ nguyên một bit?

Ý tưởng của SRAM rất thú vị:

Lấy hai mạch đơn giản rồi cho chúng giữ trạng thái của nhau.

Bắt đầu với một cổng đảo

Ta đã gặp cổng NOT, hay cổng đảo.

Nó chỉ làm một việc:

vào 0 → ra 1
vào 1 → ra 0

Ví dụ:

0 ──[ NOT ]──> 1
1 ──[ NOT ]──> 0

Một cổng NOT như vậy chưa phải bộ nhớ.

Nếu đầu vào đổi, đầu ra cũng đổi theo.

đầu vào quyết định đầu ra

Nhưng điều gì xảy ra nếu ta lấy hai cổng NOT và nối chúng vào nhau?

Cho hai cổng giữ nhau

Ta nối như thế này:

       ┌───────────┐
       │           ↓
   Q ──────> NOT ──────> Q̄
   ↑                   │
   │                   │
   └────── NOT <───────┘

Đầu ra của cổng này trở thành đầu vào của cổng kia.

Hai cổng tạo thành một vòng kín.

Bây giờ giả sử Q đang là 1.

Cổng bên phải nhận 1:

Q = 1

 NOT

Q̄ = 0

Q̄ = 0 lại đi vào cổng còn lại:

Q̄ = 0

  NOT

 Q = 1

Ta quay trở lại đúng trạng thái ban đầu:

Q  = 1
Q̄ = 0

Không có gì buộc nó phải thay đổi.

Hai cổng cứ tiếp tục giữ trạng thái đó.

Nếu bắt đầu ở trạng thái ngược lại:

Q  = 0
Q̄ = 1

thì cũng xảy ra điều tương tự:

Q = 0
→ cổng kia tạo Q̄ = 1
→ cổng còn lại lại tạo Q = 0

Mạch cũng tự giữ được trạng thái này.

Vậy vòng mạch có hai trạng thái ổn định:

Q = 0, Q̄ = 1   → lưu bit 0

Q = 1, Q̄ = 0   → lưu bit 1

Đây là phần quan trọng nhất của SRAM:

Q giữ Q̄, còn Q̄ lại giữ Q.

Miễn là còn điện, vòng này không cần ai liên tục nhắc rằng nó đang giữ 0 hay 1.

Thử tự đổi trạng thái của nó

Bấm Ghi 1, rồi Ghi 0, và xem vòng tự giữ trạng thái mới.

Vì sao hai cổng NOT có thể nhớ một bit?
tín hiệu ghi Q = 0 NOT đảo 0 thành 1 Q̄ = 1 luôn ngược với Q NOT đảo 1 thành 0 quay lại Q
Đang lưu 0

Tắt công tắc Nguồn điện trong mô phỏng: hai cổng không còn giữ nhau, bit mất. Bật lại, cell rơi vào 0 hoặc 1 ngẫu nhiên.

Vì vậy SRAM là bộ nhớ mất dữ liệu khi mất điện — hay volatile memory.

Thêm hai cánh cửa

Cell SRAM đã tự giữ được bit. Nhưng muốn dùng nó, mạch bên ngoài phải có cách đọc hoặc ghi vào cell.

Ta không muốn cell lúc nào cũng nối thẳng ra bên ngoài, vì khi đó tín hiệu ngoài có thể tác động vào nó bất cứ lúc nào. Vì vậy SRAM thêm hai transistor làm cửa:

bitline trái ──[ cửa ]── Q
bitline phải ──[ cửa ]── Q̄

Hai cửa này được điều khiển cùng lúc bởi một dây gọi là wordline:

  • wordline đóng → hai cửa đóng, cell tự giữ bit bên trong
  • wordline mở → hai cửa mở, mạch bên ngoài đọc hoặc ghi được

Mở wordline rồi thử ghi và đọc:

Wordline mở cửa, bitline mang dữ liệu
wordline đóng bitline bitline đóng đóng cell Q=1 Q̄=0 giữ nhau cửa đóng: cell tự giữ bit
Đang lưu 1

Wordline chỉ mở cửa. Bitline là đường dữ liệu đi vào hoặc đi ra.

Từ một cell đến cả chip

Một chip SRAM có rất nhiều cell xếp thành hàng và cột.

            bitline  bitline  bitline
               │        │        │
wordline ──   cell     cell     cell
wordline ──   cell     cell     cell
wordline ──   cell     cell     cell
  • wordline chạy theo hàng: mở một wordline là mở cửa cả hàng đó
  • bitline chạy theo cột: mỗi cột mang dữ liệu của cell trên hàng đang mở
Wordline chọn hàng, bitline mang dữ liệu theo cột
bitline 0
bitline 1
bitline 2
bitline 3
0
1
1
0
1
0
1
1
1
1
0
0

Chỉ hàng có wordline mở đưa dữ liệu lên bitline. Các hàng khác cửa vẫn đóng.

Vì sao gọi là SRAM 6T?

Một cell SRAM phổ biến dùng 6 transistor cho mỗi bit:

  • 4 transistor tạo thành hai cổng NOT giữ nhau, mỗi cổng 2 transistor
  • 2 transistor làm cửa nối Q ra hai bitline
4 transistor → giữ bit
2 transistor → mở đường đọc / ghi
= 6 transistor
Muốn xem mạch thật? Xem cell SRAM 6T

NOTNOT mô hình đơn giản ở trên

↓ mỗi NOT thật ra là 2 transistor (một P, một N)

2T2T + 2T cửa = 6 transistor

NOT NOT wordline bitline bitline nguồn đất Q cửa cửa

Hai cổng NOT ở trên không biến mất: mỗi cổng là hai transistor (khung xám). Hai transistor cửa chỉ mở khi wordline mở, lúc đó bitline mới ghi vào hoặc đọc ra được.

Vì sao SRAM rất nhanh?

Hãy quay lại trạng thái của cell:

Q  = 1
Q̄ = 0

Hai mức này đã được mạch chủ động giữ sẵn.

Khi CPU muốn đọc, nó không phải chờ cell tạo lại dữ liệu từ đầu.

Chỉ cần:

mở cửa

đọc trạng thái

Cell cũng không cần liên tục được nạp lại để tránh mất dữ liệu.

Đó là lý do có chữ Static trong:

Static Random-Access Memory — SRAM

Static ở đây có nghĩa là:

miễn là còn điện, bit có thể giữ nguyên mà không cần refresh định kỳ.

Điều này giúp SRAM có độ trễ rất thấp.

Vì vậy CPU dùng SRAM ở những nơi cần dữ liệu cực nhanh, đặc biệt là cache.

Ví dụ:

CPU

 ├── L1 cache ── SRAM
 ├── L2 cache ── SRAM
 └── L3 cache ── SRAM

Nhưng nếu SRAM nhanh như vậy, tại sao RAM chính của máy tính không dùng SRAM luôn?

Một bit tốn sáu transistor

Đây là điểm yếu lớn nhất.

Một bit:

6 transistor

Một byte có 8 bit:

48 transistor

Một lượng bộ nhớ hàng tỷ bit sẽ cần một số lượng transistor khổng lồ chỉ để lưu dữ liệu.

Cell càng lớn:

cell lớn

ít cell hơn trên một chip

giá mỗi bit cao hơn

SRAM vì vậy phù hợp với bộ nhớ:

  • rất nhanh
  • nằm gần CPU
  • dung lượng tương đối nhỏ

tức là cache.

Còn bộ nhớ chính cần một ưu tiên khác:

không cần nhanh bằng SRAM

nhưng phải chứa được
hàng tỷ bit với chi phí thấp

Muốn làm được điều đó, ta phải giảm mạnh số linh kiện dùng cho mỗi bit.

SRAM cần:

6 transistor

Nhưng có một cách khác chỉ cần:

1 transistor
+
1 tụ điện rất nhỏ

Đó là DRAM.

Và nó dùng một ý tưởng hoàn toàn khác:

Thay vì dùng transistor để liên tục giữ trạng thái, hãy nhốt một chút điện tích và coi điện tích đó là bit.

Một tụ điện nhỏ có thể giữ được 0 hoặc 1 như thế nào?