Sửa đổi Kiến trúc máy tính

Chú ý: Bạn chưa đăng nhập và địa chỉ IP của bạn sẽ hiển thị công khai khi lưu các sửa đổi.

Bạn có thể tham gia như người biên soạn chuyên nghiệp và lâu dài ở Bách khoa Toàn thư Việt Nam, bằng cách đăng ký và đăng nhập - IP của bạn sẽ không bị công khai và có thêm nhiều lợi ích khác.

Các sửa đổi có thể được lùi lại. Xin hãy kiểm tra phần so sánh bên dưới để xác nhận lại những gì bạn muốn làm, sau đó lưu thay đổi ở dưới để hoàn tất việc lùi lại sửa đổi.

Bản hiện tại Nội dung bạn nhập
Dòng 1: Dòng 1:
 
{{mới}}
 
{{mới}}
'''Kiến trúc máy tính''' (tiếng Anh ''computer architecture'')có thể được định nghĩa là việc lựa chọn và kết nối các thành phần phần cứng một cách khoa học và nghệ thuật, nhằm tạo nên các máy tính đáp ứng được yêu cầu về chức năng, hiệu suất và giá thành. Định nghĩa một cách chi tiết hơn thì kiến trúc máy tính liên quan đến thiết kế kiến trúc tập lệnh (instruction set architecture - ISA), thiết kế vi kiến trúc [[bộ xử lý]] (microarchitecture), thiết kế ở mức luận lý (logic design) và hiện thực (implementation).
+
(Computer Architecture)
 +
 
 +
Kiến trúc Máy tính có thể được định nghĩa là việc lựa chọn và kết nối các thành phần phần cứng một cách khoa học và nghệ thuật, nhằm tạo nên các máy tính đáp ứng được yêu cầu về chức năng, hiệu suất và giá thành. Định nghĩa một cách chi tiết hơn thì kiến trúc máy tính liên quan đến thiết kế kiến trúc tập lệnh (instruction set architecture - ISA), thiết kế vi kiến trúc bộ xử lý (microarchitecture), thiết kế ở mức luận lý (logic design) và hiện thực (implementation). Hình 1 trình bày một định nghĩa tương tự về kiến trúc máy tính khi phân một hệ thống máy tính ra thành nhiều lớp
 +
 
 +
Phân lớp một hệ thống máy tính
  
 
Thiết kế kiến trúc một máy tính liên quan đến ba công việc cụ thể sau:
 
Thiết kế kiến trúc một máy tính liên quan đến ba công việc cụ thể sau:
*Thiết kế kiến trúc tập lệnh của máy tính.
 
*Thiết kế vi kiến trúc bộ xử lý.
 
*Thiết kế hệ thống máy tính (system design).
 
  
==Kiến trúc tập lệnh==
+
- Thiết kế kiến trúc tập lệnh của máy tính.
 +
 
 +
- Thiết kế vi kiến trúc bộ xử lý.
 +
 
 +
- Thiết kế hệ thống máy tính (system design).
 +
 
 +
Kiến trúc tập lệnh
  
 
Kiến trúc tập lệnh là một tập hợp các lệnh ở dạng mã máy (machine code) mà bộ xử lý có thể đọc, hiểu và thực thi các tác vụ được yêu cầu trong lệnh đó. Kiến trúc tập lệnh được xem như một lớp trung gian giao tiếp giữa phần mềm và phần cứng; là nơi phân chia giữa khoa học máy tính và kỹ thuật máy tính. Kiến trúc tập lệnh đóng vai trò rất quan trọng trong việc thiết kế, hiện thực bộ xử lý bên dưới và thiết kế, hiện thực các phần mềm hoạt động trên nền bộ xử lý. Có hai hướng thiết kế kiến trúc tập lệnh là kiến trúc CISC (Complex Instruction Set Computer) và RISC (Reduced Instruction Set Computer).
 
