Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Hệ điều hành Bài giảng cấu trúc máy tính và ghép nối...

Tài liệu Bài giảng cấu trúc máy tính và ghép nối

.PDF
177
448
72

Mô tả:

CHƯƠNG 1 : GIỚI THIỆU CHUNG CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1. Tổng quan về cấu trúc máy tính Cấu trúc máy tính là một mảng kiến thức nghiên cứu về cách xử lý của một hệ thống máy tính dưới cách nhìn của một lập trình viên. Cách nhìn này thực tế cũng có nhiều khía cạnh, ví dụ như máy tính có độ rộng dữ liệu khác nhau sẽ có cấu trúc phần cứng và hoạt động khác nhau, hoặc máy tính có hỗ trợ các phép toán nào (cộng, trừ, nhân, chia, hỗ trợ các chương trình con,...) Trong cấu trúc máy tính xuất hiện khái niệm “mức máy”. Ý tưởng cơ bản của nó là trong mỗi một máy tính có nhiều mức khác nhau, từ mức độ cao nhất (người sử dụng có thể chạy chương trình, sử dụng máy tính...) cho đến mức thấp nhất (máy tính chỉ là tập hợp các phần tử là transistor và các dây nối...). Giữa mức máy cao đến thấp còn có các mức máy trung gian. Trước khi thảo luận về các mức của máy tính, chúng ta xem xét lịch sử phát triển của máy tính để có được một quan điểm về cách xây dựng một máy tính 1.2. Lịch sử phát triển của máy tính Các thiết bị cơ khí được sử dụng để điều khiển các thiết bị phức hợp đã xuất hiện ít nhất từ những năm 1500. Vào thời điểm đó, người ta sử dụng trục quay cố định để làm những hộp nhạc. Và hộp nhạc đó chỉ có thể hoạt động đơn giản là lặp đi lặp lại một giai điệu nhất định Blaisa Pascal (1623 - 1662) đã phát triển một máy tính toán cơ khí để giúp người cha trong công việc tính thuế. Máy tính Pascal (Pascaline) bao gồm 8 con số được kết nối trên một trống xoay. Một số sẽ tăng 1 giá trị (xoay một góc nhất định) khi số thấp hơn quay đủ một vòng. Một số máy tính Pascal khác được ông xây dựng năm 1642 vẫn còn đến tận ngày nay. Hình 1.1. Máy tính Pascal BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 1 CHƯƠNG 1 : GIỚI THIỆU CHUNG Đến những năm 1800, một người đã phát triển các thành phần cơ khí của máy tính Pascal thành một máy mà chúng ta nhận thấy rằng đó là thành phần cơ bản của một máy tính số. Người đó là Charles Babbage Charles Babbage được coi là “ông nội” của máy tính hơn là cha đẻ của máy tính, bởi vì ông chưa bao giờ xây dựng một máy tính mà ông thiết kế. Babbage sống tại nước Anh, tại thời điểm đó, người ta thường sử dụng bàn tính để tính toán. Để tránh việc tính toán có nhiều lỗi, Babbage đã tạo ra một máy tính hoạt động bằng cách quay các bánh răng. Máy của ông thậm chí còn có khả năng tạo ra những đĩa dữ liệu có thể sử dụng ngay trong máy in, do đó tránh được lỗi do sắp chữ trong khi thiết kế bản in. Máy tính của Babbage đã có chức năng đọc dữ liệu, lưu trữ và biểu diễn dữ liệu. Các chức năng cơ bản của nó gần giống với các chức năng của máy tính hiện đại. Sự thành công của các máy tính Babbage đã giúp ông giành được sự hỗ trợ của chính phủ trong việc thiết kế những máy phân tích cỡ lớn, những máy có ý nghĩa rất lớn trong việc lập trình sử dụng các thẻ đục lỗ theo mô hình Jacquard Những máy phân tích của Babbage đã thiết kế nhưng đã không được xây dựng bởi Babbage vì tại thời điểm đó, những máy cơ khí không đạt được độ chính xác theo thiết kế. Một phiên bản khác của máy tính Babbage cuối cùng cũng đã được làm ra tại Bảo tàng khoa học London năm 1991, và tồn tại cho đến tận ngày nay Trải qua hàng thế kỷ cho đến Thế chiến thứ II, xuất hiện một động lực lớn cho việc phát triển máy tính. Tại Anh, tàu ngầm của Đức đã bị thiệt hại nặng nề trong khi vận chuyển. Chiếc tầu ngầm đã nhận và giải mã các tín hiệu từ các tầu khác của Đức và đã bị điều khiển sai. Việc mã hóa tín hiệu của Đức được tạo ra bằng cách sử dụng một đoạn mã được tạo ra bởi một chiếc máy do Siemens AG tạo ra dưới cái tên ENIGMA Quá trình tạo ra các mã thông tin đã được biết đến từ lâu, thậm chí Tổng thống Hoa Kỳ Thomas Jefferson (1743 - 1826) đã thiết kế một máy được coi là tiền thân của ENIGMA, mặc dù ông đã không chế tạo nó. Quá trình giải mã diễn ra phức tạp hơn rất nhiều. Nó là động lực để Alan Turning (1912 - 1954) và một số nhà khoa học nước Anh khác tạo ra máy phá mã. Trong suốt Thế chiến II, Turning là người giải mã hàng đầu ở Anh và là một trong những người đã biến khoa học mật mã từ chức năng là dịch các ngôn ngữ cổ đại thành một khoa học tính toán BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 2 CHƯƠNG 1 : GIỚI THIỆU CHUNG Colossus là máy giải mã đầu tiên được chế tạo tại Bletchley Park, Anh quốc, nơi Turning làm việc. Những ống chân không được sử dụng để lưu trữ nội dung giống như trên giấy và được đưa vào chiếc máy, việc tính toán diễn ra sau đó được thực hiện trên những ống chân không đó cho đến khi những ống khác lại được tiếp tục đưa vào máy. Việc lập trình được diễn ra trên những bảng cắm các ống chân không. Cùng thời với Turning, J.Presper Eckert và John Mauchly đã chế tạo ra một chiếc máy dùng để tính toán quỹ đạo của đường đạn sử dụng cho quân đội Hoa kỳ. Kết quả sự nỗ lực của Eckert và Mauchly là chiếc máy điện tử số tích hợp máy tính (Electronic Numerical Intergrator And Computer - ENIAC). Máy ENIAC bao gồm 18.000 ống chân không tạo nên phần tính toán của máy. Việc lập trình và nhập liệu được thực hiện bằng cách thay đổi trạng thái các công tắc và các đường cable. Máy không có khả năng lưu trữ dữ liệu hay chương trình nhưng nó không phải là hạn chế lớn nhất của máy bởi vì chức năng của máy EMIAC là tính toán quỹ đạo của đường đạn. Thậm chí chiếc máy này không hoạt động được cho đến tận năm 1946, sau chiến tranh Thế giới II nhưng nó được coi là một thành công và đã được sử dụng trong suốt 9 năm Sau thành công của máy ENIAC, Eckert và Mauchly (làm việc tại Đại học Pennsylvania) được John Von Neumann (1903 - 1957) mời cộng tác làm việc tại Viện nghiên cứu cao cấp tại Princeton. Cùng với nhau, họ đã thiết kế một máy tính có khả năng lưu trữ được gọi là EDVAC. Mâu thuẫn nảy sinh, hai nhóm người tại Đại học Pennsylvania và Princeton chia tách nhau. Tuy nhiên, mô hình máy tính mà họ thiết kế phát triển mạnh mẽ, hình thành nên máy tính EDSAC được tạo ra bởi Maurice Wilkes tại Đại học Cambridge năm 1947 1.3. Mô hình máy tính Von Neumann Máy tính kỹ thuật số thông thường được chế tạo dựa trên mô hình được cho là của Von Neumann. Mô hình Von Neumann bao gồm 5 thành phần chính được chỉ ra trên hình 1.2. Khối nhập liệu sẽ đưa lệnh và dữ liệu vào hệ thống và lưu trữ tuần tự ở khối bộ nhớ chính. Lệnh và dữ liệu sẽ được thực thị tại khối Số học và logic (ALU) dưới sự điều khiển bởi khối điều khiển. Kết quả sẽ được đưa ra khối hiển thị dữ liệu. Khối ALU và bộ điều khiển thường được gọi chung là bộ xử lý trung tâm (CPU). Hầu hết các máy tính thông thường có thể phân chia thành các khối cơ bản như trên BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 3 CHƯƠNG 1 : GIỚI THIỆU CHUNG Hình 1.2. Mô hình máy tính Von Neumann Chương trình lưu trữ là nội dung quan trọng nhất của mô hình Von Neumann. Chương trình được lưu trữ tại bộ nhớ chính cùng với dữ liệu chương trình được xử lý. Việc lưu trữ được thực hiện theo từng cấp độ khác nhau cùng với sự phát triển của công nghệ. Ví dụ như trước kia, chương trình và dữ liệu được lưu trữ dưới dạng thẻ đục lỗ hay băng từ,... Trong máy tính, chương trình hay các lệnh của chương trình được thao tác như thể là dữ liệu. Điều này dẫn đến việc xuất hiện các trình biên dịch và hệ điều hành, và làm cho máy tính trở nên rất linh hoạt 1.4. Mô hình hệ thống bus Mặc dù kiến trúc Von Neumann được sử dụng rộng rãi trong các máy tính hiện đại, nhưng nó đã được biến đổi. Hình 1.3. thể hiện một mô hình hệ thống bus của một hệ thống máy tính. Mô hình này chia máy tính ra làm 3 khối: CPU, bộ nhớ và các cổng vào ra I/O. Điều tinh tế của mô hình này là đã kết hợp khối ALU và khối điều khiển thành một khối có chức năng duy nhất là CPU. Khối nhập dữ liệu và hiển thị dữ liệu được kết hợp thành khối các cổng ngoại vi BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 4 CHƯƠNG 1 : GIỚI THIỆU CHUNG Hình 1.3. Mô hình hệ thống bus Điều quan trọng nhất của mô hình hệ thống bus là sự kết nối giữa các khối được gọi chung là hệ thống bus, được cấu thành từ các bus dữ liệu mang thông tin bằng cách truyền thông, bus địa chỉ có chức năng chỉ ra nơi dữ liệu sẽ được chuyển tới và bus điều khiển sẽ chỉ ra các khía cạnh thông tin đang được gửi đi và trong những phương thức gì. Tất nhiên hệ thống còn có hệ thống bus công suất là các đường dây cung cấp năng lượng điện cho toàn bộ hệ thống. Hệ thống bus công suất thường không được chỉ ra trong mô hình nhưng sẽ được ngầm hiểu trong mọi mô hình. Một số kiến trúc còn có các hệ thống bus I/O riêng biệt Về mặt vật lý, các hệ thống bus thực chất là các đường dây được nhóm lại với nhau theo chức năng. Hệ thống bus dữ liệu 32 bit bao gồm 32 đường dây riêng biệt, mỗi dây sẽ truyền tải 1 bit dữ liệu (địa chỉ hoặc các thông tin điều khiển). Trong cách hiểu này, bus hệ thống là các nhóm bus được phân chia theo chức năng Bus dữ liệu có chức năng chuyển dữ liệu giữa các khối. Một số hệ thống có hệ thống bus dữ liệu riêng để chuyển dữ liệu tương tác với khối CPU được gọi là các hệ thống bus dữ liệu và và bus dữ liệu ra. Thông thường bus dữ liệu và và ra được thực hiện trên cùng một hệ thống dây dẫn và tại cùng một thời điểm sẽ chỉ truyền dữ liệu theo một hướng Vì hệ thống bus được sử dụng để kết nối giữa các khối, do đó các khối chức năng cần có đặc điểm nhận dạng riêng, chính là địa chỉ. Trong một số máy tính, tất cả các địa chỉ được giả định là địa chỉ ô nhớ, nhưng thực tế sẽ bao gồm cả BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 5 CHƯƠNG 1 : GIỚI THIỆU CHUNG địa chỉ ô nhớ và địa chỉ các cổng ngoại vi I/O. Mỗi cổng I/O sẽ có một địa chỉ hoàn toàn riêng biệt. Chủ đề này sẽ được bàn kỹ hơn trong chương 8 Địa chỉ ô nhớ, hay được hiểu là vị trí lưu trữ dữ liệu tương tự như phương thức đánh địa chỉ thư tín xác định nơi gửi và nhận thư. Trong suốt quá trình đọc/ghi dữ liệu, bus địa chỉ sẽ chứa địa chỉ mà dữ liệu sẽ được đọc hoặc ghi. Thuật ngữ đọc và ghi được hiểu với chủ thể là CPU, tức là CPU sẽ đọc dữ liệu từ bộ nhớ hoặc ghi dữ liệu lên bộ nhớ. Nếu dữ liệu được đọc từ bộ nhớ thì bus dữ liệu sẽ chứa nội dung đọc được ở địa chỉ ô nhớ được chỉ ra trên bus địa chỉ. Nếu dữ liệu được ghi vào bộ nhớ thì bus dữ liệu sẽ chứa dữ liệu cần được ghi vào ô nhớ tương ứng trong bộ nhớ Bus điều khiển có phần phức tạp và sẽ được thảo luận trong những chương tiếp theo. Để dễ hiểu, ta có thể coi bus điều khiển được sử dụng để cho phép truy cập vafp hệ thống bus dữ liệu và bus địa chỉ, phối hợp các tương tác giữa các khối chức năng 1.5. Mức máy tính Trong một hệ thống phức hợp, máy tính có thể được nhìn nhận thành các mức máy khác nhau, từ mức cao nhất, mức “người sử dụng” đến mức thấp nhất là mức “transistor”. Mỗi một mức thể hiện một mức độ trừu tượng khác nhau về máy tính. Có lẽ một trong những nguyên nhân của sự thành công của máy tính số là sự phân chia các mức trừu tượng một cách rõ ràng, độc lập với nhau. Điều hiển nhiên có thể nhận thấy là một người sử dụng máy tính để gõ văn bản không cần hiểu biết về lập trình. Đồng thời một lập trình viên cũng không cần quan tâm đến các thành phần cấu tạo nên máy tính. Một điều thú vị là việc phân chia máy tính thành các cấp máy đã được khai thác để phát triển các dòng máy tính có chức năng khác nhau Mức cổng logic, transistor, dây dẫn Cấp thấp nhất ở bất cứ một máy tính cấp cao chính là cấp cổng logic, transistor và dây dẫn. Cấp này được tạo ra bởi các cổng logic được thiết kế để thực hiện một chức năng nhất định, thực hiện một thuật toán nhất định. Ở cấp độ này, máy tính bao gồm các phần tử điện như transistor, dây dẫn,... Cũng tại cấp độ này, chức năng của máy tính chưa được thể hiện rõ vì hoạt động của nó chỉ thể hiện BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 6 CHƯƠNG 1 : GIỚI THIỆU CHUNG thông qua các tín hiệu điện áp, dòng điện, các tín hiệu trễ, tín hiệu lượng tử và các vấn đề ở cấp độ thấp hơn Hình 1.4. Các cấp máy tính Cấp khối chức năng Trong cấp khối chức năng, các thanh ghi thực hiện việc dịch chuyển dữ liệu vào và ra khỏi các “các khối chức năng” dưới sự kiểm soát của các khối điều khiển. Các khối chức năng này thể hiện một số chức năng quan trọng của sự hoạt động của máy tính. Các khối chức năng này bao gồm các thanh ghi bên trong CPU, khối ALU và bộ nhớ chính của máy tính Cấp vi chương trình Đây là cấp độ thể hiện sự tác động của khối điều đến việc dịch chuyển dữ liệu từ thanh ghi đến các thanh ghi và đến các khối chức năng khác ra làm sao. Khối điều khiển sẽ nạp lần lượt mã lệnh và thực thi từng lệnh theo một chương trình đã được định sẵn bởi nhà sản xuất các chip vi xử lý được gọi là các vi chương trình. Thực ra, người lập trình không cần quan tâm lắm đến sự hoạt động của cấp độ này bởi vì các vi chương trình là cố định, chỉ có người thiết kế phần cứng mới tác động được đến các vi chương trình này BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 7 CHƯƠNG 1 : GIỚI THIỆU CHUNG Cấp hợp ngữ Từ cấp độ này, các lập trình viên có thể tự viết các chương trình để bắt máy tính thực hiện các yêu cầu của mình. Tuy nhiên, máy tính chỉ có thể hiểu được mã máy bao gồm các chuỗi số 0 và 1. Việc lập trình kiểu như vậy rất dễ bị lỗi. Do đó việc xuất hiện một ngôn ngữ gần với ngôn ngữ con người là điều tất yếu – ngôn ngữ hợp dịch. Một trình biên dịch sẽ chuyển ngôn ngữ hợp dịch sang ngôn ngữ máy và máy tính có thể hiểu được. Tập hợp các lệnh của ngôn ngữ hợp dịch được gọi là tập lệnh Ngôn ngữ cấp cao Bất cứ một lập trình viên nào đã sử dụng một trong những ngôn ngữ như C, Pascal, Fortran, hay Java đều đã tương tác với máy tính ở cấp độ ngôn ngữ cấp cao. Tại cấp độ này, lập trình viên tương tác với dữ liệu và mã lệnh chương trình thông qua ngôn ngữ cấp cao, rất giống với ngôn ngữ hàng ngày mà không cần quan tâm tới việc dữ liệu và mã lệnh đó được máy tính xử lý như thế nào Thực tế, để máy tính có thể hiểu được các lệnh được viết bằng ngôn ngữ cấp cao, máy tính phải thực hiện quá trình chuyển đổi từ ngôn ngữ cấp cao thành ngôn ngữ máy thông qua một trong hai quá trình biên dịch hoặc thông dịch. Biên dịch (Compiler) là quá trình chuyển đổi mã lệnh của toàn bộ chương trình từ ngôn ngữ cấp cao thành ngôn ngữ cấp thấp rồi máy tính mới thực thi chương trình. Thông dịch (Interpreter) là quá trình chuyển đổi từng câu lệnh từ ngôn ngữ cấp cao thành ngôn ngữ cấp thấp, thực thi lệnh rồi chuyển đổi tiếp câu lệnh kế tiếp Cấp chương trình ứng dụng Ở cấp độ này, người sử dụng tương tác với máy tính bằng cách chạy các chương trình như soạn thảo văn bản, các bảng tính hay game. Người sử dụng sẽ sử dụng máy tính thông quá các chương trình chạy trên nó 1.6. Hệ thống máy tính điển hình BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 8 CHƯƠNG 1 : GIỚI THIỆU CHUNG Mẫu máy tính hiện đại được phát triển từ những năm 1950 đến 1960 và càng ngày càng có kích thước nhỏ gọn và càng ngày càng mạnh mẽ. Mặc dù đã có rất nhiều cải tiến nhưng 5 thành phần cơ bản trong mô hình Von Neumann vẫn không thể thay đổi trong máy tính hiện đại Hình 1.5. Các thành phần của máy tính hiện đại Hình 1.5 thể hiện các thành phần điển hình của một máy tính để bàn. Khối nhập liệu chính là bàn phím, thông qua nó, người sử dụng sẽ nhập các dữ liệu và các dòng lệnh vào hệ thống. Màn hình là nơi hiển thị các dữ liệu ra bên ngoài. Khối ALU và khối điều khiển được chế tạo trên một chip điện tử được gọi là CPU. Khối bộ nhớ bao gồm các mạch điện độc lập và các khối ổ đĩa cứng, đĩa mềm và các ổ CD-ROM,... Nhìn sâu hơn vào hệ thống, chúng ta có thể thấy được thành phần quan trọng nhất của hệ thống đó là bản mạch chính (mainboard), hình 1.6. Bản mạch chính BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 9 CHƯƠNG 1 : GIỚI THIỆU CHUNG bao gồm các mạch điện tích hợp Ics, các khe cắm các card mở rộng, các dây nối để kết nối các mạch tích hợp và các khe cắm mở rộng. Trên hình 1.6. các vị trí gắn các khối nhập liệu input, khối hiển thị dữ liêu output, bộ nhớ và CPU được khoanh vùng và chỉ rõ trên hình Hình 1.6. Cấu trúc mainboard TỔNG KẾT CHƯƠNG Cấu trúc của máy tính cùng với các cấp độ của nó cần được thể hiện một cách rõ ràng dưới con mắt của lập trình viên để lập trình viên có thể tương tác với máy tính một cách dễ dàng. Tuy nhiên, yêu cầu đó lại không được dễ dàng thực hiện được. Trong lịch sử phát triển, các lập trình viên phải tương tác với máy tính thông qua các khía cạnh khác nhau. Ví dụ như Babbage phải lập trình thông qua các bánh răng cơ khí,...Cùng với sự phát triển của công nghệ, các cấp độ của máy tính cũng trở nên rõ ràng hơn, cho phép máy tính có nhiều hơn các tương tác với con người. Một mô hình phát triển nhất chính là mô hình máy tính Von Neumann, đây là mô hình thông dụng nhất trong các máy tính ngày nay. BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 10 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU CHƯƠNG 2: BIỂU DIỄN DỮ LIỆU 2.1. Giới thiệu chung Trong những ngày đầu tiên, có một số quan niệm sai lầm về máy tính. Một trong những quan niệm đó là máy tính chỉ là một cái máy kích thước lớn có khả năng tính toán. Máy tính đã có thể làm được nhiều hơn thế ngay cả ở trong giai đoạn khởi đầu. Một quan niệm sai lầm khác là máy tính có thể làm tất cả. Chúng ta đều biết rằng có những vấn đề rất phức tạp mà ngay cả máy tính mạnh nhất hiện nay cũng không có khả năng thực hiện được. Quan điểm đúng đắn tất nhiên nằng ở khoảng nào đó giữa 2 quan niệm trên Chúng ta đã rất quen thuộc với những hoạt động của máy tính mà không liên quan tới các con số như đồ họa, âm thanh kỹ thuật số, thậm chí cả những cái nhấp chuột...Vậy làm thế nào mà máy tính có thể xử lý được tất cả các loại thông tin đó, khi mà tất cả các thông tin mà máy tính xử lý được chỉ được biểu diễn bằng các con số 0 và 1. Ngay lập tức trong chúng ta sẽ có một câu hỏi là các thông tin đã được máy tính biểu diễn hay mã hóa như thế nào ? Chúng ta chắc hẳn đã nghĩ rằng máy tính đã sử dụng số thập phân, nhưng máy tính thực tế đã sử dụng mã nhị phân để biểu diễn thông tin. Chương này sẽ giới thiệu một vài cách biểu diễn thông tin phổ biến và quan trọng nhất là số dấu phẩy tĩnh có dấu và không dấu, số thực và các ký tự Liên quan đến việc biểu diễn dữ liệu, có một khía cạnh mà chúng ta cũng cần quan tâm tới đó là độ rộng của dữ liệu mà máy tính biểu diễn. Ví dụ như máy tính 32 bit có thể xử lý các dữ liệu có độ rộng là 32 bit. Khi đó, kết quả phép toán có thể không còn là 32 bit nữa mà có thể là một con số chỉ có thể biểu diễn bằng một dữ liệu lớn hơn 32 bit. Điều này dẫn tới hiện tượng tràn số - overflow. Do đó, chúng ta cần phải tìm hiểu giới hạn của mỗi một phương pháp biểu diễn dữ liệu mà chúng ta xem xét trong những phần tiếp theo dưới đây. 2.2. Số dấu phẩy tĩnh Trong hệ thống sử dụng số dấu phẩy tĩnh, mỗi con số được biểu diễn bằng một số chính xác các con số, và có một dấu “phẩy” được sử dụng để phân cách giữa phần nguyên và phần lẻ được đặt ở một vị trí chính xác. Một ví dụ về số dấu phẩy tĩnh thể hiện trong số thập phân là 0.23, 5.12 hay 9.11. Trong ví dụ này, BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 11 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU mỗi số được biểu diễn bằng 3 số và có 1 dấu phẩy đặt ở vị trí thứ 2 từ bên phải sang. Điều khác biệt quan trọng giữa việc biểu diễn số dấu phẩy tĩnh trên giấy và trên máy tính đó là “dấu phẩy tĩnh” trong máy tính không được lưu trữ ở bất kỳ đâu. Người ta nói rằng, “dấu phẩy tĩnh” đó chỉ tồn tại trong đầu của lập trình viên Để nghiên cứu về số dấu phẩy tĩnh, trước hết chúng ta nên tìm hiểu về phạm vi sử dụng cũng như độ chính xác của số dấu phẩy tĩnh trong hệ số thập phân. Sau đó, chúng ta sẽ đi vào bản chất của các hệ số chẳng hạn như số thập phân và số nhị phân và phương pháp chuyển đổi giữa các hệ số. Và với nền tảng này, ta sẽ tiếp tục tìm hiểu về cách biểu diễn số âm trong số dấu phẩy tĩnh. 2.2.1. Phạm vi và độ chính xác của số dấu phẩy tĩnh Một số dấu phẩy tĩnh có thể được phân chia theo phạm vi biểu diễn các con số (đó là phạm vi biểu diễn của con số lớn nhất và nhỏ nhất) và độ chính xác của nó. Với ví dụ về số dấu phẩy tĩnh ở trên, phạm vi biểu diễn số của nó là các con số từ 0.00 đến 9.99 với mỗi bước nhảy là 0.01. Do đó, sai số được tính là 0.01 Cần lưu ý rằng phạm vi và độ chính xác phụ thuộc vào vị trí của dấu phẩy tĩnh. Với dấu phẩy tĩnh dịch chuyển về phía bên phải, phạm vi sẽ là [000,999] với độ chính xác là 1.0 và nếu dấu phẩy dịch chuyển về phía trái, phạm vi biểu diễn số sẽ là [0.000,0.999] và sai số sẽ là 0.001. Trong các trường hợp trên, các số được biểu diễn bằng 3 con số, phạm vi của nó từ 000 đến 999 hoặc .000 đến .999, tức là nó có thể biểu diễn chỉ 1000 giá trị không hơn không kém, không phụ thuộc vào phạm vi và độ chính xác. Ngoài ra, cũng không có một lý do nào bắt buộc chúng ta phải bắt đầu dãy số cần biểu diễn bằng giá trị 0. Một số thập phân có 2 chữ số có thể là dãy [00,99] hoặc [-50,49], thậm chí là [-99,00]. Việc biểu diễn số âm sẽ được trình bày kỹ ở mục sau 2.2.2. Luật kết hợp đại số không phải lúc nào cũng có thể thực hiện trên máy tính Trong toán học chúng ta đã biết rằng +( + )=( + )+ BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 12 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Bây giờ chúng ta sẽ phân tích tại sao luật kết hợp này lại không phải lúc nào cũng có thể thực hiện được trên máy tính. Nếu máy tính chúng ta đang xét là máy có thể thực hiện biểu diễn 1 con số, giả sử phạm vi biểu diễn của nó là [9,9] với a = 7, b = 4 và c = -3. Vế trái a + (b + c) = 7 + (4 + -3) = 7 + 1 = 8. Nhưng vế phải (a + b) + c = (7 + 4) + -3 = 11 + -3 nhưng số 11 nằm ngoài phạm vi biểu diễn của hệ thống này. Chúng ta có hiện tượng tràn số trong tính toán mặc dù kết quả cuối cùng vẫn nằm trong khoảng có thể biểu diễn được. Ví dụ trên đã thể hiện luật kết hợp đại số sẽ không được áp dụng cho các số có độ dài hữu hạn. Điều này là không thể tránh khỏi bởi vì chính bản thân cách biểu diễn dữ liệu. Để khắc phục nhược điểm này, hệ thống sẽ ngừng ngay việc tính toán khi phát hiện hiện tượng tràn số, thông báo cho người sử dụng hoặc giải quyết bằng phương pháp khác là lặp lại tính toán với độ rộng dữ liệu lớn hơn 2.2.3. Hệ thống cơ số bất kỳ Trong phần này, chúng ta sẽ nghiên cứu việc biểu diễn các con số và chuyển đổi giữa các hệ số thường được sử dụng trong máy tính: số nhị phân (binary), số bát phân (octal) và số hecxa (hecxadecimal) Cơ số của hệ thống số là khoảng giá trị có thể biểu diễn được bởi các con số trong hệ thống đó. Ví dụ cơ số thập phân có 10 con số được sử dụng để biểu diễn dữ liệu là 0,1,2,3,4,5,6,7,8,9. Công thức tổng quát để biểu diễn một số dấu phẩy tĩnh cơ số k là Giá trị của con số ở vị trí thứ i được thể hiện bởi bi. Đồng thời n và m là số lượng các con số ở bên trái và bên phải dấu phẩy tĩnh. Với cấu trúc này, mỗi một con số có trọng số nhất định. Giả sử với giá trị (541.25)10 được thể hiện dưới cơ số 10. Ta sẽ có n = 3, m = 2 và k = 10 Xem xét cơ số 2 (1010.01)2 với n = 4, m = 2 và k =2 BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 13 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Ví dụ trên gợi ý cho ta phương pháp chuyển đổi một con số có cơ số bất kỳ sang cơ số 10. Tư tưởng của phương pháp là nhân mỗi một con số với cơ số lũy thừa trọng số và sau đó tính tổng tất cả các giá trị đó lại. Chú ý rằng số có trọng số lớn nhất được ký hiệu là MSB và số có trọng số nhỏ nhất được ký hiệu là LSB Chuyển đổi giữa các cơ số Trong phần trên, chúng ta đã tìm hiểu cách chuyển từ cơ số bất kỳ sang cơ số 10. Trong phần này chúng ta sẽ tìm hiểu phương pháp chuyển ngược lại từ cơ số 10 sang cơ số bất kỳ. Ví dụ ta cần chuyển số (23.375)10 sang cơ số 2. Chúng ta bắt đầu bằng cách chia số đó thành phần nguyên và phần thập phân Với phần nguyên Với phần thập phân BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 14 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Kết quả ta sẽ được 2.2.4. Biểu diễn các số nhị phân, bát phân, và hecxa Chuyển đổi qua lại từ cơ số 2 sang cơ số 8 và cơ số 16 2.2.5. Phép toán cơ bản trong máy tính Phép toán cơ bản trong máy tính là phép cộng. Từ phép toán này, ta sẽ phát triển các phép toán khác (chúng ta sẽ nói rõ vấn đề này trong chương 3). Nguyên tắc thực hiện phép cộng nhị phân giống nguyên tắc phép cộng số thập phân mà ta đã thực hiện từ phổ thông BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 15 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Ví dụ Lưu ý rằng số lớn nhất có thể biểu diễn được bằng số 8 bit là (11111111)2 = (255)10 và số nhỏ nhất là (00000000)2 = (0)10. Với cách biểu diễn như vậy, tổ hợp nằm giữa khoảng 11111111 và 00000000 là các con số có giá trị trong khoảng 0 đến 255 là các con số có giá trị dương. Đây là quy ước của số không dấu. Nếu quy ước số có dấu, khoảng một nửa các trạng thái bit sẽ được sử dụng để biểu diễn số dương và một nửa trạng thái còn lại biểu diễn số âm. 4 phương pháp biểu diễn số có dấu sẽ được chúng ta đề cập trong mục kế tiếp ngay sau đây 2.2.6. Số có dấu Như đã nói ở mục trên, số có dấu có thể được biểu diễn bằng 1 trong 4 cách. Đó là phương pháp dùng bit MSB làm bit dấu (sign-magnitude), số bù 1 (one’s complement), số bù 2 (two’s complement) và số thừa (Excess). Mối quan hệ giữa các phương pháp biểu diễn được mô tả bởi bảng dưới đây BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 16 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Số dùng MSB làm bit dấu Phương pháp này có cách biểu diễn số âm và dương giống như đối với cơ số 10 sử dụng dấu + và dấu –. Điểm khác biệt đó là nó sẽ dùng 1 bit có ở tận cùng phía trái làm bit dấu. Giá trị 1 tương ứng với số âm và giá trị 0 tương ứng với số dương. Các con số còn lại trong chuỗi số biểu diễn độ lớn của số theo mã nhị phân thông thường. Với cách biểu diễn này, chúng ta sẽ có 2 số mang giá trị 0 là +0 và -0 Chúng ta thường sử dụng phương pháp này để biểu diễn số đối với số dấu phẩy động (xem tiếp mục 2.3) Số bù 1 Số bù 1 là phương pháp cũng ít khi được sử dụng. Phương pháp này đảo tất cả các bít từ 0 lên 1 và từ 1 về 0 của tất cả các bit trong số cần biểu diễn. Với cách biểu diễn này, nếu bit tận cùng bên trái có giá trị là 1 thì đây là một số âm Phương pháp sử dụng số bù 1 rất hiếm khi được sử dụng bởi vì khi sử dụng phương pháp này, việc so sánh giá trị của các con số thực hiện tương đối phức tạp vì có 2 trạng thái bit biểu diễn giá trị 0. Hơn nữa, việc thực hiện các phép toán cũng khó thực hiện Số bù 2 Số bù 2 được tạo ra từ số bù 1 cộng thêm 1 đơn vị. Số tận cùng bên trái thể hiện số đó là âm (giá trị 1) hoặc dương (giá trị 0). Phương pháp biểu diễn này khắc phục được nhược điểm của 2 phương pháp biểu diễn trình bày phía trên là chỉ sử dụng 1 cách biểu diễn cho số 0. BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 17 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Bàn thêm về phạm vi của các con số mà nó có thể biểu diễn được. Giả sử số chúng ta cần biểu diễn là các con số 8 bit. Như vậy chúng ta sẽ có tất cả 256 trạng thái khác nhau để biểu các giá trị. Sử dụng 1 trạng thái để biểu diễn số 0, chúng ta sẽ còn 127 trạng thái để biểu diễn các giá trị dương và 128 trạng thái biểu diễn giá trị âm Số bù 2 được sử dụng rộng rãi trong các hệ thống máy tính. Chúng ta sẽ sử dụng phương pháp biểu diễn này trong toàn bộ phần sau của tài liệu này Số thừa Phương pháp này đánh lừa máy tính, nó làm cho máy tính không phân biệt được là nó đang tương tác với số có dấu. Số thừa được tạo ra bằng cách xác định một giá trị thừa (hay còn gọi là giá trị dịch chuyển gốc 0) để làm mốc giá trị 0 giả sử là 128. Khi đó, giá trị giả sử là +12 sẽ được tạo ra bằng cách tính toán (128 + 12 = 140)10. Và giá trị 140 khi biểu diễn trong cơ số 2 sẽ đại diện cho số +12 Cách biểu diễn trên là số thừa 128 của các giá trị +12 và -12. Chúng ta có thể tham khảo thêm về số thừa với các ví dụ trong bảng (số thừa 4) 2.2.7. Số BCD (Binary Coded Decimal) Mã BCD sử dụng các tổ hợp 4 bit nhị phân để biểu diễn các giá trị từ 0 đến 9 của số thập phân BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 18 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Để biểu diễn số âm trong mã BCD, ta có thể sử dụng một trong hai phương pháp là mã bù 9 và mã bù 10. Trong mã bù 9 và mã bù 10, số dương được biểu diễn bình thường. Với số âm trong mã bù 9, tổ hợp BCD cao nhất thể hiện là số âm nếu có giá trị lớn hơn hoặc bằng 5, và biểu thị số dương nếu có giá trị nhỏ hơn 5. Các giá trị còn lại được tính bằng cách lấy giá trị 9 trừ đi giá trị dương tương ứng tại vị trí đó. Trong ví dụ trên, tại phần (b) ta thấy, số -301 được tổ hợp bởi Tưong tự như số bù 9, số bù 10 được tạo thành số bù 9 cộng thêm 1 đơn vị. 2.3. Số dấu phẩy động 2.3.1. Hạn chế của số dấu phẩy tĩnh Số dấu phẩy tĩnh có số lượng chính xác các bit để biểu diễn số. Để biểu diễn số 1 tỉ, ta cần khoảng 40 bit ở phía bên trái của dãy số. Để biểu diễn độ chính xác 1 phần tỉ, ta cũng cần phải sử dụng khoảng 40 bit nữa ở phía bên phải “sau dấu chấm”. Như vậy, ta cần khoảng 80 bit để biểu diễn số trên. Trong thực tế, rất nhiều trường hợp ta lại cần tính toán các con số lớn hơn 1 tỉ thậm chí lớn hơn khả năng tính toán của máy tính. Để tính toán con số càng lớn, phần cứng của máy tính đòi hỏi phải mạnh hơn để lưu trữ và tính toán. Trong lúc đó, độ chính xác cao của phép toán lại tỏ ra là không cần thiết đối với các phép tính số lớn. Ngược lại, đôi khi ta không cần biểu diễn số lớn nếu nó được tạo ra từ các số nhỏ. 2.3.2. Độ lớn và độ chính xác của số dấu phẩy động Cách biểu diễn của số dấu phẩy động cho phép biểu diễn số có giá trị lớn bằng một dãy các bit có số lượng hữu hạn bằng cách chia một số lượng bit để biểu diễn độ chính xác và số lượng bit còn lại sẽ biểu diễn độ lớn của con số BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 19 CHƯƠNG 2 : BIỂU DIỄN DỮ LIỆU Ví dụ Trong ví dụ trên, độ lớn mà con số được biểu diễn lên tới khoảng 1023 còn độ chính xác của con số được biểu diễn bằng một số dấu phẩy tĩnh. Để biểu diễn giá trị này, số dấu phẩy động cần có 3 thành phần: phần dấu âm dương, số mũ cơ số 10 và phần giá trị Để có thể biểu diễn số có giá trị lớn hơn nữa, ta phải hi sinh 1 bit trong phần khoảng giá trị tức là hi sinh độ chính xác của con số đang biểu diễn để tăng bit đó vào phần số mũ. Việc thay đổi các bit tại các trường này sẽ làm thay đổi độ lớn và độ chính xác của con số cần biểu diễn 2.3.3. Chuẩn hóa và những bit đã được giấu đi Một vấn đề nổi cộm của số dấu phẩy động là một con số có thể được biểu diễn bằng các quy chuẩn khác nhau. Điều này gây khó khăn cho việc so sánh và thực hiện các phép toán. Ví dụ Để tránh việc cùng một con số được biểu diễn bằng nhiều cách như ví dụ trên, các số dấu phẩy động cần được chuẩn hóa. Theo đó, dấu phẩy được đẩy sang trái hoặc sang phải và số mũ được điều chỉnh tương ứng cho đến khi số đầu tiên về phía bên phải sau dấu chấm không phải là một số 0. Với cách chuẩn hóa như vậy, số tận cùng bên phải ở ví dụ trên là số đã được chuẩn hóa. Đối với trường hợp số cần biểu diễn là số nhị phân. Sau khi chuẩn hóa, số cần biểu diễn sẽ luôn bắt đầu bằng số 1, khi đó không nhất thiết cần phải biểu diễn số 1 đó. Thực tế, con số 1 đó sẽ không được lưu lại và luôn được bỏ đi. Kết quả là sẽ có thêm 1 bit để biểu diễn con số và điều này làm tăng độ chính xác của con số mà ta cần biểu diễn. Bit mà ta bỏ đi được gọi là những bit được dấu đi BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GHÉP NỐI PDF created with pdfFactory trial version www.pdffactory.com Page 20
- Xem thêm -

Tài liệu liên quan