Từ trống quay đến những chiếc vòng đứng yên
Nếu từ tính đã giữ được bit rất tốt, làm sao bỏ cái trống đang quay mà vẫn chọn đúng bit cần đọc?
Ở bài trước, trống từ đã giải được một nửa bài toán.
Từ tính có thể giữ một bit mà không cần liên tục bơm lại như ống thuỷ ngân, cũng không bị điện tích phai dần như ống Williams.
Nhưng bit lại nằm trên một cái trống đang quay.
Muốn đọc một bit ở phía bên kia, máy phải chờ nó quay tới đầu đọc.
Nếu vấn đề nằm ở cái trống, tại sao không:
giữ từ tính, nhưng bỏ chuyển động?
Đó chính là bước tiếp theo.
Thay vì phủ vật liệu từ lên một hình trụ quay, người ta dùng hàng nghìn chiếc vòng ferrite cực nhỏ đứng yên.
Mỗi vòng giữ đúng một bit.
Ô vuông sẫm ở giữa tấm ảnh chứa 1.024 chiếc vòng nhỏ.
Nhưng một chiếc vòng không có công tắc, không có màn hình và cũng không quay.
Làm sao nó nhớ được 0 hay 1?
Giữ lại từ tính, bỏ cái trống
Trống từ lưu bit bằng cách từ hoá những vùng nhỏ trên bề mặt.
Một vùng có thể bị từ hoá theo trạng thái này hoặc trạng thái ngược lại.
Ta gọi một trạng thái là 0, trạng thái kia là 1.
Điều hay của từ tính là sau khi đã tạo trạng thái, nó không cần được liên tục cấp điện để giữ nguyên.
Vì vậy ý tưởng của trống từ không sai.
Chỉ có cách bố trí các bit là bất tiện.
TRỐNG TỪ
bit bit bit bit bit
↓ ↓ ↓ ↓ ↓
╭────────────────────╮
│ │ ↻ quay
╰────────────────────╯
↑
đầu đọc
Đầu đọc đứng yên.
Các bit phải quay tới nó.
Bây giờ thử đảo ngược ý tưởng:
thay vì
BIT DI CHUYỂN → đầu đọc
hãy để
BIT ĐỨNG YÊN → tín hiệu điện đi tới bit
Muốn làm được vậy, mỗi bit phải trở thành một mẩu vật liệu từ riêng.
Mẩu vật liệu ấy là một chiếc vòng nhỏ làm bằng ferrite.
Một chiếc vòng có hai trạng thái
Ferrite là một vật liệu có từ tính.
Khi chiếc vòng ferrite bị từ hoá, từ trường chạy vòng quanh chiếc vòng.
Nó có thể chạy theo một trong hai chiều.
Ta chỉ cần quy ước:
chiều này = 1
chiều ngược lại = 0
Điểm quan trọng không phải chiều nào là 0 hay 1.
Mà là chiếc vòng có hai trạng thái ổn định.
Sau khi đã bị từ hoá, nó giữ nguyên trạng thái ấy.
Không có xung phải chạy vòng quanh một ống.
Không có điện tích phải refresh liên tục.
Không có cái trống nào phải quay.
Vậy phần giữ bit đã xong.
Nhưng làm sao đổi một vòng từ 0 sang 1?
Ghi bit bằng dòng điện
Dòng điện chạy qua một sợi dây tạo ra từ trường quanh sợi dây đó.
Nếu xâu dây qua chiếc vòng ferrite rồi cho dòng điện đủ mạnh chạy qua, từ trường của dây có thể làm chiếc vòng đổi chiều từ hoá.
Đó chính là ghi.
dòng điện theo chiều A
↓
từ trường quanh dây
↓
vòng bị từ hoá theo một chiều
↓
1
Đảo chiều dòng:
dòng điện theo chiều B
↓
từ trường đổi chiều
↓
vòng bị từ hoá ngược lại
↓
0
Như vậy, ghi một bit chỉ cần:
cho dòng điện đúng chiều chạy qua chiếc vòng.
Nhưng một máy tính không có một vòng.
Nó có hàng nghìn vòng.
Nếu kéo một sợi dây riêng tới từng vòng thì:
1.024 bit → 1.024 đường điều khiển
Bộ nhớ càng lớn, số dây càng khủng khiếp.
May mắn là chiếc vòng ferrite còn có một tính chất rất hữu ích:
dòng điện yếu chưa đủ để làm nó lật trạng thái.
Chính điều này giúp người ta chọn được một vòng trong cả nghìn vòng.
Hai dây cùng chọn một bit
Các vòng được xếp thành một lưới.
Mỗi vòng nằm ở giao điểm của:
- một dây ngang X
- một dây dọc Y
Hãy tưởng tượng một lưới nhỏ:
Y1 Y2 Y3 Y4
│ │ │ │
X1 ─────── ○ ─── ○ ─── ○ ─── ○
│ │ │ │
X2 ─────── ○ ─── ○ ─── ○ ─── ○
│ │ │ │
X3 ─────── ○ ─── ○ ─── ○ ─── ○
│ │ │ │
X4 ─────── ○ ─── ○ ─── ○ ─── ○
Giả sử một vòng cần mức từ trường tương ứng với 1 để đổi trạng thái.
Máy không gửi 1 qua một dây.
Nó gửi:
X3 → 0,5
Y2 → 0,5
Các vòng nằm trên X3 chỉ nhận 0,5.
Chưa đủ.
Các vòng nằm trên Y2 cũng chỉ nhận 0,5.
Vẫn chưa đủ.
Chỉ có vòng nằm ở đúng giao điểm X3 + Y2 nhận cả hai:
0,5 + 0,5 = 1
Và chỉ vòng đó đổi trạng thái.
Y1 Y2 Y3 Y4
↓
X1 ○ ○ ○ ○
X2 ○ ○ ○ ○
X3 ────── ○ ─── [●] ─── ○ ─── ○
↑
được chọn
X4 ○ ○ ○ ○
Đây là nguyên lý dòng trùng hợp — coincident current.
Hai dòng riêng lẻ đều quá yếu.
Chỉ nơi chúng trùng nhau mới đủ mạnh để lật vòng.
Nhờ vậy, với một tấm 32 × 32:
32 × 32 = 1.024 vòng
nhưng chỉ cần chọn một trong 32 đường X và một trong 32 đường Y để đi tới đúng vòng cần ghi.
- Hàng 110110010
- Hàng 200000000
- Hàng 300000000
- Hàng 400000000
- Hàng 500000000
- Hàng 600000000
- Hàng 700000000
- Hàng 800000000
Bấm một vòng để đổi chiều từ hoá: xoay thuận = 1, xoay ngược = 0. Hoặc chọn một dây X và một dây Y: chỉ vòng ở giao điểm nhận đủ dòng để lật.
Trong mô phỏng, hãy chọn một dây X, sau đó chọn một dây Y.
Quan sát vòng ở giao điểm.
Chỉ vòng đó nhận đủ dòng để đổi trạng thái.
Đây chính là thứ trống từ không làm được.
Không cần chờ bit quay tới đầu đọc.
Máy có thể chọn thẳng vị trí cần ghi.
Nhưng ghi được chưa có nghĩa là đọc được.
Chiều từ hoá nằm bên trong chiếc vòng.
Làm sao biết nó đang là 0 hay 1?
Đọc bằng cách thử lật chiếc vòng
Ngoài dây X và Y, còn có một dây khác chạy qua các vòng.
Nó được gọi là dây sense — dây cảm nhận.
Dây sense không giữ bit.
Nó chỉ làm một việc:
phát hiện lúc một vòng thay đổi trạng thái từ hoá.
Để đọc một bit, máy dùng X và Y để thử ghi 0 vào vòng đó.
Có hai trường hợp.
Nếu vòng đang là 0
Máy thử ghi 0.
Nhưng vòng vốn đã là 0 nên không cần đổi trạng thái.
đang là 0
↓
thử ghi 0
↓
không lật
↓
sense không có xung
Máy kết luận:
bit vừa đọc là 0.
Nếu vòng đang là 1
Máy lại thử ghi 0.
Lần này chiếc vòng phải đổi từ:
1 → 0
Khi từ trường thay đổi, dây sense nhận được một xung điện nhỏ.
đang là 1
↓
thử ghi 0
↓
vòng LẬT
↓
sense có xung
Máy kết luận:
bit vừa đọc là 1.
Tóm lại:
| Khi thử ghi 0 | Dây sense | Bit ban đầu |
|---|---|---|
| Vòng không lật | Không có xung | 0 |
| Vòng lật | Có xung | 1 |
Cách đọc này rất thông minh.
Nhưng có một vấn đề.
Đọc xong thì bit đã bị xoá
Giả sử vòng ban đầu giữ 1.
Để phát hiện nó, máy vừa ép nó về 0.
Nghĩa là sau khi đọc:
trước khi đọc: 1
đọc
↓
sau khi đọc: 0
Đọc đã phá dữ liệu.
Kiểu đọc này gọi là đọc phá huỷ — destructive read.
Nhưng máy đã biết giá trị vừa đọc là 1.
Vì vậy ngay sau đó nó chỉ việc ghi 1 trở lại.
1
↓
đọc
↓
0
↓
biết vừa đọc được 1
↓
ghi lại 1
Có thêm một bước ghi lại, nhưng tất cả vẫn diễn ra bằng tín hiệu điện.
Không phải chờ xung chạy qua một ống.
Không phải chờ cái trống quay.
Lõi từ đã ghép được hai ý hay
Nhìn lại các bộ nhớ của chương trước:
| Bộ nhớ | Ý hay | Điểm vướng |
|---|---|---|
| Ống thuỷ ngân | nhiều bit dùng chung phần cứng | phải chờ xung chạy tới |
| Ống Williams | chọn trực tiếp vị trí cần đọc | điện tích tự phai |
| Trống từ | từ tính giữ bit không cần liên tục duy trì | phải chờ trống quay |
| Lõi từ | từ tính + chọn trực tiếp từng vị trí | mỗi bit vẫn là một vòng thật |
Lõi từ giữ lại điều tốt nhất của trống từ:
dùng từ tính để giữ trạng thái.
Nhưng thay vì đặt các bit trên một bề mặt quay, nó cho mỗi bit một vị trí cố định.
Rồi lưới X và Y cho phép máy đi thẳng tới vị trí đó.
TRỐNG TỪ
bit đứng trên bề mặt quay
→ phải chờ
LÕI TỪ
bit đứng yên trong lưới
→ chọn X + Y
→ tới đúng bit
Đó là bước thay đổi quan trọng:
Bit không còn phải đi tới đầu đọc. Tín hiệu điện đi tới bit.
Từ một tấm 1.024 vòng thành bộ nhớ máy tính
Một trong những máy quan trọng trong lịch sử bộ nhớ lõi từ là Whirlwind tại MIT.
Máy được thiết kế cho những công việc cần phản ứng theo thời gian thực.
Bộ nhớ dựa trên CRT trước đó là một điểm yếu.
Năm 1953, nhóm phát triển đưa một bộ nhớ lõi từ 32 × 32 vào Whirlwind.
Một mặt phẳng chứa:
32 × 32 = 1.024 bit
Mỗi bit là một vòng ferrite.
Từ đó, bộ nhớ lõi từ dần trở thành công nghệ bộ nhớ chính phổ biến của máy tính trong nhiều năm.
Nó giải quyết được gần như toàn bộ những vấn đề mà các công nghệ trước để lại:
| Máy cần | Lõi từ làm thế nào? |
|---|---|
| Bit đứng yên | mỗi bit là một vòng ferrite cố định |
| Chọn trực tiếp một bit | chọn một dây X + một dây Y |
| Không cần refresh để giữ bit | từ hoá tự giữ trạng thái |
| Không có trống quay | toàn bộ lưới đứng yên |
| Ghi 0 hoặc 1 | đổi chiều từ hoá |
| Đọc bit | dây sense phát hiện vòng có lật hay không |
Có thể tóm tắt toàn bộ bộ nhớ lõi từ bằng ba động tác:
GIỮ
chiều từ hoá của vòng = 0 hoặc 1
GHI
X + Y tạo đủ từ trường → lật vòng
ĐỌC
thử ép vòng về 0 → sense xem nó có lật không
Một chiếc vòng nhỏ đã trở thành một ô nhớ hoàn chỉnh.
Nhưng chính chữ “một chiếc vòng” lại là vấn đề tiếp theo.
Mỗi bit vẫn là một vật thật
Nhìn kỹ tấm core memory một lần nữa.
Mỗi chấm nhỏ không phải là một hình được in lên bề mặt.
Nó là một chiếc vòng ferrite thật.
1 vòng = 1 bit
Muốn 1.024 bit:
cần 1.024 vòng
Muốn 100.000 bit:
cần 100.000 vòng
Và mỗi vòng còn phải nằm đúng vị trí trong lưới dây.
Các vòng rất nhỏ.
Dây phải được xâu xuyên qua chúng với độ chính xác cao.
Nhiều công đoạn từng phải làm thủ công, thường dưới kính phóng đại.
Một bit bây giờ đã nhỏ hơn rất nhiều so với một cụm đèn điện tử.
Nhưng nó vẫn là một vật thể riêng biệt phải được chế tạo và lắp vào bộ nhớ.
Máy tính càng mạnh, nhu cầu bộ nhớ càng tăng:
1 nghìn bit
10 nghìn bit
100 nghìn bit
1 triệu bit
...
Nếu thêm một bit đồng nghĩa với thêm một chiếc vòng, cách sản xuất này cuối cùng cũng sẽ gặp giới hạn.
Vấn đề không còn là:
“Làm sao giữ được một bit?”
Lõi từ đã trả lời rất tốt câu đó.
Vấn đề mới là:
“Làm sao sản xuất thật nhiều bit?”
Muốn đi từ hàng nghìn bit lên hàng triệu bit, người ta cần một cách hoàn toàn khác.
Không phải:
làm 1 ô nhớ
làm thêm 1 ô nhớ
làm thêm 1 ô nhớ
...
mà là:
tạo hàng nghìn
hoặc hàng triệu ô nhớ
CÙNG MỘT LÚC
trên cùng một miếng vật liệu.
Làm sao tạo ra hàng triệu ô nhớ cùng một lúc trên một miếng vật liệu?