Kiến trúc tập lệnh là một tập hợp các lệnh ở dạng mã máy (machine code) mà bộ xử lý có thể đọc, hiểu và thực thi các tác vụ được yêu cầu trong lệnh đó. Kiến trúc tập lệnh được xem như một lớp trung gian giao tiếp giữa phần mềm và phần cứng; là nơi phân chia giữa khoa học máy tính và kỹ thuật máy tính. Kiến trúc tập lệnh đóng vai trò rất quan trọng trong việc thiết kế, hiện thực bộ xử lý bên dưới và thiết kế, hiện thực các phần mềm hoạt động trên nền bộ xử lý. Có hai hướng thiết kế kiến trúc tập lệnh là kiến trúc CISC (Complex Instruction Set Computer) và RISC (Reduced Instruction Set Computer).
  
 
Cùng với sự phát triển của phần cứng máy tính, một trong những sự phát triển khác dễ dàng được nhận thấy là các ngôn ngữ lập trình. Ngày càng có nhiều các ngôn ngữ lập trình mạnh và phức tạp được phát triển. Các ngôn ngữ lập trình này giúp cho các lập trình viên phát triển ứng dụng dễ dàng hơn, chính xác hơn và có thể đi sâu vào chi tiết hơn. Tuy nhiên, điều này làm nảy sinh một khoảng cách ngữ nghĩa (semantic gap) giữa những tác vụ được cung cấp bởi ngôn ngữ lập trình cấp cao và những tác vụ được cung cấp bởi kiến trúc của một máy tính. Biểu hiện rõ nhất của khoảng cách này là sự thực thi không hiệu quả của các ngôn ngữ cấp cao, kích thước chương trình tăng, độ phức tạp của các trình biên dịch cũng tăng theo. Do vậy, nhiều kỹ sư thiết kế phần cứng có khuynh hướng giải quyết vấn đề này bằng cách xây dựng những kiến trúc máy tính hỗ trợ một số lượng lớn các loại lệnh phức tạp với nhiều phương pháp tính toán địa chỉ khác nhau, và nhiều lệnh của ngôn ngữ cấp cao sẽ được hiện thực hoàn toàn bằng phần cứng. Mục tiêu chính của hướng tiếp cận này là:
 
Cùng với sự phát triển của phần cứng máy tính, một trong những sự phát triển khác dễ dàng được nhận thấy là các ngôn ngữ lập trình. Ngày càng có nhiều các ngôn ngữ lập trình mạnh và phức tạp được phát triển. Các ngôn ngữ lập trình này giúp cho các lập trình viên phát triển ứng dụng dễ dàng hơn, chính xác hơn và có thể đi sâu vào chi tiết hơn. Tuy nhiên, điều này làm nảy sinh một khoảng cách ngữ nghĩa (semantic gap) giữa những tác vụ được cung cấp bởi ngôn ngữ lập trình cấp cao và những tác vụ được cung cấp bởi kiến trúc của một máy tính. Biểu hiện rõ nhất của khoảng cách này là sự thực thi không hiệu quả của các ngôn ngữ cấp cao, kích thước chương trình tăng, độ phức tạp của các trình biên dịch cũng tăng theo. Do vậy, nhiều kỹ sư thiết kế phần cứng có khuynh hướng giải quyết vấn đề này bằng cách xây dựng những kiến trúc máy tính hỗ trợ một số lượng lớn các loại lệnh phức tạp với nhiều phương pháp tính toán địa chỉ khác nhau, và nhiều lệnh của ngôn ngữ cấp cao sẽ được hiện thực hoàn toàn bằng phần cứng. Mục tiêu chính của hướng tiếp cận này là:
*Làm giảm độ phức tạp của trình biên dịch;
+
 
*Cải tiến thời gian thực thi vì các tác vụ phức tạp có thể được hiện thực bằng phần cứng;
+
- Làm giảm độ phức tạp của trình biên dịch;
*Hoàn thành tác vụ với ít số lượng lệnh hợp ngữ.
+
 
 +
- Cải tiến thời gian thực thi vì các tác vụ phức tạp có thể được hiện thực bằng phần cứng;
 +
 
 +
- Hoàn thành tác vụ với ít số lượng lệnh hợp ngữ.
  
 
Đây chính là hướng tiếp cận theo kiến trúc CISC. Một kiến trúc tập lệnh kiểu CISC thông thường có khoảng từ 120 đến 350 lệnh sử dụng nhiều loại định dạng lệnh và dữ liệu khác nhau. Tuy nhiên, số lượng các thanh ghi trong các kiến trúc CISC thường khá ít khi chỉ có khoảng từ 8 đến 24 thanh ghi đa dụng (general-purpose registers - GPRs). Các kiến trúc CISC thực hiện phần lớn các tác vụ tham khảo bộ nhớ thông qua rất nhiều phương pháp tính toán địa chỉ khác nhau.
 
Đây chính là hướng tiếp cận theo kiến trúc CISC. Một kiến trúc tập lệnh kiểu CISC thông thường có khoảng từ 120 đến 350 lệnh sử dụng nhiều loại định dạng lệnh và dữ liệu khác nhau. Tuy nhiên, số lượng các thanh ghi trong các kiến trúc CISC thường khá ít khi chỉ có khoảng từ 8 đến 24 thanh ghi đa dụng (general-purpose registers - GPRs). Các kiến trúc CISC thực hiện phần lớn các tác vụ tham khảo bộ nhớ thông qua rất nhiều phương pháp tính toán địa chỉ khác nhau.
Dòng 21: Dòng 31:
  
 
Các kiến trúc sư phần cứng máy tính do đó chuyển sang hướng tiếp cận theo kiến trúc RISC. Mặc dù được định nghĩa và được thiết kế khác nhau giữa các nhóm nghiên cứu cũng như các công ty sản xuất bộ xử lý, đặc điểm chung và nổi bật của các bộ xử lý được thiết kế theo kiến trúc RISC là:
 
