03/10 Từ máy tính cơ học đến ENIAC Các chương

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?

Phòng máy ENIAC với những dãy tủ đầy dây cáp và hai người đang vận hành
Ảnh: Ảnh Lục quân Hoa Kỳ, Glen Beck và Betty Snyder lập trình ENIAC / Wikimedia Commons · public domain

Ở bài trước, ta đã biết có thể dùng hai trạng thái để biểu diễn 01.

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 cộng bánh răng: 999 + 1
Bốn bánh số xếp ngang: nghìn, trăm, chục, đơn vị. Kim chỉ ở đỉnh mỗi bánh cho biết chữ số đang hiện. Mũi tên nhớ 1 nối mỗi bánh với bánh bên trái. nghìn 0123456789 0 trăm 0123456789 9 chục 0123456789 9 đơn vị 0123456789 8 nhớ 1 nhớ 1 nhớ 1

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.

Hai người phụ nữ đứng trước các tủ điều khiển của ENIAC
Betty Jennings và Frances Bilas bên ENIAC năm 1946. Trước đó, họ làm công việc tính đường đạn. Ảnh: Ảnh Lục quân Hoa Kỳ / Wikimedia Commons · public domain

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.

Một relay điện thoại cũ có cuộn dây và các lá tiếp điểm
Một relay điện thoại cũ. Dòng điện qua cuộn dây làm các tiếp điểm đóng hoặc mở. Ảnh: Sir Boris / Wikimedia Commons · CC BY-SA 3.0

Thử bật và tắt relay:

Relay: một dòng điện bật một dòng điện khác
Sơ đồ relay: pin và cuộn dây quấn quanh lõi sắt ở bên trái, thanh tiếp điểm có lò xo nằm phía trên lõi, mạch bên phải có pin và đèn báo nối qua tiếp điểm đầu vào Cuộn dây quấn quanh lõi sắt Đèn 0 tiếp điểm cố định lò xo Tiếp điểm

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:

Relay nối bước tính này với bước tính sau
Số đầu vào 4
Mạch A + 3 4 → ?
Relay click Relay đang mở
Mạch B × 2 chưa có điện
Kết quả ?

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.

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.

Một hàng đèn điện tử chân không nhiều kích cỡ
Các loại đèn điện tử chân không. ENIAC dùng khoảng 18.000 chiếc. Ảnh: Stefan Riepl / Wikimedia Commons · CC BY-SA 2.0 DE

Thử thay đổi điện áp ở grid:

Đèn điện tử chân không: bật tắt dòng electron bằng điện áp
Hình cắt đèn ba cực: cathode ở giữa được nung nóng và phát electron, grid dạng lưới xoắn bao quanh, plate hình trụ bọc ngoài, tất cả nằm trong vỏ thủy tinh hút chân không Cathodenung nóng, phát electron Grid (lưới)chặn hoặc cho qua Platedương, hút electron Vỏ thủy tinhhút chân không
dòng qua đèn

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.

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ử.

Toàn cảnh phòng máy ENIAC với các dãy tủ lớn
ENIAC gồm nhiều tủ điện tử lớn xếp thành dãy quanh căn phòng. Ảnh: Ảnh Lục quân Hoa Kỳ / Wikimedia Commons · public domain

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.