BÀI TẬP CẤU TRÚC MÁY TÍNH SINH VIÊN: Vũ Đặng Hải Phụng LỚP: Cao Đẳng Tự Động 06 Mã số SV: 309061060 CPU Bộ vi xử lí hay còn gọi là CPU ( Central Processing Unit ) là bộ phận trung tâm của máy tính . Nó là bộ phận sống còn trong mọi hoạt động mà máy tính cần thực hiện . Nó quyết định , hoặc ít nhất cũng là một phần của hệ điều hành có thể sử dụng , những gói phần mềm mà PC có thể chạy , mức tiêu thụ năng lượng của PC như thế nào , sự ổn định của hệ thống như thế nào . và trong các phần khác nữa . Bộ vi xử lí cũng tác động chính lên giá thành tổng thể của hệ thống : mới hơn , nhiều sức mạnh hơn và giá thành máy tính cũng đắt hơn . Khi người Hungari có tên là John von Neumann , lần đầu tiên đề xuất lưu trữ một chuỗi lệnh - được gọi là một chương trình – trong cùng bộ nhớ như là dữ liệu , nó đã thực sự là một ý tưởng sáng kiếm mới . Đó là bản báo cáo dự thảo ban đầu để tạo ra EDVAC . EDVAC - Electronic Discrete Variable Automatic Computer - một máy tính đầu tiên kết hợp khái niệm lưu trữ chương trình của von Neumann , mà ở đó chương trình thực hiện bởi máy tính được lưu trữ như là dữ liệu hơn là dùng những dây dẫn nối bên ngoài . Thiết kế này thực hiện trong năm 1946 , EDVAC hoạt động đầy đủ vào năm 1952 với 4000 bóng đèn chân không và 10000 Diode tinh thể . Trong báo cáo của von Neumann một máy tính sẽ bao gồm 04 phần chính : • Bộ phận số học trung tâm – Central Arithmetical Unit • Bộ phận điều khiển trung tâm – Central Control Unit • Bộ nhớ - Memory • Những thiết bị Vào /Ra – Input-Output Device Hơn một nửa thế kỷ sau hầu hết mọi CPU có cấu trúc “von Neumann” Những thời gian sau đó hai dòng CPU thống trị nền công nghiệp PC – Pentium của Intel và PowerPC là liên minh của Apple/IBM/Motorola - mỗi CPU để chứa những cấu trúc ưu việt trong thời điểm đó : CISC và RISC. CISC ( Complex Instruction Set Computer ) là cấu trúc truyền thống của máy tính , mà trong đó CPU dùng Vi mã ( Microcode ) để thực hiện toàn bộ tập lệnh . Mạch điện phức tạp giải mã Microcode có những độ dài lệnh khác nhau và dùng tất cả các kiểu địa chỉ . Một thời gian sau những nhà sản xuất máy tính có khuynh hướng tăng độ phức tạp của CPU mà lớn hơn những tập lệnh có sẵn . Trong năm 1974 , John Cocke của Trung tâm Nghiên cứu IBM quyết định cố gắng tiến gần tới việc giảm số lệnh mà Chip cần thực hiện . Cho tới giữa năm 1980 , những nhà sản xuất máy tính đã cố gắng tạo thành một khuynh hướng tạo thành những CPU thực hiện giới hạn trong tập lệnh . CPU RISC ( Reduced Instruction Set Computer ) giữ kích thước lệnh cố định , cấm kiểu địa chỉ gián tiếp và giữ lại chỉ những lệnh đó mà có thể thực hiện chồng chéo lên nhau và làm để thực hiện một chu kì máy hoặc ít hơn . Một sự thuận lợi của CPU RISC là chúng có thể thực hiện những lệnh của nó rất nhanh bởi vì những lệnh rất đơn giản . Một điều khác , có thể là vô cùng quan trọng là Chip RISC yêu cầu ít Transistor , nên chúng rẻ hơn trong thiết kế cũng như sản xuất . Vẫn còn nhiều tranh luận của những chuyên gia về giá trị của cấu trúc RISC . Những sự đề xuất về nó để tranh luận rằng giá máy RISC rẻ hơn và nhanh hơn và rằng đó là cấu trúc máy tính của tương lai . Những điều hoài nghi về sự đơn giản của phần cứng trong cấu trúc RISC đặt trách nhiệm nặng nề lên phần mềm - Bộ biên dịch RISC tạo ra những thủ tục phần mềm để thực hiện những lệnh phức tạp đã được thực hiện bên trong phần cứng của máy tính CISC . Họ tranh luận rằng điều đó không có giá trị bởi vì thông thường những bộ vi xử lí ngày càng nhanh và rẻ hơn . Với một vài đánh giá , sự tranh luận đã trở thành hội nghị vì sự bổ sung của CISC và RISC ngày càng nhiều . Nhiều Chip RISC của ngày hôm nay đang hỗ trợ nhiều lệnh CISC của Chip ngày hôm qua và ngược lại , những Chip CISC của ngày hôm nay dùng nhiều kỹ thuật dưới sự hợp tác với Chip RISC . Thậm trí vô địch CISC là Intel , dùng kỹ thuật RISC trong Chip 486 của họ và nó càng tăng lên trong dòng bộ vi xử lí Pentium . Những nguyên lý cơ bản Những nguyên lí của mọi bộ vi xử lí là như nhau . Về cơ bản , chúng lấy những tín hiệu dạng 0 và 1 ( gọi là tín hiệu nhị phân ) thực hiện chúng theo tập lệnh và tạo ra ở đầu ra những dạng 0 và 1 . Điện áp tại một thời điểm xác định giá trị là 0 hoặc 1 . Ví dụ từ 3.3V đến 5V có nghĩa là 1 và từ 0,6V tới 0V có nghĩa giá trị là 0 . CPU làm việc bằng những tác động trở lại của giá trị đầu vào là 0 và 1 theo những cách riêng biệt và sau đó quay trở lại đầu ra những tín hiệu đã được giải quyết . Những sự giải quyết được xảy ra tại những mạch Logic gọi là cổng Logic ( Logic gate ) , mỗi cổng yêu cầu ít nhất một Transitor , với những đầu vào và đầu ra sắp xếp khác nhau cho những hoạt động khác nhau . Trên thực tế những bộ vi xử lí ngày nay có hàng triệu Transistor để thực hiện những hệ thống Logic phức tạp khác nhau . . Những cổng Logic của CPU làm việc cùng với nhau để thực hiện những công việc dựa trên Logic của Boolean . Nó là hệ thống đại số do nhà toán học George Boolean tạo nên . Những phép toán chính của đại số Boolean bao gồm AND , OR, NOT, NAND ( not AND ) NOT : Đầu vào A Đầu ra Q 0 1 1 0 AND : Đầu vào A Đầu vào B Đầu ra Q 0 0 0 0 1 0 1 0 0 1 1 1 NAND ( not AND ) Đầu vào A Đầu vào B Đầu ra Q 0 0 1 0 1 1 1 0 1 1 1 0 OR Đầu vào A Đầu vào B Đầu ra Q 0 0 0 0 1 1 1 0 1 1 1 1 Thêm vào đó CPU kết hợp những cổng trên để thực hiện những hàm số học , nó cũng có thể được dùng để tạo thành những mạch lật ( Trigger ) để lưu trữ dữ liệu trong bộ nhớ . Những cổng Logic hoạt động theo phần cứng gọi là những Switch – Digital Switch . Hầu hết những kiểu Switch trong máy tính ngày nay dùng Transistor với công nghệ MOSFET (metal-oxide semiconductor field-effect transistor) . Nó là một kiểu Transitor thực hiện đơn giản nhưng vô cùng quan trọng . Khi có điện áp cung cấp tới nó nó sẽ hoạt động ở trạng thái mạch điện đóng hoặc mở . Hầu hết những PC thuộc thế kỷ 20 - dòng 486 ,586 -dùng điện áp cung cấp 3.3V , nhưng trước đó dùng điện áp 5V , thì đều dùng MOSFET theo kiểu khi có dòng đến thì điện áp đầu ra sẽ là mức cao tương đương với Switch mở và khi không có dòng điện thì Switch ở trạng thái đóng . Hàng triệu MOSFET làm việc cùng với nhau theo những lệnh của chương trình để điều khiển dòng điện qua những cổng Logic tạo thành những tín hiệu đầu ra theo yêu cầu . . Mỗi cỏng Logic sẽ bao gồm từ 1 hoặc nhiều Transitor , mỗi Transitor phải điều khiển dòng điện do đó sẽ tạo thành những Switch từ Bật thành Tắt hoặc từ Tắt thành Bật hoặc ở nguyên trạng thái ban đầu . Chúng ta hãy xem qua những mạch cổng Logic đơn giản AND và OR làm việc như thế nào . Mỗi cổng này làm việc dựa trên 02 tín hiệu vào để tạo thành một tín hiệu ở đầu ra . AND có nghĩa là cả hai đầu vào là trạng thái 1 thì đầu ra mới cho kết quả là 1 . Cả hai tín hiệu vào có mức điện áp cao ( mức Logic 1 ) thì kết quả đầu ra mới có dòng chảy qua . OR có nghĩa là nếu một đầu vào bất kì là 1 thì đầu ra sẽ cho kết quả là 1 Dòng điện qua mỗi cổng được điều khiển bởi những Transistor của cổng . Những Transistor kết hợp với nhau để cho ra những bộ phận có chức năng riêng biệt . Những Transistor được sản xuất cùng trên một mấu Silicon ( hoặc vật liệu bán dẫn khác ) và liên kết cùng với nhau không cần dây dẫn hoặc các vật liệu bên ngoài khác . Những bộ phận như vậy gọi là mạch tích hợp – IC ( Intergrated Circuit ) , và sự phát triển của chúng được sản xuất dựa trên sự phức tạp của bộ vi xử lí . Sự tích hợp của những mạch điện không dừng lại với những IC đầu tiên . Những IC đầu tiên nối với nhiều Transitor , thành nhiều IC tương tự như vậy liên kết với nhau trong một quá trình gọi là Sự tích hợp quy mô lớn LSI ( Large-Scale Intergration ) . Cũng với cách như trên những IC lại được nối với nhau để tạo thành mạch điện lớn hơn , quá trình như vậy gọi là Sự tích hợp quy mô cực lớn VLSI (very large-scale integration) . Những bộ vi xử lí ngày nay có hàng trăm triệu Transistor cực nhỏ , được kết hợp với những điện trở , tụ điện và những Diode , chúng tạo nên những cổng Logic . Những cổng Logic làm nên những IC và những IC làm nên hệ thống điện tử . Intel lần đầu tiên tuyên bố tích hợp mạch điện tử mức cao trong một Chip vi xử lí phức tạp – Intel 4004 – phát hành năm 1971 . Bộ vi xử lí 4-bit này được dự định để tính toán . Nó xử lí dữ liệu 4- bit , nhưng chiều dài lệnh là 8-bit . Chương trình và dữ liệu được tách rời , 1KB và 4KB tương ứng . Nó dùng 16 thanh ghi 4-bit để tính toán . 4004 có 46 lệnh , dùng 2300 Transistor với vỏ loại DIP 16 chân , chạy với tốc độ xung nhịp 740KHz ( 8 chu kì đồng hồ / lệnh CPU tương đương với 10.8 ms ) Cấu trúc cơ bản Những bộ phận chức năng chính của bộ vi xử lí bao gồm : • Nhân – Core : là trái tim của bộ vi xử lí là bộ phận thực hiện ( Execution Unit ) . Pentium hai Pipeline số nguyên song song với nhau cho phép nó đọc , biên dịch , thực hiện và gửi 02 dòng lệnh liên tục .(Pipeline Processing là một kỹ thuật mà cung cấp liên tục hoặc song song với nhau , xử lí bên trong CPU . Nó cho phép những hoạt động liên tục bằng cách dữ liệu được di chuyển hoặc những lệnh thực hiện bên trong khái niệm ống – Pipe- bằng tất cả các tầng một cách liên tục.Ví dụ : trong khi một lệnh đang được thực hiện , thì một lệnh khác đang trong quá trình giải mã . • Bộ phận dự báo rẽ nhánh – Branch Predictor : Bộ phận dự báo rẽ nhánh cố gắng dự đoán những trình tự nào đó sẽ được thực hiện mỗi khi bên trong một chương trình mà có những lệnh nhảy ( Jump ) có điều kiện để bộ phận Prefetch và Decode Unit có thể nhận những lệnh được sẵn sàng ngay tức thì . • Phần dấu phảy động – Floating Point Unit : Trong bộ vi xử lí Pentium nó là bộ phận thứ 3 mà ở đó những phép tính không phải là số nguyên được thực hiện . • Bộ nhớ Cache L1 : trong Pentium có chứa 02 Chip làm nhiệm vụ Cache , mỗi Chip có dung lượng 8KB một dành cho dữ liệu và một dành cho lệnh , chúng có tốc độ truy xuất cực nhanh . • Giao diện Bus – Bus Interface : nó mang dữ liệu và mã lệnh bên trong CPU , riêng biệt để sẵn sàng dùng và sau đó kết hợp với nhau để gửi ra bên ngoài . Tất cả những thành phần của bộ vi xử lí từng bước , từng bước thực hiện lệnh theo xung nhịp của đồng hồ ( Clock ) . Xung nhịp đồng hồ cho biết thực hiện một công việc nhanh như thế nào . Với bộ vi xử lí 4004 của Intel có Clock là 740KHz và hiện nay Pentium D có Clock cao hơn 3GHz . Bộ đếm chương trình ( Program Counter – PC ) là vị trí bộ nhớ bên trong chứa địa chỉ của lệnh tiếp theo để thực hiện . Khi có yêu cầu để thực hiện , bộ phận điều khiển ( Control Unit ) chuyển lệnh từ bộ nhớ vào bên trong Thanh ghi lệnh ( Instruction Register – IR ) Cùng với thời gian đó Bộ đếm chương trình PC được tăng lên để trỏ tới lệnh tiếp theo trong chuỗi công việc . Bây giờ Bộ vi xử lí thực hiện lệnh trong Thanh ghi lệnh IR . Có một số lệnh được điều khiển bởi Bộ phận điều khiển , ví dụ như “ nhảy tới vị trí 2749 “ , giá trị của 2749 được ghi tới Bộ đếm chương trình do vậy mà bộ vi xử lí thực hiện lệnh đó tiếp theo . Nhiều lệnh liên quan tới Bộ phận phép tính số học và Logic ( ALU ) . Những công việc này kết hợp với Những thanh ghi riêng có tên GPR ( General Purpose Register ) – chúng là những vùng lưu trữ tạm thời mà có thể được tải từ bộ nhớ hoặc được ghi vào bộ nhớ . Lệnh ALU như có thể được cộng với nội dung chứa trong vị trí bộ nhớ sau đó gửi tới thanh ghi GPR . ALU cũng làm thay đổi những Bit trong Thanh ghi trạng thái ( Status Register – SR ) sau mỗi lệnh được thực hiện , điều đó giữ thông tin trong kết quả của lệnh trước đó . Thông thường SR có những Bit để chứng tỏ kết quả là 0 , là tràn , và một số kết quả khác . Bộ phận điều khiển ( Control Unit ) dùng thông tin trong SR để thực hiện những lệnh có điều kiện , ví dụ như “ nhảy tới địa chỉ 7410 nếu lệnh trước bị tràn “ . Đó là tất cả cái nhìn tổng thể đơn giản những hoạt động bên trong cấu trúc cơ bản của CPU . Quá trình tiến triển Bảng dưới đây cho thấy sự tiến triển của bộ vi xử lí từ Intel 8088/86 cuối năm 1970 cho tới thế hệ thứ 8 AMD Athlon vào mùa thu năm 2003 Kiểu / Thế hệ Năm Độ rộng Bus Dữ liệu/Địa chỉ Bộ nhớ Cache L1(KB) Tốc độ Bus cho bộ nhớ(MHz) Tốc độ xung nhịp bên trong CPU (MHz) 8088/ Đầu tiên 1979 8/20 bit Không có 4.77-8 4.77-8 8086/ Đầu tiên 1978 16/20 bit Không có 4.77-8 4.77-8 80286/ Thứ hai 1982 16/24 bit Không có 6-20 6-20 80386DX/ Thứ ba 1985 32/32 bit Không có 16-33 16-33 80386SX/ Thứ ba 1988 16/32 bit 8 16-33 16-33 80486DX/ Thứ tư 1989 32/32 bit 8 25-50 25-50 80486SX/ Thứ tư 1989 32/32 bit 8 25-50 25-50 80486DX2/ Thứ tư 1992 32/32 bit 8 25-40 50-80 80486DX4/ Thứ tư 1994 32/32 bit 8+8 25-40 75-120 Pentium/ Thứ năm 1993 64/32 bit 8+8 60-66 60-200 MMX/ Thứ năm 1997 64/32 bit 16+16 66 166-233 Pentium Pro/ Thứ sáu 1995 64/32 bit 8+8 66 150-200 Pentium II/ Thứ sáu 1997 64/32 bit 16+16 66 233-300 Pentium II/ Thứ sáu 1998 64/32 bit 16+16 66/100 300-450 Pentium III/ Thứ sáu 1999 64/32 bit 16+16 100 450-1.2GHz AMD Athlon/ Thứ bảy 1999 64/32 bit 64+64 266 500-2.2GHz Pentium 4/ Thứ bảy 2000 64/32 bit 12+8 400 1.4GHz-3.6GHz AMD Athlon 64/ Thứ tám 2003 64/64 bit 64+64 400 2GHz-2.4GHz IA-32 IA-32 hay được gọi là x86-32 là cấu trúc tập lệnh của dòng bộ vi xử lí của Intel 32-bit . Trước kia cấu trúc bộ vi xử lí là 16-bit , được Intel giới thiệu thuộc thế hệ thứ 3 của bộ vi xử lí 80386SX và DX năm 1985 . Trên thực tế 386SX là bộ vi xử lí 32-bit bên trong , nhưng giao diện bên ngoài thông qua Bus 16-bit . Điều đó có nghĩa là dữ liệu trao đổi của bộ vi xử lí 386SX có tốc độ bằng ½ so với 386DX . Thế hệ thứ 4 của bộ vi xử lí cũng là 32-bit , nhưng bên cạnh đó chúng có một số cải tiến . Đầu tiên thiết kế tổng thể đã được xem xét lại đối với Intel 486 làm cho chúng có tốc độ nhanh gấp đôi . Thứ hai chúng có bộ nhớ Cache 8K bên trong Chip bên cạnh bộ xử lí Logic . Việc lấy số liệu trực tiếp từ bộ nhớ Cache gửi tới phần xử lí Logic bên trong bộ vi xử lí nhanh hơn việc lấy số liệu từ bộ nhớ chính (RAM) nên cũng cải thiện tốc độ tổng thể của hệ thống . Kiểu 486DX khác với 486SX ở chỗ bộ Đồng xử lí toán học ( hay còn gọi là Maths co-processor ) được thiết kế bên trong nó và những phép toán về dấu phảy động được xử lí trực tiếp ở đây . Chính vì thế mà tạo nên sức mạnh đáng kể cho những ứng dụng liên quan đến tính toán nhiều như : bảng tính , phân tích thống kê , CAD . Một phát kiến quan trọng cũng được giới thiệu trong bộ vi xử lí 486DX2 đó là gấp đôi tốc độ Clock . DX2 có nghĩa là mạch điện bên trong Chip có Clock chạy với tốc độ gấp đôi Clock của mạch điện bên ngoài . Dữ liệu được được truyền giữa bộ vi xử lí , bộ nhớ Cache bên trong và bộ Math co-processor có tốc độ nhanh gấp đôi vì vậy và cải thiện đáng kể tới hiệu suất tổng thể của hệ thống tính toán trong máy tính . Với 486DX4 bằng kỹ thuật này mang lại bước tiến xa hơn nữa , gấp ba lần Clock bên trong để chạy được 75MHz hoặc 100MHz và có dung lượng bộ nhớ Cache L1 tăng gấp đôi lên 16KB . . Đặng Hải Phụng LỚP: Cao Đẳng Tự Động 06 Mã số SV: 309061060 CPU Bộ vi xử lí hay còn gọi là CPU ( Central Processing Unit ) là bộ phận trung tâm của máy. Input-Output Device Hơn một nửa thế kỷ sau hầu hết mọi CPU có cấu trúc “von Neumann” Những thời gian sau đó hai dòng CPU thống trị nền công nghiệp PC – Pentium của