Các kiến trúc sư phần cứng máy tính do đó chuyển sang hướng tiếp cận theo kiến trúc RISC. Mặc dù được định nghĩa và được thiết kế khác nhau giữa các nhóm nghiên cứu cũng như các công ty sản xuất bộ xử lý, đặc điểm chung và nổi bật của các bộ xử lý được thiết kế theo kiến trúc RISC là:
*Bao gồm nhiều thanh ghi đa dụng;
+
 
*Tập lệnh đơn giản và giới hạn;
+
- Bao gồm nhiều thanh ghi đa dụng;
*Tập trung vào cơ chế xử lý ống.
+
 
 +
- Tập lệnh đơn giản và giới hạn;
 +
 
 +
- Tập trung vào cơ chế xử lý ống.
  
 
Một bộ xử lý được thiết kế theo kiến trúc RISC thường bao gồm ít hơn 100 lệnh với kích thước cố định (thường là 32 bit). Các lệnh thường hoạt động dựa trên các thanh ghi trong khi bộ nhớ được truy xuất chỉ thông qua các lệnh đọc/ghi (load/store). Hầu hết các lệnh trong kiến trúc RISC được hoàn thành trong một chu kỳ xung nhịp, do đó việc xử lý theo cơ chế ống là khả thi. Các đặc tính này dẫn đến kết quả là bộ xử lý có thể hoạt động ở tần số xung nhịp cao hơn và CPI (cycles per instruction) thấp hơn, do đó hiệu suất đạt được sẽ cao hơn. Ngoài ra, tài nguyên phần cứng cần thiết cho bộ xử lý kiến trúc RISC cũng thường thấp hơn so với kiến trúc CISC do phần cứng chỉ hỗ trợ những lệnh đơn giản.
 
Một bộ xử lý được thiết kế theo kiến trúc RISC thường bao gồm ít hơn 100 lệnh với kích thước cố định (thường là 32 bit). Các lệnh thường hoạt động dựa trên các thanh ghi trong khi bộ nhớ được truy xuất chỉ thông qua các lệnh đọc/ghi (load/store). Hầu hết các lệnh trong kiến trúc RISC được hoàn thành trong một chu kỳ xung nhịp, do đó việc xử lý theo cơ chế ống là khả thi. Các đặc tính này dẫn đến kết quả là bộ xử lý có thể hoạt động ở tần số xung nhịp cao hơn và CPI (cycles per instruction) thấp hơn, do đó hiệu suất đạt được sẽ cao hơn. Ngoài ra, tài nguyên phần cứng cần thiết cho bộ xử lý kiến trúc RISC cũng thường thấp hơn so với kiến trúc CISC do phần cứng chỉ hỗ trợ những lệnh đơn giản.
  
==Thiết kế vi kiến trúc==
+
1. Thiết kế vi kiến trúc
  
 
Thiết kế vi kiến trúc là quá trình xây dựng nên một bộ xử lý cụ thể dựa trên một kiến trúc tập lệnh sao cho các lệnh trong kiến trúc tập lệnh có thể được xử lý tự động bởi bộ xử lý. Thiết kế vi kiến trúc một bộ xử lý là một quá trình phức tạp đòi hỏi nhiều công sức. Mục tiêu của thiết kế vi kiến trúc không những phải bảo đảm rằng tất cả các lệnh đã được thiết kế trong kiến trúc tập lệnh phải được thực thi chính xác mà còn là việc tối ưu sự thực thi sao cho đạt được hiệu suất cao nhất, ít tốn tài nguyên phần cứng và năng lượng tiêu thụ ít nhất.
 
Thiết kế vi kiến trúc là quá trình xây dựng nên một bộ xử lý cụ thể dựa trên một kiến trúc tập lệnh sao cho các lệnh trong kiến trúc tập lệnh có thể được xử lý tự động bởi bộ xử lý. Thiết kế vi kiến trúc một bộ xử lý là một quá trình phức tạp đòi hỏi nhiều công sức. Mục tiêu của thiết kế vi kiến trúc không những phải bảo đảm rằng tất cả các lệnh đã được thiết kế trong kiến trúc tập lệnh phải được thực thi chính xác mà còn là việc tối ưu sự thực thi sao cho đạt được hiệu suất cao nhất, ít tốn tài nguyên phần cứng và năng lượng tiêu thụ ít nhất.
Dòng 37: Dòng 50:
 
Mô hình xử lý ống (pipeline) của bộ xử lý MIPS 5 giai đoạn
 
Mô hình xử lý ống (pipeline) của bộ xử lý MIPS 5 giai đoạn
  
