c Bộ logic và số học Arithmetic and logic unit - ALU Hầu hết các hoạt động tính toán của máy tính được thực hiện tại bộ logic số học có trong vi xử lý.. Để thực hiện một nhiệm vụ cho tr
Trang 1F 7 G
GIÁO TRÌNH
KIẾN TRÚC MÁY TÍNH 02
PHAN VĂN NGHĨA
1998
Trang 2MỤC LỤC
MỤC LỤC 2
CHƯƠNG 1: CẤU TRÚC CƠ BẢN CỦA PHẦN CỨNG & PHẦN MỀM MÁY TÍNH 4
1.1 CÁC THÀNH PHẦN CỦA MÁY TÍNH 4
a) Thiết bị nhập (input device) 5
b) Bộ nhớ (memory) 5
c) Bộ logic và số học (Arithmetic and logic unit - ALU) 6
d) Thiết bị ra (output device) 7
e) Bộ điều khiển (control unit - CU) 7
1.2 HOẠT ĐỘNG CỦA MÁY TÍNH 7
1.3 CẤU TRÚC BUS 10
1.4 PHẦN MỀM (SOFTWARE) 11
1.5 ĐẶC TRƯNG CỦA MÁY TÍNH 13
1.6 ĐÔI NÉT VỀ LỊCH SỬ PHÁT TRIỂN CỦA MÁY TÍNH 15
CHƯƠNG 2: BIỂU DIỄN SỐ LIỆU 17
2.1 CÁC LOẠÏI SỐ LIỆU 17
2.2 HỆ THỐNG SỐ THẬP PHÂN (DECIMAL NUMBER SYSTEM) 17
2.3 HỆ THỐNG SỐ NHỊ PHÂN (BINARY NUMBER SYSTEM) 18
2.4 HỆ THỐNG SỐ BÁT PHÂN (OCTAL NUMBER SYSTEM) 19
2.5 HỆ THỐNG SỐ THẬP LỤC PHÂN ( HEXADECIMAL NUMBER SYSTEM)20 2.6 MÃ BCD 21
2.7 MÃ ALPHANUMERIC 22
2.8 HỆ THỐNG SỐ CÓ DẤU CHẤM ĐỘNG (FLOATING-POINT NUMBER SYSTEM) 24
2.9 PHƯƠNG PHÁP CHẲN LẺ ( PARITY METHODE ) 26
CHƯƠNG 3 : CỔNG LOGIC & MẠCH SỐ 27
3.1 ĐẠI SỐ BOOL 27
3.2 BẢNG SỰ THẬT (TRUTH TABLE) 28
3.3 PHÉP CỘNG LOGIC (OR) 29
3.4 PHÉP AND LOGIC 29
3.5 PHÉP BÙ (NOT OPERATION) 30
3.6 MÔ TẢ MẠCH LOGIC BẰNG ĐẠI SỐ BOOL 31
3.7 TÍNH GIÁ TRỊ CỦA MỘT BIỂU THỨC BOOL 32
3.8 THỰC HIỆN MẠCH LOGIC TỪ BIỂU THỨC BOOL 32
3.9 CỔNG NOR, NAND VÀ XOR 33
3.10 CÁC ĐỊNH LÝ BOOL 35
3.11 ĐỊNH LÝ DE MORGAN 36
3.12 THIẾT KẾ MẠCH LOGIC TỔ HỢP 37
3.13 ĐƠN GIẢN HÀM BOOL BẰNG PHƯƠNG PHÁP ĐẠI SỐ 39
Trang 33.15 FLIP - FLOP 40
3.16 ĐỒNG HỒ VÀ FF CÓ ĐỒNG HỒ 42
a) Khái niệm đồng hồ 42
b) FF có đồng hồ (Clocked Flip - Flops) 43
c) Các lối vào không đồng bộ 45
3.17 ỨNG DỤNG CỦA FF 45
a)Lưu trữ và truyền số liệu: 45
b) Mạch đếm (counter) 48
CHƯƠNG 4: BỘ LOGIC SỐ HỌC (ALU) 51
4.1 CẤU TRÚC CỦA ALU 51
4.2 BỘ CỘNG NHỊ PHÂN 51
a) Bộ cộng nhị phân một nửa (half-adder) 52
b) Bộ cộng đầy đủ ( Full - adder) 53
4.3 BIỂU DIỄN SỐ CÓ DẤU 54
4.4 BIỂU DIỄN SỐ CÓ DẤU DÙNG HỆ BÙ 2 55
4.5 PHÉP CỘNG TRONG HỆ BÙ 2 57
4.6 PHÉP TRỪ TRONG HỆ BÙ 2 58
4.7 CỘNG VÀ TRỪ BCD 58
a) Cộng BCD 58
b) Trừ BCD 59
4.8 CỘNG VÀ TRỪ HEX 59
a) Cộng hai số HEX 59
b) Trừ hai số hex 60
BÀI TẬP CHƯƠNG 2,3 & 4 61
Trang 4CHƯƠNG 1: CẤU TRÚC CƠ BẢN CỦA PHẦN CỨNG &
P HẦN MỀM MÁY TÍNH
1.1 CÁC THÀNH PHẦN CỦA MÁY TÍNH
Máy tính số (digital computer) hay máy tính (computer) là thiết bị tính toán điện tử có tốc độ rất cao Máy tính nhận các thông tin đã được số hóa (digitized), xử lý chúng theo theo một danh sách các lệnh chứa sẵn bên trong máy tính và cho kết quả là thông tin ra Danh sách các lệnh gọi là chương trình máy tính (computer program) Chương trình máy tính được lưu trữ tại một bộ phận bên trong máy tính gọi là bộ nhớ (memory)
Có nhiều loại máy tính Chúng khác nhau về kích thước, tốc độ và giá thành Loại máy tính thông dụng nhất là máy tính cá nhân (personal computer - PC) PC được sử dụng rộng rãi ở nhà, trong các cơ quan hay trường học Máy tính xách tay (notebook computer) có kích thước rất bé có thể đặt gọn trong vali Trạm làm việc (workstations) là các máy tính trong 1 mạng máy tính Mainframe và Supercomputer là những máy tính có công suất tính toán cực mạnh Mainframe dùng để xử lý các bài toán trong thương mại Super computer dùng trong các ứng dụng mà ở đó số phép toán phải tiến hành trong 1 giây là số rất lớn (cỡ 1013 phép tính/s) như dự báo thời tiết, điều khiển các chuyến bay vũ trụ, thiết kế máy bay, nghiên cứu hạt nhân
Ở dạng đơn giản nhất, một máy tính bao gồm 5 thành phần chính độc lập (hình 1-1): thiết bị nhập (input), thiết bị xuất (output), bộ nhớ (memory), bộ logic số học (ALU) và bộ điều khiển (Control Unit)
Hình 1-1 : Các thành phần của một máy tính
CU
ALU MEMORY
OUTPUT INPUT
Thiết bị nhập nhận thông tin đã được mã hoá từ các hoạt động của con người, từ các thiết bị cơ điện (chẳng hạn bàn phím) hay từ một máy tính khác thông qua đường truyền tin kỹ thuật số Thông tin nhận được hoặc được lưu trữ trong thiết bị nhớ để sử dụng sau này hoặc được xử lý trực tiếp để thu được kết quả như mong muốn Các bước xử lý thông tin được quy định bởi chương trình chứa trong bộ nhớ Cuối cùng
Trang 5kết quả được gửi trở lại thế giới bên ngoài thông qua thiết bị xuất Tất cả các hoạt động trên đây được chỉ dẫn bởi bộ điều khiển
ALU và CU được chế tạo trong 1 chip gọi là bộ xử lý trung tâm (Central Processing Unit = CPU) hay đơn giản là Processor Từ trung tâm xuất hiện vào thời kỳ đầu mới khai sinh máy tính, ở đó các tính toán đều tập trung trong một chip Các máy tính hiện đại thường chứa nhiều Processor, nhưng thuật ngữ CPU vẫn được dùng rộng rãi Cũng cần nói thêm rằng, trong PC, Processor được gọi là bộ vi xử lý (Micro Processor Unit =MPU) Các thiết bị dùng để nhập và xuất dữ liệu được gọi chung là thiết bị vào ra (IO unit)
Lệnh (Instructions) hay lệnh máy (machine instructions) là chỉ dẫn để:
• Truyền thông tin giữa các máy tính hay trong phạm vi một máy tính và các ngoại vi của nó
• Chỉ ra các phép toán logic số học phải thực hiện trên số liệu
Một tập các lệnh để thực hiện một nhiệm vụ gọi là một chương trình (program) Thông thường chương trình được lưu trữ trong trong bộ nhớ Bộ xử lý lấy (fetches) lệnh từ bộ nhớ Lệnh phải được giải mã (decoded), sau đó nó được thực hiện Máy tính thực hiện các lệnh trong chương trình một cách lần lượt, trừ khi nó bị ngắt (interrupt) bởi người điều khiển hoặc bởi các thiết bị ngoại vi nối với máy tính
Dữ liệu (data) là các số hoặc ký tự đã được mã hóa mà nó được dùng như là các toán hạng (operand) của lệnh Data bao gồm mọi thông tin đã được số hóa Đôi khi data cũng được hiểu là một chương trình hoàn chỉnh mà một chương trình khác sử dụng nó Ví dụ khi biên dịch một chương trình nguồn (source program) ngôn ngữ cấp cao thành chương trình ngôn ngữ máy thì chương trình nguồn được xem là data của trình biên dịch (compiler)
Thông tin đưa vào máy tính phải được mã hóa ở dạng thích hợp Các số, các ký tự hoặc lệnh được mã hóa thành một chuỗi số nhị phân gọi là các bits Mỗi bit chỉ nhận một trong 2 giá trị khả dĩ 0 hoặc 1
Các ký tự Alphanumeric cũng được biễu diễn bởi mã nhị phân Mã ký tự dùng phổ biến trong máy tính là mã ASCII
a) Thiết bị nhập (input device)
Máy tính nhận thông tin đã được mã hóa thông qua thiết bị nhập Quá trình này gọi là đọc số liệu Thiết bị nhập thường dùng nhất là bàn phím (keyboard) Keyboard được nối sao cho khi một phím được nhấn, ký tự hoặc số tương ứng được tự động chuyển thành mã nhị phân và được gửi trực tiếp tới bộ nhớ hoặc vi xử lý Có nhiều thiết bị nhập khác như: chuột (mouse), máy quét (scanner), ADC
b) Bộ nhớ (memory)
Chức năng của bộ nhớ là lưu giữ chương trình và số liệu Có 2 loại bộ nhớ: bộ nhớ sơ cấp (bộ nhớ chính – bộ nhớ trong - Primary Memory – Main Memory-
Trang 6Internal Memory) và bộ nhớ thứ cấp (bộ nhớ ngoài - bộ nhớ phụ -Secondary Memory - Auxiliary Memory - External Memory)
Bộ nhớ sơ cấp hay bộ nhớ chính (Main memory) là bộ nhớ nhanh Các chương trình được nạp lên bộ nhớ chính trong khi chúng đang được thực hiện Bộ nhớ chính bao gồm một số lớn các ô nhớ bán dẫn Mỗi ô nhớ chứa được một bit thông tin Việc đọc hoặc viết thông thường được tiến hành với nhiều ô nhớ gọi là từ nhớ (memory word) Bộ nhớ chính được tổ chức sao cho nội dung của một từ (n bit) có thể được truy xuất bằng lệnh đọc hoặc viết bộ nhớù Số các bit trên một từ nhớ gọi là độ dài từ (word length) của máy tính Độ dài từ của các máy tính có thể là 8,16, 32 hoặc 64 bit
Tổng số ô nhớ trên bộ nhớ gọi là dung lượng (capacity) của bộ nhớ Dung lượng bộ nhớ trong của PC có thể là vài MB đến hàng trăm MB
Để có thể truy xuất tới mọi từ nhớ trên bộ nhớ, mỗi từ nhớ được gán một địa chỉ (Address) riêng biệt Từ nhớ trong bộ nhớ có thể được truy xuất bằng cách chỉ ra địa chỉ và lệnh đọc viết tương ứng Số liệu được xử lý theo một từ, bội của từ hoặc một phần của từ Khi bộ nhớ được truy xuất, thông thường một từ của số liệu được đọc từ bộ nhớ hoặc được viết vào bộ nhớ
Chương trình phải nằm trên bộ nhớ khi đang thi hành Lệnh và số liệu có thể được viết vào bộ nhớ hay đọc ra dưới sự điều khiển của vi xử lý Thời gian cần thiết để truy xuất tới một vị trí nhớ trong bộ nhớ gọi là thời gian truy xuất bộ nhớ (memory access time = Tacc) Các bộ nhớ có Tacc không phụ thuộc vị trí nhớ gọi là bộ nhớ truy xuất ngẫu nhiên (Random Access Memories = RAM) Tacc có giá trị vài chục ns (nano second) trong các máy tính hiện đại
Mặc dù bộ nhớ chính rất quan trọng, nhưng giá thành lại quá cao Vì vậy người
ta dùng thêm bộ nhớ phụ (secondary memory) khi muốn lưu giữ một lượng lớn thông tin không sử dụng thường xuyên Bộ nhớ phụ có thể là đĩa từ (magnetic disks) hay đĩa quang (Compact Disc)
c) Bộ logic và số học (Arithmetic and logic unit - ALU)
Hầu hết các hoạt động tính toán của máy tính được thực hiện tại bộ logic số học có trong vi xử lý Giả sử rằng cần phải cộng 2 số trên bộ nhớ chính Hai số này phải được chuyển vào ALU, ở đây phép cộng được thực hiện Kết quả của phép cộng có thể lưu trữ trong bộ nhớ hoặc vẫn giữ lại trong vi xử lý để sử dụng ngay lập tức
Mọi phép toán logic và số học, ví dụ: nhân, chia hay so sánh 2 số đều được thực hiện tại ALU Không phải tất cả các toán hạng cần cho tính toán phải ở trong bộ nhớ chính Vi xử lý có những phần tử nhớ tốc độ cao, gọi là các thanh ghi (registers) Các thanh ghi được dùng để lưu giữ những toán hạng được dùng thường xuyên trong khi tính toán Mỗi thanh ghi có thể lưu giữ một từ số liệu Thời gian truy xuất thanh ghi là từ 5 đến 10 ns (nhanh hơn thời gian truy xuất bộ nhớ chính)
ALU và bộ điều khiển thường là các thành phần có tốc độ hoạt động nhanh hơn các thành phần khác nối với hệ máy tính Điều này cho phép sử dụng chỉ một vi
Trang 7xử lý để điều khiển một số lớn các thiết bị ngoại vi có tốc độ hoạt động khác nhau như bộ nhớ ngoài, màn hình, máy in …
d) Thiết bị ra (output device)
Thiết bị ra làm việc theo nguyên tắc ngược lại với thiết bị vào Chức năng của thiết bị ra là gửi các kết quả đã được xử lý ra ngoài
Ví dụ điển hình của thiết bị xuất là máy in (printer) Các kết quả đã được xử lý bởi CPU có thể được gửi ra ngoài thông qua máy in Máy in có nhiều kiểu: máy in kim
ma trận điểm, máy in phun mực, máy in laser Công nghệ ngày nay cho phép in khoảng 15 PPM Đó là tốc độ rất cao của các hệ thống cơ học tuy nhiên nó vẫn là tốc độ rất chậm đối với vi xử lý
e) Bộ điều khiển (control unit - CU)
Bộ nhớ, bộ logic số học và các thiết bị nhập xuất lưu giữ và xử lý thông tin, thực hiện các tác vụ nhập xuất Hoạt động của các bộ phận này phải được phối hợp nhịp nhàng với nhau Bộ điều khiển có chức năng thực hiện việc phối hợp này Bộ điều khiển một mặt gửi các tín hiệu điều khiển đến các bộ phận, mặt khác nó luôn luôn theo dõi trạng thái của các bộ phận đó để cho những tín hiệu điều khiển hợp lý
Ví dụ việc chuyển số liệu giữa bộ nhớ và các ngoại vi phải được điều khiển bởi bộ điều khiển Bộ điều khiển phải tạo ra tín hiệu thời gian mà nhờ tín hiệu này các hành động của các bộ phận xảy ra đúng vào thời điểm mong đợi Có thể nói rằng bộ điều khiển là một đơn vị độc lập và liên quan đến tất cả các bộ phận khác trong máy Trên thực tế, mạch điện của bộ điều khiển được phân bố đến khắp nơi trong máy Một tập hợp các đường dây điều khiển (control bus) mang các tín hiệu thời gian Các tín hiệu này dùng để đồng bộ hoạt động của tất cả các bộ phận trong máy
Tóm lại, hoạt động tổng quát của một máy tính có thể tóm tắt như sau:
• Máy tính nhận thông tin dưới dạng chương trình và số liệu thông qua thiết bị nhập Thông tin được lưu giữ trong bộ nhớ máy tính
• Thông tin được lưu giữ trong bộ nhớ được lấy vào ALU dưới sự điều khiển của chương trình Tại ALU, thông tin được xử lý
• Thông tin đã được xử lý được đưa ra ngoài thông qua thiết bị xuất
• Tất cả các hoạt động bên trong máy tính được chỉ dẫn bởi bộ điều khiển
1.2 HOẠT ĐỘNG CỦA MÁY TÍNH
Trong phần 1.1 chúng ta đã nói rằng hoạt động của máy tính được điều khiển bởi các lệnh (instructions) Để thực hiện một nhiệm vụ cho trước, một chương trình tương ứng bao gồm một tập các lệnh sẽ được lưu giữ trong bộ nhớ chính Các lệnh riêng rẽ sẽ được đọc từ bộ nhớ vào vi xử lý Mỗi lệnh sẽ thực hiện một thao tác đã
Trang 8định sẳn Số liệu lưu giữ trên bộ nhớ được sử dụng như các toán hạng (operands) Ví dụ lệnh:
ADD AX, LOCA Lệnh này sẽ cộng toán hạng tại vị trí nhớ (địa chỉ) LOCA với toán hạng chứa trong thanh ghi AX (trong vi xử lý), kết quả của phép cộng đặt vào AX Nội dung ban đầu của ô nhớ tại vị trí LOCA vẫn giữ nguyên, trong khi đó nội dung ban đầu của thanh ghi AX bị xoá, thay vào đó là kết quả của phép cộng Lệnh này phải thực hiện qua vài bước Trước tiên lệnh được đọc từ bộ nhớ chính vào vi xử lý Tiếp theo nội dung của ô nhớ tại vị trí LOCA được đọc vào ALU rồi cộng với nội dung của AX Cuối cùng kết quả của phép cộng được lưu giữ trong thanh ghi AX
Việc chuyển số liệu giữa bộ nhớ chính và vi xử lý được bắt đầu bằng việc vi xử lý gửi địa chỉ của ô nhớ cần truy xuất và tín hiệu điều khiển hợp lý tới bộ nhớ Số liệu sau đó sẽ được chuyển giữa bộ nhớ và vi xử lý một cách tương ứng
Hình 1-2 là sơ đồ nối giữa vi xử lý và bộ nhớ chính Sơ đồ chỉ có ý nghĩa trong việc mô tả các chức năng của vi xử lý và bộ nhớ
Cùng với ALU và bộ điều khiển, vi xử lý còn có các thanh ghi dùng cho việc lưu trữ tạm thời số liệu Thanh ghi lệnh (IR - Instruction Register) giữ lệnh đang được thực hiện Bộ đếm chương trình (PC - Program Counter) chứa địa chỉ bộ nhớ của lệnh sẽ được thực hiện Sau khi thực hiện lệnh, nội dung của PC sẽ được cập nhật tới địa chỉ của lệnh tiếp theo Bình thường nội dung của PC sẽ tăng lên 1 nếu chương trình không bị một lệnh nhảy hay lệnh ngắt nào khác
Hình 1-2: Sơ đồ nối giữa CPU và bộ nhớ máy tính
Trang 9Bên cạnh IR và PC còn có n thanh ghi đa chức năng (General Purpose Register): R0 , R1 , RN-1 Các thanh ghi này được sử dụng vào nhiều mục đích khác nhau
Có hai thanh ghi dùng để giao tiếp với bộ nhớ là: Thanh ghi địa chỉ bộ nhớ (MAR Memory Address Register) và thanh ghi số liệu bộ nhớ (MDR Memory Data Register) MAR chứa điạ chỉ của ô nhớ cần truy xuất, còn MDR giữ nội dung của số liệu cần chuyển ( giữa Vi xử lý và bộ nhớ)
Chúng ta hãy xem xét các bước hoạt động cơ bản khi thực hiện 1 chương trình Chương trình chứa trong bộ nhớ chính Việc thực thi chương trình bắt đầu khi PC chỉ tới vị trí nhớ mà lệnh đầu tiên của chương trình được lưu giữ Nội dung của PC được chuyển tới MAR và một tín hiệu điều khiển đọc được gửi tới bộ nhớ Sau thời gian cần cho việc truy xuất bộ nhớ (Tacc), nội dung của từ nhớ (lệnh đầu tiên của chương trình) được đọc vào MDR Tiếp theo, nội dung của MDR được chuyển đến IR Tại thời điểm này lệnh đã sẳn sàng cho việc giải mã và thực hiện
Nếu lệnh là một phép toán mà ALU phải tính thì cần phải lấy các toán hạng cần thiết Nếu toán hạng đã có sẵn bên trong bộ nhớ (các toán hạng cũng có thể được chứa trong các thanh ghi dùng chung) thì nó phải được đọc vào ALU bằng cách gửi địa chỉ toán hạng tới MAR và khởi tạo chu trình đọc (read cycle) Toán hạng sau đó được đọc từ bộ nhớ vào MDR rồi chuyển tới ALU Sau khi một hoặc nhiều toán hạng được đọc theo cách này, ALU có thể thực hiện phép toán Nếu kết quả phép toán được lưu trữ trong bộ nhớ thì nó được gửi tới MDR Địa chỉ ô nhớ tại đó kết quả được lưu trữ sẽ được gửi tới MAR và chu trình viết (write cycle) sẽ được bắt đầu Trong khi một lệnh đang được thực hiện, nội dung của PC sẽ tăng lên sao cho nó chỉ tới địa chỉ của lệnh kế tiếp Ngay sau khi lệnh hiện hành được hoàn tất, lệnh mới sẽ được lấy vào vi xử lý để giải mã và thực hiện
Cùng với việc chuyển số liệu giữa bộ nhớ chính và vi xử lý, máy tính truy xuất số liệu từ các thiết bị vào và gửi kết quả đến thiết bị ra Do đó có một số lệnh máy cho phép chuyển số liệu vào ra
Việc thực hiện một chương trình có thể bị ngắt nếu một hoặc nhiều thiết bị ngoại vi yêu cầu được phục vụ Tín hiệu ngắt được tạo ra bởi các ngoại vi để yêu cầu
vi xử lý phải phục vụ chúng Ngắt cũng được tạo ra bởi lệnh INT trong các chương trình Vi xử lý sẽ cung cấp một dịch vụ theo yêu cầu bằng cách thi hành một chương trình con phục vụ ngắt (interrupt service routine) Trước khi phục vụ ngắt, trạng thái bên trong của vi xử lý phải được cất giữ vào bộ nhớ Bình thường, nội dung của PC, các thanh ghi đa chức năng và một số thông tin điều khiển phải được cất giữ Khi chương trình con phục vụ ngắt kết thúc, trạng thái của chương trình chính sẽ được phục hồi sao cho chương trình chính đã bị ngắt có thể tiếp tục
Bộ vi xử lý trên hình 1-2 có thể thực hiện theo vài cách Trong các máy tính cở nhỏ và cở trung, tất cả các thành phần của vi xử lý được chế tạo trên một chip VLSI (Very Large Scale Intergrated )
Trang 101.3 CẤU TRÚC BUS
Chúng ta đã phân tích các thành phần riêng biệt của máy tính Để toàn bộ hệ
thống có thể hoạt động được cần phải nối các thành phần ấy lại với nhau Có nhiều cách để làm điều này Chúng ta sẽ xem xét ở đây cách làm đơn giản nhất và cũng thường dùng nhất
Để đạt được tốc độ hoạt động cao, máy tính phải được tổ chức sao cho tất cả các đơn vị được nối song song với nhau thông qua một bus chung của toàn hệ thống (system bus) Bus là một tập hợp các đường dây dùng để nối các thiết bị với nhau Trong kiến trúc máy tính 1 bus, tại một thời điểm chỉ có một thiết bị chiếm quyền điều khiển bus mà thôi Khi một từ số liệu được chuyển giữa các đơn vị, tất cả các bit được chuyển song song (mỗi bit được truyền đồng thời với các bit khác trên những đường dây riêng) Các đường dây dùng để truyền số liệu gọi là bus số liệu (data bus) Cùng với bus số liệu còn có các đường dây dùng cho địa chỉ và điều khiển Chúng được gọi tương ứng là bus địa chỉ (address bus) và bus điều khiển (control bus)
Hình 1-3 là sơ đồ nối các bộ phận của máy tính bằng một bus duy nhất
Bởi vì bus được dùng chung nên tại một thời điểm chỉ có 2 thiết bị được phép dùng bus Ưu điểm chủ yếu của cấu trúc 1 bus là giá thành thấp và nó cho phép nối hệ vi xử lý máy tính với các ngoại vi một cách mềm dẻo (có thể thêm hoặc bớt dễ dàng)
Hình 1-3: Cấu trúc một bus của máy tính Các thiết bị ngoại vi nối với bus có thể có tốc độ làm việc rất khác nhau: bàn phím và máy in tương đối chậm còn các ổ đĩa thì nhanh hơn Vi xử lý và bộ nhớ chính làm việc với tốc độ rất cao Vì tất cả các thiết bị liên lạc với nhau thông qua bus, nên
cơ chế truyền thông tin một cách hiệu quả là không cưỡng bức các thiết bị chậm làm việc nhanh lên mà cần có biện pháp dung hòa sự khác biệt về tốc độ của các thiết bị Giải pháp chung là dùng các thanh ghi đệm (buffer registers) để giữ thông tin trong khi truyền Để mô tả kỹ thuật này chúng ta hãy xem xét việc truyền các ký tự giữa vi xử lý và máy in Vi xử lý gửi các ký tự dọc theo bus tới bộ đệm của máy in Do thanh ghi đệm trên máy in có tốc độ rất nhanh nên việc truyền các ký tự giữa vi xử lý và bộ đệm chiếm rất ít thời gian Khi bộ đệm máy in đã có số liệu, máy in bắt đầu in Trong
Trang 11tiến hành một hoạt động khác do vi xử lý điều khiển Trong khi máy in đang in số liệu trong thanh ghi đệm thì nó không thể nhận số liệu mới cho đến khi việc in hoàn tất Như vậy là thanh ghi đệm làm giảm sự khác biệt về tốc độ giữa vi xử lý, bộ nhớ và các ngoại vi Điều này tránh cho vi xử lý khỏi bị “chết “ do các ngoại vi chậm trong khi chuyển số liệu
1.4 PHẦN MỀM (SOFTWARE)
Phần mềm là tập hợp tất cả các chương trình để điều khiển hoạt động của máy
tính
Để người dùng (user) có thể nhập vào và chạy các chương trình ứng dụng (application program), máy tính phải có một vài phần mềm hệ thống (system software) Phần mềm hệ thống là tập hợp các chương trình nhằm thực hiện các chức năng chính sau đây:
• Nhận và thông dịch các lệnh của người sử dụng máy tính
• Nhận và soạn thảo các chương trình ứng dụng, lưu trữ chúng như là những tập tin (files) trên bộ nhớ ngoài
• Quản lý việc lưu trữ và cập nhật các tập tin trên bộ nhớ ngoài
• Chạy các chương trình ứng dụng chẳng hạn như chương trình bảng tính điện tử hoặc trò chơi mà số liệu được cung cấp bởi người dùng
• Điều khiển các thiết bị ngoại vi trong việc xuất nhập thông tin
• Dịch các chương trình nguồn được soạn thảo bởi người dùng thành chương trình ngôn ngữ máy
• Liên kết và chạy các chương trình ứng dụng được viết bởi người dùng bằng cách sử dụng các chương trình con thư viện chuẩn
Phần mềm hệ thống có chức năng kết hợp tất cả các hoạt động trên hệ thống máy tính Các chương trình ứng dụng thường được viết bởi ngôn ngữ lập trình cấp cao như C, Pascal trong đó các lập trình viên biểu diễn các bài toán dưới dạng không phụ thuộc vào máy tính cụ thể mà chương trình đó sẽ chạy Lập trình viên dùng các chương trình ngôn ngữ cấp cao không cần biết chi tiết tập lệnh máy Một chương trình
hệ thống gọi là compiler sẽ dịch chương trình ngôn ngữ cấp cao thành chương trình
ngôn ngữ máy thích hợp
Một thành phần rất quan trọng của phần mềm hệ thống là hệ điều hành (operating system = OS) OS là một chương trình lớn hoặc tập hợp các chương trình con Các chương trình con của OS thực hiện các nhiệm vụ phân phối các tài nguyên máy tính cho các chương trình ứng dụng riêng biệt Các nhiệm vụ này bao gồm việc sử dụng bộ nhớ chính và bộ nhớ phụ cho các chương trình và các tập tin số liệu, di chuyển số liệu giữa bộ nhớ và các ổ đĩa, thực hiện các tác vụ vào ra
Để hiểu được những nội dung cơ bản của OS, chúng ta sẽ xem xét một hệ thống có một vi xử lý, một ổ đĩa và một máy in Trước hết chúng ta hãy xem xét các bước khi chạy một chương trình ứng dụng Giả sử rằng chương trình ứng dụng đã
Trang 12được biên dịch từ một chương trình ngôn ngữ cấp cao thành chương trình ngôn ngữ máy và được lưu giữ trong đĩa Đầu tiên tập tin này được chuyển vào bộ nhớ chính Khi việc chuyển tập tin vào bộ nhớ hoàn tất, việc thực thi chương trình được bắt đầu Giả sử rằng chương trình này phải đọc một tập tin dữ liệu từ đĩa vào bộ nhớ chính, tiến hành một số tính toán trên số liệu rồi in kết quả ra máy in Khi chương trình thực thi đến đoạn cần tập tin dữ liệu thì chương trình yêu cầu OS chuyển tập tin dữ liệu từ đĩa vào bộ nhớ Sau khi chuyển tập tin dữ liệu vào bộ nhớ chính, OS trả lại quyền điều khiển cho chương trình ứng dụng Chương trình ứng dụng sẽ thực hiện việc tính toán trên số liệu theo yêu cầu Khi việc tính toán hoàn thành và kết quả đã sẳn sàng để in, chương trình ứng dụng một lần nữa trả quyền điều khiển cho OS OS sẽ chạy một chương trình con điều khiển máy in để in kết quả
Hình 1-4 là giản đồ thời gian mô tả sự chia sẻ (sharing) thời gian giữa chương trình ứng dụng và các chương trình con của OS
Hình 1-4: Sự chia sẻ thời gian trong PC
Trong khoảng thời gian to đến t1, một chương trình con của OS sẽ nạp chương trình ứng dụng từ đĩa vào bộ nhớ, chờ cho đến khi việc chuyển hoàn tất, điều khiển thực thi chương trình được trả cho chương trình ứng dụng Trong thời gian t2 đến t3 và t4 đến t5 cũng xảy ra hoạt động do chương trình con của OS điều khiển Vào thời điểm t5, OS có thể nạp và thực thi một chương trình ứng dụng khác
Cuối cùng cần phải nói rằng các tài nguyên mày tính có thể được sử dụng một cách hiệu quả hơn nếu có vài chương trình ứng dụng cùng được xử lý Lưu ý rằng vào thời điểm từ t4 đến t5, vi xử lý và đĩa là rãnh Lúc này OS có thể nạp và chạy một chương trình khác trong khi máy in đang làm việc Tương tự, vào thời điểm từ t0 đến t1, OS có thể điều khiển in kết quả của chương trình trước trong khi chương trình hiện
Trang 13tại đang nạp từ đĩa vào bộ nhớ Như thế là OS có nhiệm vụ sử dụng các tài nguyên máy tính một cách có hiệu quả khi một vài chương trình ứng dụng được thực hiện
1.5 ĐẶC TRƯNG CỦA MÁY TÍNH
Máy tính có nhiều đặc trưng như số đường số liệu và địa chỉ, dung lượng bộ nhớ, tốc độ đồng hồ, tổng thời gian thi hành 1 chương trình …Trong đó tổng thời gian cần thiết để thi hành một chương trình ứng dụng là một trong những đặc trưng quan trọng nhất của máy tính Bởi vì các chương trình ứng dụng được viết bằng ngôn ngữ cấp cao, do đó đặc trưng về tốc độ trên đây có liên quan đến cách thức mà trình biên dịch (compiler) dịch chương trình thành ngôn ngữ máy Đặc trưng tốc độ cũng bị ảnh hưởng bởi việc chọn lệnh ngôn ngữ máy và thiết kế phần cứng của máy tính Để có đặc trưng tốt nhất cần phải thiết kế trình biên dịch (compiler), tập lệnh máy (machine instruction set) và phần cứng phù hợp với nhau
Trong phần trước chúng ta đã mô tả cách thức mà OS tổ chức để các tài nguyên phần cứng khác nhau có thể làm việc vào cùng một thời điểm khi vài chương trình được thực thi cùng một lúc Rõ ràng rằng việc thực thi nhiều chương trình cùng một lúc sẽ cho đặc trưng tốc độ cao hơn là thực hiện chương trình một cách riêng rẽ Chúng ta hãy xem xét dòng các lệnh và số liệu được truyền giữa bộ nhớ và vi xử lý (hình 1-5) Hình 1-5 là một phần của hình 1-3 được vẽ lại cộng thêm bộ nhớ đệm (cache memory)
Hình 1-5: Vi xử lý với bộ nhớ cache
Vào lúc bắt đầu thực thi chương trình, tất cả các lệnh và số liệu có liên quan đã được lưu giữ trong bộ nhớ Trong qúa trình thực thi chương trình, lệnh lần lượt được đọc vào vi xử lý Khi thực hiện các lệnh có liên quan đến số liệu thì số liệu phải được lấy vào từ bộ nhớ chính Chúng ta hãy xem xét cái gì sẽ quy định tốc độ thực hiện thao tác này
Trang 14Các bộ vi xử lý đầy đủ có thể được chế tạo trên một chip riêng rẽ Tốc độ bên trong của vi xử lý khi thực hiện lệnh là rất cao, nhanh hơn cả tốc độ tối đa khi lấy lệnh và số liệu từ bộ nhớ chính Điều này có nghĩa là, nếu di chuyển lệnh và số liệu trên bus với thời gian cực tiểu sẽ rút ngắn thời gian thi hành lệnh Ví dụ: giả sử rằng một chương trình thực hiện nhiều lệnh lặp lại (trong một vòng lặp chẳng hạn) Trong trường hợp này tốc độ xử lý sẽ tăng lên nếu các lệnh và số liệu liên quan đến lệnh lặp có sẵn trong vi xử lý Trong các vi xử lý hiện đại người ta chế tạo sẵn một bộ nhớ tốc độ cao gọi là bộ nhớ cache (hình vẽ 1-5)
Trong các hệ thống có cache, lệnh và số liệu được xử lý đầu tiên sẽ được đặt trong cache Các lệnh tương tự sau đó sẽ được thực hiện nhanh hơn vì đã có sẵn trong cache
Sau đây chúng ta sẽ xem xét qúa trình thực hiện chương trình và các lệnh Mỗi một lệnh của chương trình ngôn ngữ máy cần một số bước để thực hiện Mỗi một bước cần một chu kỳ đồng hồ (clock cycle) của bộ điều khiển trong vi xử lý để hoàn thành Đồng hồ là tín hiệu có chu kỳ không thay đổi do mạch tạo đồng hồ tạo ra Người ta thường dùng thuật ngữ tần số (frequency) để chỉ đặc trưng của đồng hồ Đơn vị đo tần số là chu kỳ trong một giây (cycle per second) Trong kỹ thuật điện và điện tử thuật ngữ chu kỳ trong một giây, gọi là Hezt (Hz) Các đơn vị lớn hơn của Hz là KHz (1.000 Hz), MHz (1.000.000Hz) và GHz (1.000.000.000 Hz) Các vi xử lý hiện nay có tần số đồng hồ từ khoảng vài trăm MHz đến hàng GHz Một vi xử lý có đồng hồ 1000MHz (1GHz) thì chu kỳ đồng hồ của nó là 1ns (nano giây =1 phần tỷ của giây), nghĩa là nó thực hiện một bước trong lệnh hết 1 ns mà thôi Rõ ràng là vi xử lý có tần số đồng hồ càng cao thì tốc độ thực hiện chương trình càng nhanh
Gọi T là tổng thời gian cần để thực hiện một chương trình ngôn ngữ cấp cao Trình biên dịch tạo ra chương trình ngôn ngữ máy tương ứng với chương trình nguồn Giả sử cần N lệnh ngôn ngữ máy để thực hiện toàn bộ chương trình Số N không nhất thiết phải bằng với số lệnh trong chương trình đã được biên dịch Một số lệnh phải thực hiện nhiều lần và một số lệnh không thực hiện gì cả tuỳ thuộc vào số liệu được sử dụng Giả sử S là số bước trung bình để thực hiện một lệnh ngôn ngữ máy R là tốc độ đồng hồ (Hz) Tổng thời gian thực hiện chương trình là:
τ = (NxS)
R
Để có đặc trưng tốt cần giảm N và S, đồng thời tăng R
Tốc độ đồng hồ R phụ thuộc vào công nghệ được sử dụng để chế tạo vi xử lý Để giảm N và S cần có tập lệnh máy và trình biên dịch tốt Vi xử lý có tập lệnh đơn giản sẽ chỉ cần S bé hơn vi xử lý có tập lệnh phức tạp Tuy nhiên vi xử lý có tập lệnh đơn giản hơn sẽ có N lớn hơn
Cho đến thời điểm này chúùng ta giả sử rằng không có sự giao nhau (overlap) trong khi thực thi các bước lần lượt của lệnh Đặc trưng tốc độ sẽ được cải thiện đáng
Trang 15kể nếu có sự giao nhau trong khi thực hiện các bước của lệnh Kỹ thuật này gọi là ống dẫn (pipelining ) Xét lệnh sau:
τ tiến tới 1 Việc sử dụng bộ nhớ cache và kỹ thuật ống dẫn làm tăng đáng kể tốc độ xử lý
1.6 ĐÔI NÉT VỀ LỊCH SỬ PHÁT TRIỂN CỦA MÁY TÍNH
Máy tính đã ra đời cách đây hơn 50 năm Trong một thời gian dài trước đó, người ta sử dụng các thiết bị tính toán cơ học Vào 300 năm trước, một loạt các thiết
bị cơ học phức tạp đã được sử dụng để chế tạo nên máy tính Máy tính hồi ấy chỉ thực hiện được các phép toán cộng trừ, nhân và chia Giấy đục lỗ là một trong những phương pháp được dùng để đưa chương trình vào máy tính Các lỗ trên giấy được bộ phận cảm biến cơ học đọc vào máy tính Chúng được dùng để điều khiển một cách lần lượt các thao tác tính toán Các máy tính thời đó có thể tính các bảng lượng giác và logarit Kết quả được in ra giấy hoặc thể hiện bằng phiếu đục lỗ Trong thời gian chiến tranh thế giới thứ 2, các thiết bị relay cơ điện đã được sử dụng để thực hiện các chức năng điều khiển logic trên máy tính Cũng vào thời gian này, máy tính điện tử đầu tiên đã được thiết kế và chế tạo tại Đại học Pennsylvania dựa trên công nghệ đèn điện tử Đèn điện tử đã được dùng trong các thiết bị vô tuyến và radar Trong máy tính điện tử đầu tiên, chúng được dùng để thực hiện các chức năng logic và lưu trữ số liệu Công nghệ này đã mở ra một thời kỳ mới trong lịch sử phát triển của máy tính: máy tính điện tử số (digital computer)
Dựa vào công nghệ được sử dụng để chế tạo máy tính, người ta chia máy tính thành 4 thế hệ: Thế hệ thứ nhất từ 1945 đến 1955 Thế hệ thứ hai từ 1955 đến 1965 Thế hệ thứ ba từ 1965 đến 1975 và thế hệ thứ tư từ 1975 đến nay
• Thế hệ thứ nhất: Trong máy tính thế hệ 1, những nội dung chủ yếu của việc lưu giữ chương trình đã được đề xuất bởi John von Neumann Theo đó chương trình và số liệu được đặt trên bộ nhớ chính Ngôn ngữ Assembly đã được dùng để viết chương trình và sau đó nó phải được chuyển thành ngôn ngữ máy khi thực hiện Các phép toán đại số cơ bản được thực hiện chỉ trong vài mili giây bằng cách dùng công nghệ
Trang 16đèn điện tử để thực hiện các chức năng logic Máy tính thế hệ thứ nhất đã có tốc độ cao gấp 100 đến 1000 lần so với máy tính dựa trên công nghệ relay cơ điện trước đó Bộ nhớ dùng dây trễ (delay line memory) đã được sử dụng trước tiên Các chức năng vào ra đã được thực hiện bằng một thiết bị tương tự máy đánh chữ Sau đó bộ nhớ bằng xuyến từ và bộ nhớ dùng băng từ đã được thay thế cho bộ nhớ dùng dây trễ
• Thế hệ thứ hai: Vào năm 1940, transistor đã được phát minh bởi phòng thí nghiệm AT&T Bell (Mỹ) Transistor đã nhanh chóng thay thế đèn điện tử Công nghệ transistor đã đánh dấu sự bắt đầu của máy tính thế hệ thứ hai Bộ nhớ bằng xuyến từ và các thiết bị nhớ dùng trống từ đã được sử dụng rộng rãi vào thời kỳ này Các ngôn ngữ cấp cao, như Fortran, đã ra đời làm cho các lập trình viên viết chương trình dễ dàng hơn Các chương trình hệ thống gọi là Compiler đã được phát triển để dịch các chương trình ngôn ngữ cấp cao ra chương trình hợp ngữ tương ứng Các bộ xử lý vào ra riêng biệt cũng đã được chế tạo Chúng có thể làm việc song song với bộ xử lý trung tâm trong khi chạy các chương trình Điều này đã làm tăng rõ rệt đặc trưng tốc độ của toàn hệ thống IBM là nhà máy sản xuất máy tính chủ yếu vào thời kỳ này
• Thế hệ thứ ba: Với sự ra đời của công nghệ mới, công nghệ IC (integrated circuit
technology) đã cho phép chế tạo các bộ xử lý, các bộ nhớ làm việc nhanh hơn và giá thành thấp hơn Công nghệ IC cho phép chế tạo nhiều transistor trên một chip đơn tinh thể Các bộ nhớ IC đã bắt đầu thay thế các bộ nhớ bằng xuyến từ Cùng với công nghệ IC là kỹ thuật vi chương trình ( microprogramming), kỹ thuật xử lý song song (parallelism) và kỹ thuật ống dẫn ( pipelining) Các phần mềm hệ điều hành cho phép chia sẻ một cách có hiệu quả tài nguyên của hệ máy tính bởi một vài chương trình khác nhau Bộ nhớ đệm (cache memory) và bộ nhớ ảo (virtual memory) cũng đã được phát triển Các mainframe computer 360 của IBM và PDP minicomputer của hãng Digital Equiment là những sản phẩm thương mại chính vào thời kỳ này
• Thế hệ thứ tư: Vào đầu những năm 70, kỹ thuật chế tạo IC đã có thể chế tạo các bộ xử lý hoàn chỉnh và phần lớn các bộ phận của bộ nhớ chính ngay trên một chip Khoảûng 10,000 transitors có thể đặt trên một chip Người ta dùng thuật ngữ VLSI (Very Large Scale Integrated) để chỉ công nhệ này Công nghệ VLSI cho phép một bộ xử lý hoàn chỉnh có thể chế tạo trên một chip Nó được gọi là vi xử lý (micro processor) Intel, National, Motorola, Texas Instruments là những công ty có những nổ lực và đóng góp to lớn cho sự phát triển của công nghệ vi xử lý Vào thời kỳ này máy tính có kích thước nhỏ nhưng có khả năng tính toán mạnh mà chúng ta gọi là máy vi tính (micro computer hay personal coputer - PC) đã ra đời
• Sau thế hệ thứ tư là các máy tính hiện tại Xu hướng chung của công nghệ máy tính ngày nay là làm cho máy tính ngày càng compact hơn về cấu tạo, tốc độ cao, giá thành hạ, khả năng trí tuệ nhân tạo, khả năng giao tiếp với người dùng thông qua ngôn ngữ, khả năng kết nối Internet tốc độ cao
Trang 17CHƯƠNG 2: BIỂU DIỄN SỐ LIỆU
2.1 CÁC LOẠÏI SỐ LIỆU
Thông tin nhị phân trong các máy tính được lưu trữ trong bộ nhớ hoặc trong các thanh ghi của vi xử lý Thông tin đó bao gồm số liệu hoặc thông tin điều khiển Thông tin điều khiển là 1 bit hoặc 1 nhóm bit dùng để chỉ ra các tín hiệu điều khiển cần cho việc quản lý số liệu Số liệu là các số và các thông tin được mã hoá (nhị phân) khác Trong chương này sẽ trình bày các cách biểu diễn số liệu trong máy tính
Các loại số liệu trong máy tính có thể phân loại thành các kiểu sau:
• Các số dùng trong các phép toán số học
• Các ký tự dùng trong việc xử lý số liệu
• Các ký hiệu dùng trong các mục đích đặc biệt khác
Toàn bộ số liệu đều được biểu diễn dưới dạng nhị phân hoặc được mã hoá kiểu nhị phân Điều này là do các thanh ghi của máy tính được làm từ các Flip flop có 2 trạng thái do đó nó có thể lưu trữ được số 0 hoặc 1
2.2 HỆ THỐNG SỐ THẬP PHÂN (DECIMAL NUMBER SYSTEM)
Hệ thống số mà chúng ta đang dùng gọi là hệ thống số thập phân hay hệ cơ số (base) 10 Hệ thập phân dùng 10 chữ số (digit): 0,1,2,3,4,5,6,7,8,9 Một số gồm n chữ
số ở phần nguyên và 1 chữ số phần thập phân được biểu diễn dưới dạng sau: a n-1 2…a1a0 a-1
an-Trong đó an-1 là số có trọng số lớn nhất: MSD (Most Significant Digit)
a0 là số có trọng số bé nhất: LSD (Least Significant Digit)
Số trạng thái mà một số thập phân n digit biểu thị được là 10n, nghĩa là một số thập phân có 2 chữ số biểu thị được 100 giá trị, từ 0 đến 99, một số thập phân có 4 chữ số biểu thị được 1000 giá trị, từ 0 đến 999
Giá trị bằng số của một số thập phân được tính như sau:
an-110n-1 + an-2 10n-2 + … + a1101 + a0100 + a-110-1
Ví dụ: số 125 = 1x100 + 2x10 + 5x 1
số 45.2 = 4x10 + 5x1 + 2x10 -1 = 45.2
Trang 182.3 HỆ THỐNG SỐ NHỊ PHÂN (BINARY NUMBER SYSTEM)
Trong hệ nhị phân chỉ sử dụng 2 số là 0 và 1 để biểu thị các số
Một số nhị phân được viết dưới dạng sau:
bn-1 bn-2 …b1 b 0 b-1
Các bi gọi là các bit (binary digit)
Trong đóbn-1 làbit có trọng số lớn nhất MSB, còn b 0 là bit có trọng số bé nhất LSB
Giá trị bằng số của nó trong hệ 10 được tính như sau:
bn-12n-1+ bn-2 2n-2 +… +b121 + b 0 20 + b-12-1
Một số nhị phân n bit có thể biểu diễn được 2n giá trị khác nhau
Một số nhị phân 4,5,6,7 và 8 bit có thể biểu diễn được 16, 32, 64, 28 và 256 trạng thái (kể cả trạng thái 0)
Bảng sau đây cho thấy 8 số nhị phân đầu tiên:
DECIMAL BINARY DECIMAL BINARY
Biến đổi từ thập phân sang nhị phân
Có 2 cách biến đổi từ thập phân sang nhị phân
Cách 1: Biểu diễn số thập phân dưới dạng tổng của các thừa số là bội số của 2 Căn cứ kết quả có được để viết ra số nhị phân
ví dụ : 1010 = 8 + 0 + 2 + 0
= 23+ 0 + 22 + 0 = 10102
Cách 2: Chia lặp số thập phân cho 2 (cơ số của hệ 2) rồi viết số dư theo trật tự ngược lại
ví dụ : 10 :2 = 5 dư 0 LSB
5 : 2 = 2 dư 1
2 : 2 = 1 dư 0
1 : 2 = 0 dư 1 MSB
Trang 19Kết quả là 1010 = 10102
Đối với các số có phần thập phân (phần lẻ) thì phần thập phân được biến đổi như sau: Nhân phần thập phân với 2 (cơ số của hệ 2) sẽ thu được phần nguyên và phần thập phân mới Phần thập phân mới này lại nhân 2 cho đến khi phần thập phân bằng 0 hoặc khi đạt được độ chính xác mong muốn Các bit sau dấu chấm nhị phân chính là các phần nguyên sau mỗi lần nhân 2
Ví dụ1: Biến đổi 8.6875 sang hệ 2
Phần nguyên tương đương trong hệ 2 là 1000
Phần thập phân 0.6875 biến đổi như sau
0.6875
x2 1.3750 x2
0.7500
x2 1.5000
x2 1.0000
Vậy 8.687510 = 1000.10112
Ví dụ 2: Biến đổi 15.25 sang hệ 2
Biến đổi tương tự như trên ta được 15.2510=1111.012
2.4 HỆ THỐNG SỐ BÁT PHÂN (OCTAL NUMBER SYSTEM)
Hệ thống số bát phân là hệ thống cơ số 8 Các digit chỉ nhận các giá trị từ 0 đến 7 Trong hệ bát phân không sử dụng các chữ số 8 và 9
Trong máy tính người ta sử dụng hệ cơ số 8 để biểu diễn số liệu, lệnh hay địa chỉ một cách tiện lợi hơn dùng hệ nhị phân mặc dù máy tính chỉ có thể làm việc với số nhị phân
Có thể biến đổi dễ dàng một số bát phân thành một số thập phân bằng cách nhân các digit với trọng số tương ứng như bảng sau đây
84 83 82 81 80 8-1 8-2 8-3
Ví dụ: 3728 = 3x 82 + 7x81 + 2x80
= 3x 64 +7x8 + 2 = 25010
24.68 = 2x8 + 4x1 +6x 8-1 = 20.7510
Trang 20Đổi từ thập phân sang bát phân Chia liên tiếp số thập phân cho 8 rồi viết số dư theo
Đổi từ bát phân sang nhị phân và ngược lại
Quan hệ giữa bát phân và nhị phân được mô tả trên bảng sau
Octal 0 1 2 3 4 5 6 7 Binary
Equivalent 000 001 010 011 100 101 110 111
Bảng này được sử dụng để đổi một số Octal thành Binary bằng cách chuyển tương ứng từng digit của số Octal sang Binary 3 bit
Ví dụ: 2578 tương đương với 010 101 111 2
Để chuyển một số nhị phân thành một số bát phân người ta nhóm từng 3 bit nhị phân từ trái sang phải rồi chuyển chúng thành một digit bát phân tương ứng
Ví dụ: 100 111 001 2 tương đương với
Trang 21Hệ thập lục phân dùng cơ số 16, với 16 digit 0, 1,…, 9, A, B, C, D, E, F
Bảng trên cho thấy quan hệ giữa hệ cơ số 16, hệ thập phân và nhị phân
Giá trị bằng số của một số Hex tính trong hệ 10 như sau:
2AFH = 2x162 + Ax161 + Fx160
= 512 + 160 + 15 = 687 10
Đổi từ thập phân sang thập lục phân
Chia lặp cho 16 rồi viết số dư theo trật tự ngược
Ví dụ: 42310
423 : 16 = 26 dư 7 LSD
26 : 16 = 1 dư 10
1 :16 = 0 dư 1 MSD Viết ngược 42310 = 1A7H
Đổi từ nhị phân sang thập lục phân và ngược lại
Nhóm từng nhóm 4 bit của số nhị phân từ phải sang trái rồi chuyển tương ứng từng nhóm 4 bit nhị phân ấy sang thập lục phân
Ví du 1: 1001 0000 1110 0011 2 tương đương với
Chúng ta biết rằng một số thập phân bất kỳ có thể biểu diễn bởi một số nhị phân tương đương Số nhị phân có thể xem là mã biểu diễn số thập phân Khi một số
Trang 22thập phân được biểu diễn bởi một số nhị phân tương đương chúng ta gọi là sự mã hóa nhị phân trực tiếp
Các hệ thống số luôn luôn dùng số nhị phân cho các hoạt động bên trong nhưng thế giới bên ngoài lại chỉ dùng số thập phân Vì vậy cần phải chuyển đổi giữa số thập phân và nhị phân một cách thường xuyên Nhưng sự chuyển đổi này sẽ dài và phức tạp đối với các số lớn Vì lý do này nên người ta dùng một bộ mã có khả năng chuyển
đổi dễ dàng giữa hai hệ thống này Đó là mã BCD = BCD code (Binary Coded
Decimal Code) Trong mã BCD mỗi chữ số thập được biểu diễn bởi một số nhị phân 4 bit tương đương với nó.Vì số thập phân chỉ gồm các số từ 0 đến 9 cho nên có 6 giá trị sau đây không dùng trong mã BCD: 1010, 1011, 1100, 1101, 1110 và 1111 Những giá trị này được dùng để phát hiện lỗi trong khi làm việc với mã BCD
Ví dụ 1: Chuyển số thập phân 847 sang BCD
1000 0100 0111 BCD Việc chuyển số BCD sang thập phân được tiến hành tương tự như việc chuyển một số Binary sang số Hex
Ví dụ 2: Chuyển 0110 1000 0011 BCD sang thập phân
6 8 3 10
So sánh giữa BCD và BINARY
BCD không phải là một hệ thống số như các hệ thống số nhị phân, bát phân hay thập lục phân BCD cũng không phải là số nhị phân trực tiếp
Chúng ta hãy so sánh 2 trường hợp sau đây:
13710 = 100010012 (8 bits)
13710 = 0001 0011 0111 BCD (12 bits)
Ưu điểm chủ yếu của BCD là dễ dàng chuyển đổi giữa thập phân và BCD Điều này đặc biệt quan trọng về phương diện phần cứng vì trong máy tính các mạch logic thường xuyên phải biến đổi từ BCD sang thập phân và ngược lại
2.7 MÃ ALPHANUMERIC
Số liệu và chương trình thường được đưa vào máy tính dưới dạng alphanumeric Có nhiều bộ mã alphanumeric đã được đề nghị và đang được sử dụng rộng rãi trong PC
Trang 23Bảng sau đây là bảng mã ASCII
ASCII KEY Name 1B ESC Escape
07 BEL Bell
08 BS Backspace 0A LF Line feed 0C FF Form feed 0D CR Carriage return 7F DEL Delete
Ví dụ: A có mã ASCII là 1000001 = 41H
i có mã ASCII là 1101001 = 69H
* có mã ASCII là 0101010 = 2AH Space có mã ASCII là 0100000 = 20H DEL có mã ASCII là 1111111 = 7FH Trong các máy tính IBM người ta dùng bộ mã BCD mở rộng (Extended BCD Interchange Code) gọi là EBCDIC trong đó sử dụng 8 bit nhị phân để mã hóa các số và chữ
Trang 242.8 HỆ THỐNG SỐ CÓ DẤU CHẤM ĐỘNG (FLOATING-POINT NUMBER SYSTEM)
Trong các phần trước chúng ta đã mô tả các hệ thống số với dấu chấm cố định (fixed point) Khi máy tính tính toán trên các số kiểu này, các phép toán được gọi là số học với dấu chấm cố định (fixed point arithmetic)
Trong khoa học thường phải tính toán với những số rất lớn hoặc rất bé, vì vậy các nhà khoa học đề nghị một cách biểu diễn số dưới dạng
N=MxBE (1) Trong biểu thức (1):
♦ M là phần định trị (mantissa, significand or fraction)
♦ E là số mũ (exponent)
♦ B là cơ số (base của hệ thống số
Việc biểu diễn các số dưới dạng (1) sẽ thuận tiện khi tính toán
Ví dụ: ( ax10m ) x ( bx10n ) = axbx10m+n
( ax10m ) : ( bx10n ) = (a/b)x10m-n
( ax10m ) + ( bx10n ) = (a+b)x10m nếu m=n
Việc làm cho m=n gọi là mở rộng số (scaling number)
Rõ ràng rằng khó có thể đạt được độ chính xác đối với các số quá lớn hoặc quá bé Để giải quyết vấn đề này người ta dùng 2 kỹ thuật sau đây:
Trên máy tính dùng một chương trình con dấu chấm động (Floating-point routines) để scaling các số nhằm đạt được độ chính xác mong muốn Chương trình con này chỉ sử dụng trên các máy tính chỉ có các phép toán dấu chấm cố định (fixed-point operations)
♦
♦ Thêm các phép toán dấu chấm động (floating-point operations) vào phần cứng máy tính Mạch logic của máy tính sẽ thực hiện scaling tự động và theo dõi số mũ khi tính toán Để làm được việc này người ta dùng hệ thống số dấu chấm động (floating-point system).Số có dấu chấm động trên máy tính dùng hệ số mũ như đã mô tả trên đây Trong khi tính toán, máy tính theo dõi cả phần mũ lẫn phần định trị
Một ví dụ điển hình cho các máy tính có mạch thực hiện các phép toán dấu chấm động là máy tính IBM Một số dấu chấm động theo IBM gồm 3 phần:
♦ Bit dấu (signal bit): chỉ ra số âm hay số dương
♦ Phần số mũ: gọi là charateristic
♦ Phần định trị: gọi là fraction
Hình vẽ sau đây là dạng của một số dấu chấm động trong IBM PC có độ dài từ 32 bit (hoặc 64 bit)
0 1 …7 8…31(8…63)
S Charateritics Fraction
• Bit đầu tiên bên trái là bit dấu S Bit dấu bằng 0 là số dương, bit dấu bằng 1 là số
Trang 25• Các bit từ 1 đến 7 là phần đặc trưng (Charateritic) gọi là C Giá trị bằng số thập phân của C là từ 0 đến 127
• Các bit từ 8 đến 31 (trong máy có độ dài từ là 32 bit) và từ 8 đến 63 (trong máy có độ dài từ 64 bit) gọi là phần định trị (phần sau dấu chấm)
Giá trị bằng số trong hệ 10 được tính như sau:
(-1) S x 16 C-64 x Fraction
với C là giá trị thập phân tương đương của phần Characteritic
Ví dụ 1: số dấu chấm động 0 1000001 1110…0
có giá trị bằng : +1665-64x7/8 = +14
Ví dụ 2 : số có dấu chấm động 1 1000011 110…0
có giá trị bằng : - 1667-64x3/4 = - 3072
Hầu hết các PC ngày nay đều sử dụng chuẩn IEEE 754 (Institute of Electrical & Electronics Engineers) cho số học dấu chấm động nhị phân (binary floating-point Arithmetic) theo nguyên lý che số 1 (hidden 1 principle) trong phần hệ số
Dạng tổng quát của một số dấu chấm động theo nguyên lý che số 1 như sau
S (1 bit) E (8 bit hoặc 11 bit) F (23 hoặc 52 bit)
Giá trị bằng số của số dấu chấm động theo nguyên tắc ẩn số 1 là:
V=(-1)Sx2E-127x1.F cho số dài 32 bit
V=(-1)Sx2E-1023x1.F cho số dài 64 bit
Sau đây là vài ví dụ
Ví dụ 1: Số có dấu chấm động 32 bit
Floating-point format (Hex) (-1)Sx2E-127x1.F Decimal value 3F800000 1x20x1.0 +1
BF800000 -1x20x1.0 -1
40400000 1x21x1.5 +3
Ví dụ 2: Số có dấu chấm động 64 bit
Floating-point format(HEX) (-1)Sx2E-1023x1.F Decimal value 3FD000 00 1x2-2x1.0 0.25 C03E00 00 -1x24x1.875 -30
401C00…00 1x22x1.75 7
Trang 262.9 PHƯƠNG PHÁP CHẲN LẺ ( PARITY METHODE )
Có một phương pháp được dùng phổ biến để tìm lổi trong quá trình truyền số liệu là phương pháp chẳn lẻ
Người ta thêm 1 bit chẳn lẻ (parity bit) vào đầu hoặc cuối dãy số liệu được truyền đi Thông thường bit chẳn lẻ được thêm vào vị trí MSB Giả sử người ta cần truyền đi số liệu dưới dạng mã ASCII 7 bit, bit chẳn lẻ sẽ được thêm vào như hình sau: parity bit b6 B5 b4 b3 B2 b1 b0
Có 2 kiểu chẳn lẻ là:
• Chẳn lẻ chẳn (even parity): Bit chẳn lẻ được thêm vào sao cho tổng số con số 1 (kể cả bit chẳn lẻ) là một số chẳn
• Chẳn lẻ lẻ (odd parity): Bit chẳn lẻ được thêm vào sao cho tổng số con số 1 (kể cả bit chẳn lẻ) là một số lẻ
Giả sử cần truyền đi chuổi ký tự HELLO theo phương pháp chẳn lẻ chẳn Tại máy phát sẽ phải truyền đi chuỗi ký tự sau (bit chẳn lẻ tại LSB)
Phương pháp chẳn lẻ chỉ tìm được lỗi đơn Để phát hiện các lỗi nhiều bit phải sử dụng mã Hamming
Trang 27CHƯƠNG 3 : CỔNG LOGIC & MẠCH SỐ
Trong chương này chúng ta cũng sẽ xem xét việc sử dụng đại số Bool để mô tả và phân tích các mạch logic Một phần của chương này sẽ trình bày các mạch số thường được sử dụng trong kỹ thuật máy tính Nội dung của chương này là cơ sở để tìm hiểu hoạt động của bộ ALU sẽ được trình bày ở chương 4
3.1 ĐẠI SỐ BOOL
Đại số Bool là cơ sở toán học của các phép tính trên số nhị phân Khác với đại số thông thường trong đại số Bool các hằng và biến chỉ nhận 2 giá trị 0 và 1 Một biến Bool là một đại lượng mà tại một thời điểm chỉ có thể bằng 0 hoặc 1 Một biến Bool thường dùng để biểu diễn mức điện thế (Voltage Level) trên một đường dây hoặc tại các cổng xuất nhập của máy tính Ví dụ, trong các máy tính, giá trị 0 có thể được gán cho các điện thế trong dãi từ 0 đến 0.8 V, trong khi giá trị 1 được gán cho các điện thế trong khoảng từ 2 đến 5V Các điện thế trong khoảng từ 0.8 đến 2V là không xác định
Như vậy là các biến Bool không biểu diễn các số chính xác mà nó chỉ dùng để biểu diễn trạng thái hay chế độ của các đại lượng vật lý mà người ta gọi là mức logic ( Logic Level) Một điện thế trên một mạch số có thể gọi là mức 0 (level 0) hoặc mức
1 (level 1) phụ thuộc vào giá trị bằng số thực tế của nó Trong lĩnh vực logic số, logic
0 và logic 1 được dùng để mô tả các trạng thái sau:
LOGIC 0 LOGIC 1 False True Off On Low High
No Yes Open switch Close switch
Đại số Bool là cơ sở toán học để thực hiện các phép toán trên biến Bool
Chúng ta sẽ dùng các chữ cái để biểu thị các biến Bool như trong đại số thông thường Các biến có thể viết thường hoặc viết hoa Ví dụ biến a, A, b, B Tại mỗi thời điểm mỗi biến chỉ có thể nhận giá trị 0 hoặc 1
So với đại số thông thường đại số Bool đơn giản hơn Trong đại số Bool không có phân số, không có số mũ, không có số âm, không có khai căn, không có logarith, không có số ảo … Đại số Bool chỉ có 3 phép toán cơ bản sau:
a Phép cộng logic, gọi là phép OR, ký hiệu bởi dấu +
b Phép nhân logic, gọi là phép AND, ký hiệu bởi dấu *
Trang 28b Phép bù hoặc đảo logic, gọi là phép NOT, ký hiệu bởi dấu gạch ngang trên đầu (over bar)
3.2 BẢNG SỰ THẬT (TRUTH TABLE)
Mạch logic (Logic Circuit) là thiết bị phần cứng gồm nhiều lối vào (Inputs) và thông thường có 1 lối ra (Output) Các giá trị vào và ra là các giá trị logic mà tại 1 thời điểm có thể nhận giá trị 0 hoặc 1 Bảng sự thật cho biết lối ra của mạch logic sẽ thay đổi ra sao khi các lối vào thay đổi trạng thái của chúng
Sau đây là dạng của bảng sự thật của mạch logic có 3 biến:A, B và C
Trang 293.3 PHÉP CỘNG LOGIC (OR)
Giả sử rằng A và B là 2 biến logic độc lập Phép cộng logic giữa 2 biến A và B biểu diễn như sau:
F = A+B đọc là F bằng A hoặc B
Trong biểu thức này dấu cộng không phải là cộng đại số thông thường mà là phép cộng logic theo qui tắc được phản ánh trong bảng sự thật sau
Cổng OR Trong mạch số, một cổng OR là một mạch điện tử có 2 hoặc nhiều
lối vào mà lối ra là OR của tất cả các lối vào
Hình vẽø 3-1 là ký hiệu của cổng OR có 2 lối vào
3.4 PHÉP AND LOGIC
Phép nhân giữa 2 biến A và B, kết quả bằng F được biểu diễn như sau:
F = A.B = AB đọc là A và B
Bảng sự thật của phép nhân 2 biến A, B được mô tả trên hình sau
Trang 30Hoạt động của cổng AND như sau:
• Cổng AND hoạt động giống như phép nhân thường giữa 1 và 0
• Lối ra bằng 1 chỉ khi tất cả các lối vào đều bằng 1
• Lối ra bằng 0 khi một trong các lối vào bằng 0
3.5 PHÉP BÙ (NOT OPERATION)
Phép toán bù không giống như phép OR và AND phải cần từ 2 biến trở lên Phép bù chỉ cần một biến đơn Ví dụ, nếu A là biến thì phép lấy bù của A có thể biểu diễn như sau:
F = A đọc là F bằng A đảo
Phép đảo còn gọi là phép lấy bù ( complement)
Ở đây dấu đảo để biểu thị phép toán phủ định
Rõ ràng rằng nếu A = 0 thì F=A =1
nếu A=1 thì F = A = 0
Cổng NOT (inverter)
Hình 3-3 là ký hiệu của cổng NOT (đảo) hay còn gọi là Inverter
Hình 3-3: Cổng NOT
Trang 31luôn đảo ngược với mức logic lối vào F = A
3.6 MÔ TẢ MẠCH LOGIC BẰNG ĐẠI SỐ BOOL
Một mạch logic bất kỳ, cho dù phức tạp đến đâu, cũng có thể mô tả bằng cách
dùng đại số Bool Các cổng logic OR, AND và NOT là các cổng cơ bản xây dựng nên các mạch logic
Ví dụ chúng ta xét mạch logic trên hình hình 3-4
B
F C
Hình 3-4
Mạch này có 3 biến vào A, B và C Lối ra là F Dễ dàng thấy được biểu thức lối ra của mạch sẽ là:
F = AB + C Biểu thức lối ra của cổng AND là AB Lối ra của cổng AND lại nối tới lối vào của cổng OR Vì vậy lối ra cuối cùng F = AB + C
Để tránh hiểu lầm, đôi khi người ta sử dụng dấu ngoặc đơn trong biểu thức Điều này cũng giống như qui tắc trong đại số thường để qui định trật tự phép toán
Chúng ta hãy xem xét hình 3-5 sau đây:
Hình 3-5
Kết quả F = (A+B)C Ở đây nếu không sử dụng dấu ngoặc đơn sẽ gây hiểu lầm là lấy B AND với C rồi OR với A
Mạch logic có chứa cổng đảo
Khi một cổng đảo hiện diện trên sơ đồ mạch logic, thì lối ra của nó chỉ đơn
giản là đảo của biến vào Xét sơ đồ hình 3-6