Phát triển của máy tính số

Máy tính số

Máy tính số là máy có khả năng giải những bài toán cho mọi nguời bằng cách thi hành lệnh đưa cho nó. Chuỗi lệnh mô tả cách thực hiện tác vụ nào đó được gọi là chương trình (program). Mạch điện trên từng máy tính có thể nhận diện và trực tiếp thi hành tập lệnh đơn giản mà mọi chương trình đều phải chuyển đổi trước khi thi hành. Những lệnh cơ bản này hiếm khi phức tạp hơn:

– Cộng 2 con số.

– Kiểm tra xem con số có bằng 0 hay không.

– Di chuyển dữ liệu từ vùng nhớ này sang vùng nhớ khác trên máy tính.

Gộp chung lại, lệnh cơ sở của máy tính tạo thành ngôn ngữ cho phép con người giao tiếp với máy tính. Ngôn ngữ như thế được mệnh danh là ngôn ngữ máy (machine language). Người thiết kế máy tính mới phải quyết định xem nên đưa lệnh nào vào ngôn ngữ máy. Thường họ tìm cách đơn giản hóa lệnh cơ sở, hài hòa với yêu cầu về hiệu suất thi hành và chủ đích dùng máy tính để giảm độ phức tạp và chi phí của thiết bị điện tử cần thiết. Do hầu hết ngôn ngũ máy đều quá đơ giản, nên người sử dụng chúng cảm thấy khó khăn và tẻ nhạt.

Có thế tấn công vấn đề này theo hai cách chính: cả hai cách đều dính dáng đến thiết kế tập lệnh mới tiện dụng hơn tập lệnh máy. Khi hợp lại, những lệnh mới này còn tạo thành ngôn ngữ, (gọi là L2), giống như lệnh máy tạo thành ngôn ngữ (gọi là Ll). Hai phương pháp này khác nhau ở cách máy tính thi hành chương trình đuợc viết bằng L2, mà suy cho cùng thì chỉ có thể thi hành chương trình được viết bàng ngôn ngữ máy, L1.

Một phương pháp thi hành chương trình được viết bằng L2 là trước tiên thay thế từng lệnh trong đó bằng chuỗi lệnh tương đương trong Ll. Kết quả, chương trình sẽ gồm toàn bộ lệnh Ll. Lúc đó, máy tính thi hành chương trình L1 mới thay cho chương trình L2 cũ. Kỹ thuật này có tên là dịch (translation).

Một kỹ thuật khác là viết chương trình L1 lấy chương trình L2 làm dữ liệu nhập rồi thi hành chúng bằng cách kiểm tra lần lượt từng lệnh và thi hành thẳng chuỗi lệnh L1 tương đương. Kỹ thuật này không đòi hỏi tạo trước chương trình mới bằng Ll, được gọi là thông dịch (interpretation) và chương trình thi hành có tên là trình thông dịch (interpreter).

Dịch và thông dịch tương tự nhau. Trong cả hai phương pháp, lệnh L2 đuợc thi hành bằng cách thi hành chuỗi lệnh L1 tương đương. Có khác chăng là ở kỹ thuật dịch, nguyên cả chương trình L2 được chuyển thành chương trình L1, bỏ chương trình L2 đi, rồi thi hành chương trình L1 mới. Trong kỹ thuật thông dịch, cứ sau khi kiểm tra và giải mã từng lệnh L2 là thi hành ngay.

Để giảm độ phức tạp, người ta phát minh ra tập lệnh khác hướng con người hơn và hướng máy ít hơn so với L2. Tập lệnh thứ ba này tạo thành ngôn ngữ (gọi là L3). Người ta có thể viết chương trình L3 như thể máy ảo có L3 là ngôn ngôn ngữ máy tồn tại thực sự những chương trình như thế có thể được dịch sang L2 hoặc được trình thông dịch L2 thi hành.

Quá trình phát minh nguyên chuỗi ngôn ngữ (chuỗi này tiện dụng hơn chuỗi trước) có thể kéo dài vô tận cho đến khi đạt được chuỗi thích hợp. Mỗi ngôn ngữ lấy ngôn ngữ trước làm cơ sở, do đó chúng ta có thế thấy máy tính dùng kỹ thuật này làm chuỗi tầng (layer) hoặc cấp độ (level), cái này chồng lên cái kia, như minh họa ở Hình 1.1. Cấp độ hoặc ngôn ngữ dưới cùng là dơn giản nhất, và cấp độ hoặc ngôn ngữ cao nhất là tinh vi nhất.

Ngôn ngữ, cấp độ, máy ảo

Giữa ngôn ngữ và máy ảo có mối quan hệ quan trọng. Mỗi máy có ngôn ngữ máy nào đó, bao gồm tất cả lệnh mà máy có khả nảng thi hành. Thực tế, máy quy định ngôn ngữ. Tương tự, ngôn ngữ quy định máy – cụ thể là, máy có thể thi hành tất cả chương trình được viết bằng ngôn ngữ đó tất nhiên, máy được ngôn ngữ nào đó quy định có thể sẽ quá phức tạp và đắt tiền tới mức khó mà chế tạo thành từ mạch điện được. Máy có C, Pascal hoặc COBOL là ngôn ngữ máy tuy phức tạp thật nhưng dễ hiểu và trong dễ chế tạo.