==Thiết kế hệ thống máy tính==
+
2. Thiết kế hệ thống máy tính
 +
 
 +
Thiết kế hệ thống máy tính là công việc xây dựng một hệ thống máy chính hoàn chỉnh bao gồm thiết kế các bộ nhớ phân cấp, thiết kế các thiết bị ngoại vi… Trong đó, thiết kế bộ nhớ phân cấp chủ yếu tập trung vào tối ưu hoá việc tổ chức bộ nhớ đệm (cache) theo các kỹ thuật khác nhau như: ánh xạ trực tiếp (direct mapped), ánh xạ kết hợp (n-way set associative) và ánh xạ toàn phần (fully associative). Bộ nhớ đệm trong một hệ thống bộ nhớ phân cấp của một hệ thống máy tính có vai trò rất quan trọng trong hoạt động của bộ xử lý nói riêng và của cả hệ thống máy tính nói chung. Tổ chức bộ nhớ phân cấp ảnh hưởng trực tiếp đến hiệu suất của máy tính bởi vì mỗi truy xuất ở cấp bộ nhớ thấp hơn sẽ tốn rất nhiều thời gian (có thể gấp hang trăm chu kỳ so với truy xuất ở cấp cao hơn). Việc lựa chọn các thiết bị ngoại vi cũng sẽ ảnh hưởng lớn đến hiệu suất của cả hệ thống máy tính vì thời gian đáp ứng ngoại vi ảnh hưởng đến thời gian xử lý ứng dụng của bộ xử lý.
 +
 
 +
TÀI LIỆU THAM KHẢO
 +
 
 +
Phạm Quốc Cường, Kiến trúc Máy tính, Nhà xuất bản Đại học Quốc gia TPHCM, 2017
  
Thiết kế hệ thống máy tính là công việc xây dựng một hệ thống máy chính hoàn chỉnh bao gồm thiết kế các bộ nhớ phân cấp, thiết kế các thiết bị ngoại vi… Trong đó, thiết kế bộ nhớ phân cấp chủ yếu tập trung vào tối ưu hoá việc tổ chức [[bộ nhớ đệm]] theo các kỹ thuật khác nhau như: ánh xạ trực tiếp (direct mapped), ánh xạ kết hợp (n-way set associative) và ánh xạ toàn phần (fully associative). Bộ nhớ đệm trong một hệ thống bộ nhớ phân cấp của một hệ thống máy tính có vai trò rất quan trọng trong hoạt động của bộ xử lý nói riêng và của cả hệ thống máy tính nói chung. Tổ chức bộ nhớ phân cấp ảnh hưởng trực tiếp đến hiệu suất của máy tính bởi vì mỗi truy xuất ở cấp bộ nhớ thấp hơn sẽ tốn rất nhiều thời gian (có thể gấp hang trăm chu kỳ so với truy xuất ở cấp cao hơn). Việc lựa chọn các thiết bị ngoại vi cũng sẽ ảnh hưởng lớn đến hiệu suất của cả hệ thống máy tính vì thời gian đáp ứng ngoại vi ảnh hưởng đến thời gian xử lý ứng dụng của bộ xử lý.
+
John L. Hennessy and David A. Patterson; Computer Architecture: A Quantitative Approach, Morgan Kaufmann Publishers, 2012
  
==Tài liệu tham khảo==
+
Michel Dubois, Murali Annavaram, and Per Stenstroem, Parallel Computer Organization and Design, Cambrige University Press, 2014
#Phạm Quốc Cường, Kiến trúc Máy tính, Nhà xuất bản Đại học Quốc gia TPHCM, 2017
 
#John L. Hennessy and David A. Patterson; Computer Architecture: A Quantitative Approach, Morgan Kaufmann Publishers, 2012
 
#Michel Dubois, Murali Annavaram, and Per Stenstroem, Parallel Computer Organization and Design, Cambrige University Press, 2014
 

Lưu ý rằng tất cả các đóng góp của bạn tại Bách khoa Toàn thư Việt Nam sẽ được phát hành theo giấy phép Creative Commons Ghi công–Chia sẻ tương tự (xem thêm Bản quyền). Nếu bạn không muốn những gì mình viết ra sẽ có thể được bình duyệt và có thể bị sửa đổi, và không sẵn lòng cho phép phát hành lại, xin đừng nhấn nút “Lưu trang”. Đảm bảo rằng chính bạn là tác giả của những gì mình viết ra, hoặc chép nó từ một nguồn thuộc phạm vi công cộng hoặc tự do tương đương. ĐỪNG ĐĂNG NỘI DUNG CÓ BẢN QUYỀN MÀ CHƯA XIN PHÉP!

Hủy bỏ Trợ giúp sửa đổi (mở cửa sổ mới)

Bản mẫu dùng trong trang này: