2.1 MÁY TÍNH THẾ HỆ THỨ NHẤT (1945 – 1958)
Máy ENIAC (Electronic Numerical Integrator And Computer), do John Mauchly và John Presper Eckert (đại học Pensylvania, Mỹ) thiết kế và chế tạo, là chiếc máy số hoá điện tử đa năng đầu tiên trên thế giới.
Nguồn gốc: Dự án chế tạo máy ENIAC được bắt đầu vào năm 1943. Đây là một nỗ lực nhằm đáp ứng yêu cầu thời chiến của BRL (Ballistics Research Laboratory – Phòng nghiên cứu đạn đạo quân đội Mỹ) trong việc tính toán chính xác và nhanh chóng các bảng số liệu đạn đạo cho từng loại vũ khí mới.
Số liệu kỹ thuật: ENIAC là một chiếc máy khổng lồ với hơn 18000 bóng đèn chân không, nặng hơn 30 tấn, tiêu thụ một lượng điện năng vào khoảng 140kW và chiếm một diện tích xấp xỉ 1393 m2. Mặc dù vậy, nó làm việc nhanh hơn nhiều so với các loại máy tính điện cơ cùng thời với khả năng thực hiện 5000 phép cộng trong một giây đồng hồ.
Điểm khác biệt giữa ENIAC & các máy tính khác:
Hoạt động thực tế: Máy ENIAC bắt đầu hoạt động vào tháng 11/1945 với nhiệm vụ đầu tiên không phải là tính toán đạn đạo (vì chiến tranh thế giới lần thứ hai đã kết thúc) mà để thực hiện các tính toán phức tạp dùng trong việc xác định tính khả thi của bom H. Việc có thể sử dụng máy vào mục đích khác với mục đích chế tạo ban đầu cho thấy tính đa năng của ENIAC. Máy tiếp tục hoạt động dưới sự quản lý của BRL cho đến khi được tháo rời ra vào năm 1955.
Với sự ra đời và thành công của máy ENIAC, năm 1946 được xem như năm mở đầu cho kỷ nguyên máy tính điện tử, kết thúc sự nỗ lực nghiên cứu của các nhà khoa học đã kéo dài trong nhiều năm liền trước đó.
Như đã đề cập ở trên, việc lập trình trên máy ENIAC là một công việc rất tẻ nhạt và tốn kém nhiều thời gian. Công việc này có lẻ sẽ đơn giản hơn nếu chương trình có thể được biểu diễn dưới dạng thích hợp cho việc lưu trữ trong bộ nhớ cùng với dữ liệu cần xử lý. Khi đó máy tính chỉ cần lấy chỉ thị bằng cách đọc từ bộ nhớ, ngoài ra chương trình có thể được thiết lập hay thay đổi thông qua sự chỉnh sửa các giá trị lưu trong một phần nào đó của bộ nhớ.
Ý tưởng này, được biết đến với tên gọi "khái niệm chương trình được lưu trữ", do nhà toán học John von Neumann, một cố vấn của dự án ENIAC, đưa ra ngày 8/11/1945, trong một bản đề xuất về một loại máy tính mới có tên gọi EDVAC (Electronic Discrete Variable Computer). Máy tính này cho phép nhiều thuật toán khác nhau có thể được tiến hành trong máy tính mà không cần phải nối dây lại như máy ENIAC.
Tiếp tục với ý tưởng của mình, vào năm 1946, von Neuman cùng các đồng nghiệp bắt tay vào thiết kế một máy tính mới có chương trình được lưu trữ với tên gọi IAS (Institute for Advanced Studies) tại học viện nghiên cứu cao cấp Princeton, Mỹ. Mặc dù mãi đến năm 1952 máy IAS mới được hoàn tất, nó vẫn là mô hình cho tất cả các máy tính đa năng sau này.
Cấu trúc tổng quát của máy IAS, như được minh họa trên hình 2.1, gồm có:
Một bộ nhớ chính để lưu trữ dữ liệu và chương trình.
Một đơn vị số học – luận lý (ALU – Arithmetic and Logic Unit) có khả năng thao tác trên dữ liệu nhị phân.
Một đơn vị điều khiển có nhiệm vụ thông dịch các chỉ thị trong bộ nhớ và làm cho chúng được thực thi.
Thiết bị nhập/xuất được vận hành bởi đơn vị điều khiển.
Hầu hết các máy tính hiện nay đều có chung cấu trúc và chức năng tổng quát như trên. Do vậy chúng còn có tên gọi chung là các máy von Neumann.
Hình 2.1 Cấu trúc của máy IAS
Do vai trò quan trọng của máy IAS đối với ngành công nghiệp máy tính, tiếp theo đây chúng ta sẽ tìm hiểu một cách ngắn gọn về hoạt động của nó.
Bộ nhớ của máy IAS gồm 1000 vị trí lưu trữ, gọi là word, với mỗi word chứa 40 chữ số nhị phân (40 bit). Cả dữ liệu và chỉ thị đều được lưu trong word. Do đó các số phải được biểu diễn trong hệ nhị phân và các chỉ thị cũng có các mã nhị phân tương ứng. Hình 2.2 minh họa các dạng thức này. Mỗi số được biểu diễn bằng 1 bit dấu và một giá trị 39 bit. Một word có thể chứa 2 chỉ thị 20 bit, với mỗi chỉ thị gồm một mã thao tác 8 bit (op code) đặc tả thao tác sẽ được thực hiện và một địa chỉ 12 bit định hướng đến một word trong bộ nhớ (địa chỉ này đi từ 0 đến 999).
Hình 2.2 Các dạng thức bộ nhớ của máy IAS
Đ
ơn vị điều khiển vận hành máy IAS bằng cách lấy các chỉ thị từ bộ nhớ và thực thi lần lượt mỗi lần một chỉ thị. Để giải thích cách hoạt động này, chúng ta cần đến sơ đồ cấu trúc chi tiết hơn như trong hình 2.3. Hình vẽ này cho thấy rằng cả đơn vị điều khiển và ALU đều chứa các vị trí lưu trữ , được gọi là các thanh ghi, xác định như sau:
Thanh ghi vùng đệm bộ nhớ (MBR): chứa một word sẽ được lưu trữ trong bộ nhớ, hay sẽ được dùng để nhận một word từ bộ nhớ.
Thanh ghi địa chỉ bộ nhớ (MAR): đặc tả địa chỉ trong bộ nhớ sẽ được ghi/đọc từ/vào MBR.
Thanh ghi chỉ thị (IR): chứa mã thao tác (op code) 8 bit của chỉ thị được thực thi.
Thanh ghi vùng đệm chỉ thị (IBR): được tận dụng để lưu tạm thời chỉ thị bên phải trong một word của bộ nhớ.
Bộ đếm chương trình (PC): chứa địa chỉ của cặp chỉ thị kế tiếp được lấy ra từ bộ nhớ.
Bộ tích lũy (AC) và Bộ nhân – thương số (MQ): được tận dụng để lưu tạm thời các toán hạng và kết quả các thao tác của ALU. Lấy ví dụ, kết quả của phép nhân 2 số 40 bit là 1 số 80 bit thì phần 40 bit hiệu lực nhất được lưu trong AC, phần 40 bit còn lại lưu trong MQ.
Hình 2.3 Cấu trúc mở rộng của máy tính IAS
Máy IAS hoạt động nhờ thực hiện lập đi lập lại một chu kỳ chỉ thị, như được thể hiện trong hình 2.4. Mỗi chu kỳ chỉ thị gồm hai chu kỳ con là tải lệnh và thực thi lệnh. Trong chu kỳ tìm/lấy lệnh, mã thao tác của chỉ thị kế tiếp được tải vào trong IR và phần địa chỉ được tải vào trong MAR. Chỉ thị này có thể được lấy từ IBR, hay có thể nhận được từ bộ nhớ bằng cách tải một word vào MBR, sau đó đi xuống đến IBR, IR, và MAR.
Khi mã thao tác đã ở trong IR, chu kỳ thực thi lệnh được thực hiện. Mạch điều khiển thông dịch mã thao tác và thực thi chỉ thị bằng cách gửi tín hiệu điều khiển thích hợp khiến cho dữ liệu được di chuyển hay một thao tác được tiến hành bởi ALU.
Máy IAS có tất cả 21 chỉ thị được chia thành các nhóm sau:
Truyền dữ liệu: di chuyển dữ liệu giữa bộ nhớ và các thanh ghi ALU hoặc giữa hai thanh ghi ALU.
Rẽ nhánh không điều kiện: thông thường thì đơn vị điều khiển thực thi các chỉ thị theo dãy đến từ bộ nhớ. Dãy chỉ thị này có thể được thay đổi bằng một chỉ thị rẽ nhánh. Việc làm này giúp ích cho các thao tác lặp.
Rẽ nhánh có điều kiện: nhánh rẽ phụ thuộc vào một điều kiện, do đó cho phép đặt các điểm quyết định.
Số học: các thao tác do ALU đảm nhận.
Chỉnh sửa địa chỉ: cho phép địa chỉ được tính toán trong ALU và sau đó chèn vào trong các chỉ thị lưu trong bộ nhớ. Việc làm này cho phép một chương trình có khả năng định địa chỉ linh hoạt.
Hình 2.4 cũng chỉ ra nhiều ví dụ về thực thi chỉ thị bằng đơn vị điều khiển. Chúng ta cần chú ư là mỗi thao tác đòi hỏi nhiều bước. Một số trong chúng rất tỉ mỉ, ví dụ như thao tác nhân cần 39 thao tác con cho 39 vị trí bit, ngoại trừ bit dấu.
Hình 2.4 Sơ
đồ một phần hoạt động của máy IAS