Chương 1 1.4 Biểu diễn số nguyên 2 1.5 Các phép tính trên số nguyên 1.6 Biểu diễn số với dấu chấm động 2 1.7 Biểu diễn kí tự 2.2 Toán tử Chương 2 2.4 Giải mã ngôn ngữ máy 2 3.2 Đường dẫn dữ liệu Chương 3 3.3 Tổ chức bộ tính toán và luận lý 2 3.4 Bộ điều khiển chính 3.5 Kỹ thuật ống dẫn 2 4.1 Giới thiệu 2 Chương 4 4.2 Bộ nhớ cache 4.3 Đo lường và cải tiến hiệu suất cache 4 5.3 Bộ nhớ flash Chương 5 5.4 Kết nối giữa bộ xử lý, bộ nhớ và thiết bị nhập – xuất 2 5.5 Giao tiếp thiết bị nhập – xuất với bộ xử lý, bộ nhớ và hệ điều hành Ôn tập và kiểm tra 2 Tổng 30 ix CHƢƠNG 1 ĐẠI CƢƠNG Mục đích: Giới thiệu tổng quan về lịch sử phát triển của máy tính, cách phân loại máy tính hiện nay. Cách để đánh giá hiệu suất của máy tính. Sau đó trình bày biểu diễn số nguyên không dấu và có dấu, các phép tính cơ bản trên số nguyên này. Trình bày cách biểu diễn số với dấu chấm động, biểu diễn kí tự bằng bảng mã ASCII, bảng mã UNICODE.1 TỔNG QUAN Sự ra đời của máy vi tính tạo cuộc cách mạng vĩ đại trong lịch sử văn minh nhân loại.
Hệ thống máy tính ngày nay có thể giúp chúng ta có những bước phát triển mạnh mẽ, nâng cao năng suất lao động, tri thức cũng như khoa học công nghệ. Một cách tổng thể, lịch sử phát triển của máy tính trải qua các giai đoạn sau: Thế hệ máy tính thứ nhất (1946 – 1957): thế hệ này được đặc trưng bằng kỹ thuật ống chân không (vacuum tube). Chiếc máy vi tính đầu tiên ENIAC (Electronic Numerical Integrator And Computer) do Giáo sư Mauchly và học trò của ông Eckert tại đại học pennsylvania bắt đầu thiết kế vào năm 1943 và được hoàn thành vào năm 1946. Đây là một máy vi tính khổng lồ với chiều dài 20 mét, cao 2,8 mét, năng lực tính toán là 5000 phép cộng trong một giây.
Giáo sư toán học John Von Neumann lần đầu đưa ra khái niệm chương trình được lưu trữ (stored-program concept) vào năm 1945. Đến năm 1946, ông cùng các đồng nghiệp thiết kế máy tính IAS tại Princeton Institute for Advanced Studies. Máy tính này gồm các thành phần: bộ nhớ dùng để lưu trữ chung cho cả dữ liệu và lệnh, bộ số học – luận lý (ALU) thực hiện phép toán trên dữ liệu nhị phân, bộ điều khiển được dùng để điều khiển thực thi lệnh trong bộ nhớ và hoạt động của hệ thống nhập/xuất. Đây là một ý tưởng nền tảng cho các máy tính hiện đại ngày nay.
Máy tính này còn được gọi là máy tính Von Neumann. Thế hệ thứ hai (1958-1964): thế hệ này bắt đầu bằng sự thay thế ống chân không bằng transistor với ưu điểm là nhỏ hơn, giá thành rẻ hơn, tỏa nhiệt ít hơn. Transistor được phát minh bởi công ty Bell Labs vào năm 1947 nhưng đến cuối thập niên 50, máy tính thương mại dùng transistor mới xuất hiện trên thị trường. Ngoài ra, ở thế hệ này các thành phần quan trọng trong máy tính như: bộ số học – luận lý, bộ điều khiển cũng được thiết kế phức tạp hơn.
Một số ngôn ngữ cấp cao được dùng để lập trình như: FORTRAN năm 1956, COBOL năm 1959, ALGOL năm 1960) và phần mềm hệ thống (system software) trong máy tính cũng được giới thiệu. Thế hệ thứ ba (1965-1971): Thế hệ này bắt đầu bằng sự xuất hiện của mạch tích hợp (integrated circuit ). Vi mạch này cho phép đặt một số transistor trên một chip đơn. Các mạch tích hợp với mật độ thấp (SSI: Small Scale Integration) có thể chứa vài chục linh kiện và mạch tích hợp với mật độ trung bình (MSI: Medium Scale Integration) chứa hàng trăm linh kiện.
Do những cải tiến lớn về công nghệ nên các 1 máy tính của thế hệ này trở nên nhỏ hơn, nhanh hơn và rẽ hơn các máy tính thế hệ trước đó. Hệ điều hành và khả năng đa lập trình cũng đã xuất hiện. Thế hệ thứ tư (1972 – ngày nay): thế hệ này đánh dấu bằng tiến bộ của kỹ thuật mạch tích hợp. Với sự giới thiệu của mạch tích hợp mật độ cao (LSI: Large Scale Integration) chứa hàng ngàn linh kiện được đặt trên một chip đơn, mạch tích hợp mật độ rất cao (VLSI: Very Large Scale Integration) có thể đạt hơn 10 ngàn linh kiện trên một chip và mạch tích hợp với mật độ siêu lớn (ULSI: Ultra Large Scale Integration) có thể chứa hơn một triệu linh kiện.
Đặc biệt thế hệ này có sự xuất hiện của bộ nhớ bán dẫn (semiconductor memory) và bộ vi xử lý (microprocessor). Máy tính cá nhân PC (Personal Computer) đầu tiên đã ra đời như Kenback-1. Các kỹ thuật cải tiến tốc độ xử lý của máy tính không ngừng được phát triển: kỹ thuật ống dẫn, kỹ thuật vô hướng, xử lý song song … Ngày nay kỹ thuật máy tính được sử dụng trong nhiều lĩnh vực khác nhau từ các thiết bị nhúng trong ngôi nhà thông minh, điện thoại đến những các siêu máy tính (supercomputer). Trong các thiết bị này, nền tảng phần cứng tuy có khác nhau nhưng một cách tổng quan có thể phân loại máy tính thành các loại như sau: Máy tính cá nhân (Personal computer - PC): đây là loại được sử dụng phổ biến nhất.
Máy tính cá nhân được thiết kế để sử dụng cho mục đích có nhân có hiệu suất tương đối tốt với chi phí thấp. Máy chủ (Server): đây là loại máy tính hiện đại bao gồm các loại máy tính lớn (mainframes, minicomputers và supercomputers) và chỉ được truy cập thông qua mạng. Server thực hiện các luồng công việc lớn như: các ứng dụng tính toán khoa học và kỹ thuật hoặc xử lý rất nhiều công việc như một Web server lớn. Mặc dù không được gọi là supercomputer, nhưng các trung tâm dữ liệu (datacenter) trên internet được dùng bởi các công ty lớn như eBay hay Google chứa hàng ngàn bộ vi xử lý với bộ nhớ chính có dung lượng terabyte (1TB = 1024 GB) và hệ thống lưu trữ lên đến petabyte (1PB = 1024 TB).
Những hệ thống này bao gồm nhiều cụm (cluster) máy tính lớn. Máy tính nhúng (Embedded computer): được ứng dụng rộng lớn nhất trong hầu hết các lĩnh vực. Loại này bao gồm các vi xử lý gắn trong xe hơi, hệ thống xử lý trong điện thoại, các hệ thống xử lý trong video game hay tivi và hệ thống vi xử lý trong máy bay hay tàu thủy hiện đại. Hệ thống nhúng này được thiết kế để chạy một ứng dụng hoặc một tập các ứng dụng có liên quan, được tích hợp với phần cứng và được xem như một hệ thống đơn.1 Dẫn nhập Làm sao để có thể đo đạc, đánh giá hiệu suất (performance) và định ra được những yếu tố quyết định đến hiệu suất của 1 máy tính ? Lý do chính để khảo sát về hiệu suất là vì hiệu suất của phần cứng máy tính thường là yếu tố mấu chốt quyết định đến tính hiệu quả trong hoạt động của1 một hệ thống bao gồm cả phần cứng lẫn phần mềm.
Hiệu suất luôn là một thuộc tính quan trọng trong việc lựa chọn, mua bán 2 các máy tính được cả người bán lẫn người mua quan tâm! Hiệu suất càng được các nhà thiết kế máy tính (trong đó có chúng ta) quan tâm. Việc đánh giá hiệu suất máy tính không hề đơn giản. Hiệu suất không chỉ có được do các cải tiến phần cứng mà cũng có thể nhờ vào các phần mềm thông minh hay cả hai. Tùy góc độ ứng dụng khác nhau, hiệu suất hoàn toàn có thể được đánh giá theo những phương cách, những chỉ số khác nhau.
Ở góc độ nhà thiết kế máy tính (phần cứng/phần mềm), chúng ta cần nắm rõ: Các vấn đề liên quan đến việc đánh giá hiệu suất máy tính, hoạt động của các thành phần khác nhau (phần cứng/phần mềm) và ảnh hưởng của chúng đến hiệu suất. Trong mỗi ứng dụng cụ thể, xác định phương pháp đánh giá hiệu suất phù hợp. Định nghĩa hiệu suất: trước hết chúng ta xem xét hai khái niệm liên quan Thời gian đáp ứng (response time) hay thời gian thực thi (execution time), là thời gian từ khi bắt đầu đến khi kết thúc chương trình. Thời gian này bao gồm: thời gian truy cập đĩa, thời gian truy cập bộ nhớ, thời gian thực thi CPU,… Throughput: là tổng số các chương trình thực thi xong trong một đơn vị thời gian.
Trước tiên, chúng ta đánh giá hiệu suất thông qua thời gian thực thi. Cực đại hóa hiệu suất đồng nghĩa với tối thiểu hóa thời gian thực thi. Quan hệ giữa hiệu suất và thời gian thực thi ở máy tính X sẽ là: Ta nói máy tính X có hiệu suất cao hơn máy tính Y n lần đồng nghĩa với máy tính X nhanh hơn máy tính Y n lần. Thí dụ: nếu máy tính A thực thi chương trình mất 10s và máy tính B thực thi cùng chương trình mất15s, A nhanh hơn B bao nhiêu lần? Ta biết rằng A nhanh hơn B n lần nếu: 15 Do đó: 1.5 Vậy máy tính A nhanh hơn máy tính B 1.2 Đo đạc hiệu suất Thời gian được sử dụng làm thước đo cho hiệu suất máy tính.
Tuy nhiên thời gian ở đây được định nghĩa theo nhiều cách khác nhau, tùy theo mục đích đo đạc như: thời gian theo xung nhịp (clock), thời gian thực thi (execution time), thời gian trôi qua (elapsed time). Thời gian thực thi chương trình bao gồm thời gian thực thi bởi CPU lẫn các thiết bị khác (bộ nhớ, đĩa cứng,v. Để đơn giản, chúng ta chỉ giới hạn xem xét đối với CPU mà thôi. 3 Có thể đo đạc hiệu suất qua thời gian thực thi theo chu kỳ xung nhịp (clock cycle) và thời gian chu kỳ xung nhịp (clock cycle time) như sau: Thời gian thực thi Số chu kỳ xung nhịp Thời gian chu kỳ của một chương trình = của chương trình × xung nhịp hay: Thời gian thực thi S ủ ươ rì của một chương trình = Với tần số xung nhịp (clock rate) là đại lượng nghịch đảo của chu kỳ xung nhịp (clock cycle).
Thí dụ: thời gian thực thi chương trình trên máy tính A, tần số 4 GHz, là 10s. Chúng ta muốn thiết kế máy tính B có thể thực thi chương trình trên trong 6s. Để đạt được điều này, cần phải tăng tần số xung nhịp của máy B và vì vậy số chu kỳ xung nhịp thực thi chương trình bị tăng lên 1,2 lần. Hãy xác định tần số xung nhịp của máy B?