Có thế xem máy có cấp độ n là n máy ảo khác nhau, mỗi máy ảo có ngôn ngữ máy khác nhau. Chúng ta sẽ hoán đổi thuật ngữ “cấp độ” và “máy ảo”. Duy chương trình viết bằng ngôn ngữ L1 là có thể được thi hành trục tiếp qua mạch điện, khỏi cần dịch hoặc thông dịch chen vào. Chương trình viết bàng L2, L3,… Ln phải được thông dịch bởi trình thông dịch chạy trên cấp độ dưới hoặc dịch sang ngôn ngữ khác tương ứng với cấp độ dưới.

Người viết chương trình cho máy ảo cấp độ n không cần biết trình thông dịch và trình dịch. Cấu trúc máy bảo đảm thi hành những chương trình này bàng cách này hay cách khác. Chỉ quan tâm một chút xem chúng có được trình thông dịch thi hành từng bước hay không, đến phiên trình thông dịch đó lại được trình thông dịch khác thi hành hay thiết bị điện tử có thi hành chúng trực tiếp hay không. Trong cả hai trường hợp, kết quả đều như nhau- chương trình được thi hành.

Hầu hết nhà lập trình bằng máy cấp độ n chỉ quan tâm đến cấp độ trên cấp độ tối thiểu hợp dịch ngôn ngữ máy ở dưới cùng. Tuy nhiên, nguời đi tìm hiểu cách vận hành thật sự của máy tính phải nghiên cứu mọi cấp độ. Người thích thiết kế máy tính mới hay cấp độ mới (tức là máy ảo mới) cũng phải làm quen với cấp độ khác ngoài cấp độ trên.

Tổ chức máy tính có cấu trúc xuất phát từ việc xem máy tính là cấu trúc phân cấp, cung cấp khung sườn để tìm hiểu cách tố chức máy tính. Ngoài ra, thiết kế hệ thống máy tính như một chuỗi cấp độ còn giúp bảo đảm sản phẩm sẽ có cấu trúc hoàn chỉnh.

Máy tính đa cấp hiện đại

Đa số máy tính hiện nay có từ hai hay nhiều cấp độ. Hình 1.2, Cấp độ 0 là phần cứng thật sự của máy. Mạch điện thi hành chương trình ngôn ngữ máy thuộc cấp độ 1. Để cho hoàn chỉnh, một cấp độ khác nữa bên duới cấp độ 0 nằm trong lĩnh vực điện tử được gọi là cấp độ thiết bị (device level), ở cấp độ này, nhà thiết kế sẽ xem xét các transistor, là cấp đọ thấp nhất đối với nhà thiết kế máy tính.

Ở cấp độ thấp nhất mà chúng ta sẽ nghiên cứu, cấp độ logic số (digital logic level), có những đối tượng lý thú mang tên là cổng (gate). Mặc dù được tạo từ thành phần tương tự (như transistor chẳng hạn) song có thể lập mô hình cổng như là thiết bị kỹ thuật số. Mỗi cổng có nhiềuu ngõ vào số (tín hiệu đại diện như 1 hoặc 0) và tính toán duới dạng ngõ ra một hàm đơn giản nào đó của những ngõ vào này, chẳng hạn như AND hoặc OR. Mỗi cổng được tạo ra từ một số transistor.

Ở cấp độ 1, cấp độ ngôn ngữ máy thật sự và gọi là cấp độ vi lập trình (microprogramming level). Mỗi máy cấp độ 1 có nhiều vi chương trình chạy trên nó. Mỗi vi chương trình ngầm quy định ngôn ngữ cấp độ 2 (và máy ảo có ngôn ngữ máy là ngôn ngữ đó). Nhúng máy cấp độ 2 này cũng có nhiều nét chung. Thậm chí máy cấp độ 2 của nhà sản xuất khác cũng có nét giống nhiều hơn là khác thường người ta gọi cấp độ đó là cấp độ máy quy ước (conventional machine level). Một số máy tính không có cấp độ vi lập trình. Trên những máy này, lệnh cấp độ máy quy ước được thi hành trực tiếp qua mạch điện (cấp độ 0), mà không có trình thông dịch cấp độ 1 nào xen vào. Kết quầ là cấp độ 1, chứ không phải cấp độ 2, là cấp độ máy quy uớc.

Cấp độ 3 thường là cấp độ lai. Đa số lệnh ở ngôn ngữ này còn thuộc ngồn ngữ cấp độ 2. Ngoài ra, có tập lệnh mới, tổ chức bộ nhớ khác, khả năng chạy hai hay nhiều chương trình song song, và nhiều đặc tính khác. Giữa các máy cấp độ 3 có nhiều biến thể hơn là giữa các máy cấp độ 1 hoặc các máy cấp độ 2.