Từ máy tính cơ học đến ENIAC
Trước transistor, máy tính làm phép tính tự động bằng cách nào?
Ở bài trước, ta đã biết có thể dùng hai trạng thái để biểu diễn 0 và 1.
Nhưng một đống trạng thái chưa tạo thành máy tính.
Nếu con người vẫn phải tự tay đổi từng trạng thái sau mỗi phép tính, con người vẫn đang làm phần lớn công việc.
Một chiếc máy thực sự hữu ích phải làm được điều khó hơn:
tính xong bước này rồi tự chuyển sang bước tiếp theo.
Câu chuyện ấy bắt đầu trước cả điện.
Nó bắt đầu với bánh răng.
Khi bánh răng biết cộng
Hãy thử tính:
999 + 1
Ta biết kết quả là 1000.
Một cỗ máy cơ học có thể làm điều tương tự bằng những bánh xe có 10 vị trí:
0 1 2 3 4 5 6 7 8 9
Mỗi bánh đại diện cho một hàng:
- đơn vị
- chục
- trăm
- nghìn
Khi bánh đơn vị đang ở 9 và quay thêm một nấc:
9 → 0
nó đồng thời đẩy bánh hàng chục thêm một nấc.
Đó chính là thao tác nhớ 1 khi ta cộng trên giấy.
Thử mô phỏng:
Máy đang hiện 998. Bấm vào một bánh để quay nó thêm một nấc.
Bánh răng này có thể điều khiển bánh răng khác.
Từ thế kỷ 17, những máy của Pascal và Leibniz đã dùng các cơ cấu kiểu này để làm phép tính.
Sau đó xuất hiện những máy tính cơ học để bàn: người dùng nhập số, quay tay hoặc nhấn phím, còn bánh răng bên trong thực hiện phép cộng, trừ, nhân hoặc chia.
Máy đã biết tính.
Nhưng vẫn còn một vấn đề:
con người phải ra lệnh cho từng bước.
Babbage muốn máy tự chạy cả một chuỗi
Đầu thế kỷ 19, hàng hải, thiên văn và kỹ thuật phụ thuộc rất nhiều vào những bảng số in sẵn.
Những bảng này phải trải qua nhiều bước:
người tính
↓
người chép
↓
người sắp chữ
↓
in thành bảng
Sai ở đâu thì lỗi đi thẳng vào bản in.
Charles Babbage muốn một cỗ máy tự làm cả quá trình.
Ông thiết kế Difference Engine để bánh răng tự chạy qua một chuỗi phép tính và tạo ra bảng số.
Sau đó, với Analytical Engine, ý tưởng còn tham vọng hơn:
- store: giữ số
- mill: tính toán
- thẻ đục lỗ: ra lệnh cho máy phải làm gì tiếp theo
Đây đã khá giống ý tưởng của máy tính hiện đại:
dữ liệu
↓
bộ phận tính
↓
kết quả
Nhưng toàn bộ máy vẫn dựa vào cơ học.
Bánh răng phải quay.
Trục phải xoay.
Các bộ phận phải ăn khớp chính xác.
Máy càng lớn thì càng khó chế tạo và càng khó chạy nhanh.
Babbage không hoàn thành được cỗ máy hoàn chỉnh khi còn sống.
Nhưng ông đã đặt ra câu hỏi quan trọng:
Có thể giao cả một chuỗi phép tính cho máy và để nó tự chạy không?
Khoảng một thế kỷ sau, chiến tranh khiến câu hỏi đó trở nên cấp bách.
Một bài toán không ai muốn tính tay
Trong Thế chiến thứ hai, Lục quân Mỹ cần rất nhiều bảng bắn cho pháo.
Pháo thủ không thể mỗi lần bắn lại ngồi giải phương trình.
Họ cần một bảng đã tính sẵn:
với loại pháo này, loại đạn này và khoảng cách này, phải nâng nòng bao nhiêu độ?
Để tạo ra bảng đó, người ta phải tính trước đường bay của đạn trong rất nhiều điều kiện.
Mỗi đường bay là một chuỗi phép tính dài.
Và những phép tính ấy do con người thực hiện.
Từ computer khi đó còn được dùng để chỉ người làm tính.
Tại Moore School của Đại học Pennsylvania, nhiều phụ nữ được tuyển để tính đường đạn bằng giấy, bảng số và máy tính cơ học.
Vấn đề là tốc độ.
Một viên đạn có thể bay chưa tới một phút, nhưng tính toàn bộ đường bay của nó bằng máy cơ học có thể mất hàng chục giờ.
Một bảng bắn lại cần rất nhiều đường bay.
Máy cơ học đã giúp tính nhanh hơn.
Nhưng con người vẫn phải:
đọc kết quả
→ nhập bước tiếp theo
→ chạy máy
→ đọc kết quả
→ nhập tiếp
Muốn nhanh hơn nữa, bước trước phải tự kích hoạt bước sau.
Muốn máy tự chạy, điện phải điều khiển điện
Giả sử máy vừa hoàn thành phép tính A.
Ta muốn kết quả đó tự kích hoạt phép tính B.
Không có người đứng giữa.
Nói bằng ngôn ngữ điện:
một tín hiệu điện phải có khả năng bật hoặc tắt một mạch điện khác.
Ngành điện thoại lúc đó đã dùng một linh kiện làm được việc này:
relay, hay rơ-le.
Relay: công tắc được bật bằng điện
Relay có một cuộn dây và một tiếp điểm kim loại.
Khi có dòng điện:
dòng điện
↓
cuộn dây tạo từ trường
↓
kéo miếng kim loại
↓
đóng tiếp điểm
↓
mạch thứ hai có điện
Khi ngắt dòng điện, tiếp điểm bật trở lại.
Thử bật và tắt relay:
Lò xo giữ thanh tiếp điểm hở, nên mạch đèn không có dòng.
Điểm quan trọng không phải là nam châm.
Mà là:
điện đã điều khiển được điện.
Điều đó cho phép các bước tính nối với nhau.
Một phép tính tự kích hoạt phép tính tiếp theo
Giả sử ta muốn thực hiện:
4 + 3
rồi lấy kết quả nhân tiếp với 2.
Con người có thể làm:
4 + 3 = 7
7 × 2 = 14
Nhưng máy phải biết lúc nào phép cộng đã xong để tự chuyển sang phép nhân.
Thử mô phỏng:
Mạch B chưa được nối.
Mạch A đang chờ số 4. Relay đang mở, nên Mạch B chưa có điện.
Đó là điều máy cơ học trước đây rất khó làm nhanh: tự chuyển từ phép tính này sang phép tính tiếp theo.
Relay nằm giữa hai bước.
Khi bước đầu hoàn thành, tín hiệu của nó kích hoạt relay.
Relay đóng mạch tiếp theo.
Bước hai bắt đầu.
Mạch A
↓
relay
↓
Mạch B
Không cần ai nhìn thấy 7 rồi gạt công tắc.
Đầu ra của relay này có thể kích hoạt relay khác, rồi relay khác nữa.
Ghép đủ nhiều relay, ta có thể tạo ra một chuỗi thao tác tự chạy.
Những máy như Z3 của Konrad Zuse và Harvard Mark I đã dùng các cơ cấu điện-cơ để tự động thực hiện những chuỗi tính toán phức tạp.
Nhưng relay vẫn còn một điểm yếu.
Relay vẫn là một cỗ máy cơ học tí hon
Mỗi lần relay đổi trạng thái, một miếng kim loại thật sự phải:
di chuyển
→ chạm tiếp điểm
→ bật trở lại
Dù quãng đường rất ngắn, nó vẫn là chuyển động cơ học.
Điều đó gây ra ba vấn đề:
- mất thời gian để di chuyển
- tiếp điểm bị mòn
- khó tăng tốc lên rất cao
Muốn máy nhanh hơn nhiều, cần bỏ hẳn phần chuyển động.
Có thể điều khiển dòng điện mà không phải di chuyển một miếng kim loại nào không?
Đèn điện tử: công tắc không cần chuyển động
Câu trả lời là đèn điện tử chân không (vacuum tube).
Một loại đèn có ba phần chính:
- cathode: phát electron
- anode: hút electron
- grid: điều khiển dòng electron ở giữa
Grid hoạt động như một chiếc cổng.
Thay đổi điện áp ở grid có thể cho dòng electron đi qua hoặc chặn nó lại.
Thử thay đổi điện áp ở grid:
kéo hoặc dùng phím ← → để xoay · mô hình giản lược, không theo tỷ lệ
Cathode còn lạnh nên gần như không phát electron, grid đặt thế nào cũng không có dòng.
1 đèn
Một đèn điện tử chân không: một công tắc điện tử, bật tắt dòng electron mà không có bộ phận nào chuyển động.
- 1 đèn. Một đèn điện tử chân không: một công tắc điện tử, bật tắt dòng electron mà không có bộ phận nào chuyển động.
- Vài đèn thành một mạch. Một đèn chưa làm được gì nhiều. Nối vài đèn với nhau thành mạch thì mới có thể giữ một trạng thái hoặc đếm.
- 10 đèn. Mười đèn trên một khung: chỉ đủ cho vài flip-flop, mỗi flip-flop dùng hai đèn.
- 100 đèn. Một trăm đèn đã cần một khung lớn (bố trí minh hoạ). Mỗi đèn cần sợi đốt nóng liên tục, nên khung toả nhiệt.
- 1.000 đèn. Một nghìn đèn, xếp minh hoạ thành nhiều khung. Người đứng cạnh để so kích thước.
- 10.000+ đèn. Hơn mười nghìn đèn: các panel phải xếp kín tường một căn phòng.
- ENIAC. ENIAC dùng khoảng 18.000 đèn. Từng đèn là một công tắc có thể cháy, và mọi sợi đốt phải được cấp điện suốt lúc máy chạy.
Khác biệt với relay nằm ở đây:
| Relay | Đèn điện tử |
|---|---|
| điện | điện |
| ↓ | ↓ |
| từ trường | grid |
| ↓ | ↓ |
| kim loại chuyển động | electron thay đổi |
| ↓ | ↓ |
| điện | điện |
Relay phải chờ một vật chuyển động.
Đèn điện tử thì không.
Vì vậy nó có thể chuyển trạng thái nhanh hơn rất nhiều.
Và đó là công nghệ được chọn cho một cỗ máy mới ở Moore School.
ENIAC
Năm 1943, Lục quân Mỹ tài trợ cho Moore School xây một máy tính điện tử để tăng tốc việc tính đường đạn.
Máy đó là ENIAC:
Electronic Numerical Integrator and Computer.
Thay vì dùng relay cho phần tính toán chính, ENIAC dùng khoảng 18.000 đèn điện tử.
ENIAC có thể thực hiện khoảng 5.000 phép cộng mỗi giây.
Một phép tính đường đạn từng mất nhiều giờ với con người và máy cơ học có thể được thực hiện trong khoảng vài chục giây.
Điều đáng chú ý là toán học không thay đổi.
Vẫn là:
cộng
trừ
nhân
chia
Thứ thay đổi là công tắc bên trong máy.
Bánh răng
phải quay
↓
Relay
phải kéo kim loại
↓
Đèn điện tử
chỉ cần điều khiển electron
Mỗi lần loại bỏ một phần chuyển động cơ học, máy lại nhanh hơn.
Sáu phụ nữ từng làm công việc tính đường đạn sau đó trở thành những lập trình viên đầu tiên của ENIAC.
Nhưng ENIAC chưa phải chiếc PC khổng lồ
Nhìn ENIAC, rất dễ nghĩ nó chỉ là một máy tính hiện đại nhưng to hơn.
Không hẳn.
ENIAC chủ yếu tính theo hệ thập phân. Các bộ đếm của nó biểu diễn chữ số 0–9, chứ không lưu mọi con số thành chuỗi bit nhị phân giống CPU hiện đại.
Điều quan trọng hơn với câu chuyện của chúng ta là:
đèn điện tử cho phép một tín hiệu điện điều khiển một tín hiệu điện khác mà không cần chuyển động cơ học.
Đó là nguyên lý mà máy tính điện tử tiếp tục sử dụng.
Nhưng đèn điện tử tạo ra một vấn đề mới.
18.000 chiếc đèn trong một căn phòng
Một đèn điện tử đã khá lớn.
ENIAC có gần 18.000 chiếc.
Mỗi chiếc:
- phải được nung nóng
- chiếm chỗ
- dùng điện
- sinh nhiệt
- có thể hỏng
Cả máy nặng khoảng 27 tấn và tiêu thụ khoảng 150 kW điện.
Máy tính đã thoát khỏi giới hạn tốc độ của bánh răng và relay.
Đổi lại, nó trở thành:
to, nóng và tốn điện.
Nếu muốn một ngày nào đó đặt hàng triệu, rồi hàng tỷ công tắc vào một chiếc máy, đèn điện tử không thể là câu trả lời cuối cùng.
Ta cần một linh kiện vẫn làm được điều này:
tín hiệu điện
↓
điều khiển
↓
tín hiệu điện khác
nhưng phải:
- nhỏ hơn
- mát hơn
- ít tốn điện hơn
- bền hơn
- chế tạo được với số lượng cực lớn
Linh kiện đó là transistor.