Giáo trình Kiến trúc máy tính (Phần 1)
Khái niệm máy tính và kiến trúc máy tính
Máy tính (Computer) là thiết bị điện tử thực hiện các công việc sau:
- Nhận dữ liệu vào (Input).
- Xử lý dữ liệu theo chương trình được nhớ sẵn bên trong bộ nhớ (Processing).
- Đưa dữ liệu ra (Output).
Máy tính thực hiện được các công việc trên thông qua:
- Chương trình (Program): là dãy các câu lệnh nằm trong bộ nhớ, nhằm mục
đích hướng dẫn máy tính thực hiện một công việc cụ thể nào đấy. Máy tính thực hiện
theo lệnh trong chương trình. Máy tính không tự thực hiện được nếu không có
chương trình.
- Phần mềm (Software): bao gồm chương trình và dữ liệu.
- Phần cứng (Hardware): baao gồm tất cả các thành phần vật lý cấu thành lên hệ
thống máy tính.
- Phần dẻo (Firmware): Là thành phần chứa cả hai thành phần trên.
Kiến trúc máy tính đề cập đến những thuộc tính hệ thống mà lập trình viên
có thể quan sát được. Nói cách khác, đó là các thuộc tính có ảnh hưởng trực tiếp
đến việc thực thi một chương trình, ví dụ như tập lệnh của máy tính, số bit được sử
dụng để biểu diễn số liệu, cơ chế nhập/ xuất, kỹ thuật định địa chỉ bộ nhớ
Kiến trúc máy tính bao gồm ba phần: Kiến trúc phần mềm, tổ chức máy tính và
lắp đặt phần cứng.
- Kiến trúc phần mềm của máy tính: chủ yếu là kiến trúc phần mềm của bộ xử
lý, bao gồm: tập lệnh, dạng các lệnh và các kiểu định vị. Trong đó, tập lệnh là tập hợp
các lệnh mã máy (mã nhị phân) hoàn chỉnh có thể hiểu và được xử lý bởi bộ xử lý trung
tâm. Thông thường các lệnh trong tập lệnh được trình bày dưới dạng hợp ngữ. Kiến
trúc phần mềm là phần mà các lập trình viên hệ thống phải nắm vững để việc lập trình
hiệu quả.
- Tổ chức của máy tính (Computer Organization): liên quan đến cấu trúc bên
trong của bộ xử lý, cấu trúc các bus, các cấp bộ nhớ và các mặt kỹ thuật khác của máy
tính. Tổ chức máy tính quan tâm đến các đơn vị vận hành và sự kết nối giữa chúng
nhằm thực hiện hóa những đặc tả về kiến trúc, chẳng hạn như về tín hiệu điều khiển,
giao diện giữa máy tính với các thiết bị ngoại vi, kỹ thuật bộ nhớ được sử dụng
- Lắp đặt phần cứng của máy tính: chính là việc lắp ráp một máy tính dùng các
linh kiện điện tử và các bộ phận phần cứng cần thiết.
Cấu trúc máy tính (Computer Structure): là những thành phần của máy tính
và những liên kết giữa các thành phần.
Kể từ lúc ngành công nghiệp máy tính ra đời cho đến nay, sự phân biệt giữa
kiến trúc và tổ chức máy tính là một yếu tố quan trọng. Nhiều hãng sản xuất máy
tính cho ra đời cả một họ máy chỉ khác nhau về tổ chức còn kiến trúc hoàn toàn
giống nhau. Kết quả là các kiểu máy trong cùng một họ có giá cả và hiệu suất vận
hành khác nhau. Hơn thế nữa, một kiến trúc máy có thể tồn tại qua nhiều năm liền
trong khi tổ chức máy dựa trên đó sẽ thay đổi theo bước tiến của công nghệ.
Tất cả họ Intel*86 đều có kiến trúc cơ bản giống nhau.
IBM System/370 đều có kiến trúc cơ bản giống nhau.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Kiến trúc máy tính (Phần 1)
háp song song theo đó người ta tăng cường hiệu quả của máy tính bằng cách tăng số lượng bộ xử lý. Các máy tính có thể sắp xếp vào 4 loại sau: SISD (Single Instructions Stream, Single Data Stream): Máy tính một dòng lệnh, một dòng số liệu. SIMD (Single Instructions Stream, Multiple Data Stream): Máy tính một dòng lệnh, nhiều dòng số liệu. MISD (Multiple Instructions Stream, Single Data Stream):Máy tính nhiều dòng lệnh, một dòng số liệu. MIMD (Multiple Instruction Stream, Multiple Data Stream): Máy tính nhiều dòng lệnh, nhiều dòng số liệu. Kiểu phân loại này đơn giản, dễ hiểu, vẫn còn hiệu lực đến hôm nay, mặc dù có những máy tính dùng kiến trúc hỗn tạp. Các máy tính SISD tương ứng với các máy một bộ xử lý mà chúng ta đã nghiên cứu. Các máy MISD kiểu máy tính này không sản xuất thương mại. Các máy SIMD có một số lớn các bộ xử lý giống nhau, cùng thực hiện một lệnh giống nhau để xử lý nhiều dòng dữ liệu khác nhau. Mỗi bộ xử lý có bộ nhớ dữ liệu riêng, nhưng chỉ có một bộ nhớ lệnh và một bộ xử lý điều khiển, bộ này đọc và thi hành các lệnh. Máy CONNECTION MACHINE 2 (65536 bộ xử lý 1 bít) của công ty Thinking Machine Inc, là một ví dụ điển hình của SIMD. Tính song song dùng trong các máy SIMD là tính song song của các dữ liệu. Nó chỉ có hiệu quả nếu cấu trúc các dữ liệu dễ dàng thích ứng với cấu trúc vật lý của các bộ xử lý thành viên. Các bộ xử lý véc-tơ và mảng thuộc loại máy tính này Các máy MIMD có kiến trúc song song, những năm gần đây, các máy MIMD nổi lên và được xem như một kiến trúc đương nhiên phải chọn cho các máy nhiều bộ xử lý dùng trong các ứng dụng thông thường, một tập hợp các bộ xử lý thực hiện một chuối các lệnh khác nhau trên các tập hợp dữ liệu khác nhau. Các máy MIMD hiện tại có thể được xếp vào ba loại hệ thống là: SMP (Symmetric Multiprocesors), Cluster và NUMA (Nonunifrom Memory Access) 102 Một hệ thống SMP bao gồm nhiều bộ xử lý giống nhau được lắp đặt bên trong một máy tính, các bộ xử lý này kết nối với nhau bởi một hệ thống bus bên trong hay một vài sự sắp xếp chuyển mạch thích hợp. Vấn đề lớn nhất trong hệ thống SMP là sự kết hợp các hệ thống cache riêng lẻ. Vì mỗi bộ xử lý trong SMP có một cache riêng của nó, do đó, một khối dữ liệu trong bộ nhớ trong có thể tồn tại trong một hay nhiều cache khác nhau. Nếu một khối dữ liệu trong một cache của một bộ xử lý nào đó bị thay đổi sẽ dẫn đến dữ liệu trong cache của các bộ xử lý còn lại và trong bộ nhớ trong không đồng nhất. Các giao thức cache kết hợp được thiết kế để giải quyết vấn đề này. Trong hệ thống cluster, các máy tính độc lập được kết nối với nhau thông qua một hệ thống kết nối tốc độ cao (mạng tốc độ cao Fast Ethernet hay Gigabit) và hoạt động như một máy tính thống nhất. Mỗi máy trong hệ thống được xem như là một phần của cluster, được gọi là một nút (node). Hệ thống cluster có các ưu điểm: Tốc độ cao: Có thể tạo ra một hệ thống cluster có khả năng xử lý mạnh hơn bất cứ một máy tính đơn lẻ nào. Mỗi cluster có thể bao gồm hàng tá máy tính, mỗi máy có nhiều bộ xử lý. Khả năng mở rộng cao: có thể nâng cấp, mở rộng một cluster đã được cấu hình và hoạt động ổn định. Độ tin cậy cao: Hệ thống vẫn hoạt động ổn định khi có một nút (node) trong hệ thống bị hư hỏng. Trong nhiều hệ thống, khả năng chịu lỗi (fault tolerance) được xử lý tự động bằng phần mềm. Chi phí đầu tư thấp: hệ thống cluster có khả năng mạnh hơn một máy tính đơn lẻ mạnh nhất với chi phí thấp hơn. Một hệ thống NUMA (Nonunifrom Memory Access) là hệ thống đa xử lý được giới thiệu trong thời gian gần đây, đây là hệ thống với bộ nhớ chia sẻ, thời gian truy cập các vùng nhớ dành riêng cho các bộ xử lý thì khác nhau. Điều này khác với kiểu quản lý bộ nhớ trong hệ thống SMP (bộ nhớ dùng chung, thời gian truy cập các vùng nhớ khác nhau trong hệ thống cho các bộ xử lý là như nhau). Hệ thống này có những thuận lợi và bất lợi như sau: Thuận lợi: Thực hiện hiệu quả hơn so với hệ thống SMP trong các xử lý song song. Không thay đổi phần mềm chính. Bộ nhớ có khả năng bị nghẽn nếu có nhiều truy cập đồng thời, nhưng điều này có thể được khắc phục bằng cách: + Cache L1 và L2 được thiết kế để giảm tối thiểu tất cả các thâm nhập bộ nhớ. + Cần các phần mềm cục bộ được quản lý tốt để việc các ứng dụng hoạt động hiệu quả. + Quản trị bộ nhớ ảo sẽ chuyển các trang tới các nút cần dùng. 103 Bất lợi: Hệ thống hoạt động không trong suốt như SMP: việc cấp phát các trang, các quá trình có thể được thay đổi bởi các phần mềm hệ thống nếu cần. Hệ thống phức tạp. Liên quan đến bộ nhớ trong các máy tính song song, chúng ta có thể chia thành hai nhóm máy: Nhóm máy thứ nhất, mà ta gọi là máy có kiến trúc bộ nhớ chia sẻ, có một bộ nhớ trung tâm duy nhất được phân chia cho các bộ xử lý và một hệ thống bus chia sẻ để nối các bộ xử lý và bộ nhớ. Vì chỉ có một bộ nhớ trong nên hệ thống bộ nhớ không đủ khả năng đáp ứng nhu cầu thâm nhập bộ nhớ của một số lớn các bộ xử lý. Kiểu kiến trúc bộ nhớ chia sẻ được dùng trong hệ thống SMP. Nhóm máy thứ hai bao gồm các máy có bộ nhớ phân tán vật lý. Hình 3. 25. Cấu trúc nền của một bộ nhớ phân tán 104 Mỗi máy của nhóm này gồm có các nút, mỗi nút chứa một bộ xử lý, bộ nhớ, một vài ngã vào ra và một giao diện với hệ thống kết nối giữa các nút (Hình 3.25). Việc phân tán bộ nhớ cho các nút có hai điểm lợi. Trước hết, đây là một cách phân tán việc thâm nhập bộ nhớ. Thứ hai, cách này làm giảm thời gian chờ đợi lúc thâm nhập bộ nhớ cục bộ. Các lợi điểm trên làm cho kiến trúc có bộ nhớ phân tán được dùng cho các máy đa xử lý có một số ít bộ xử lý. Điểm bất lợi chính của kiến trúc máy tính này là việc trao đổi dữ liệu giữa các bộ xử lý trở nên phức tạp hơn và mất nhiều thời gian hơn vì các bộ xử lý không cùng chia sẻ một bộ nhớ trong chung. Cách thực hiện việc trao đổi thông tin giữa bộ xử lý và bộ nhớ trong, và kiến trúc logic của bộ nhớ phân tán là một tính chất đặc thù của các máy tính với bộ nhớ phân tán. Có 2 phương pháp được dùng để truyền dữ liệu giữa các bộ xử lý. i). Phương pháp thứ nhất là các bộ nhớ được phân chia một cách vật lý có thể được thâm nhập với một định vị chia sẻ một cách logic, nghĩa là nếu một bộ xử lý bất kỳ có quyền truy xuất, thì nó có thể truy xuất bất kỳ ô nhớ nào. Trong phương pháp này các máy được gọi có kiến trúc bộ nhớ chia sẻ phân tán (DSM: Distributed Sharing Memory). Từ bộ nhớ chia sẻ cho biết không gian định vị bị chia sẻ. Nghĩa là cùng một địa chỉ vật lý cho 2 bộ xử lý tường ứng với cùng một ô nhớ. ii). Phương pháp thứ hai, không gian định vị bao gồm nhiều không gian định vị nhỏ không giao nhau và có thể được một bộ xử lý thâm nhập. Trong phương pháp này, một địa chỉ vật lý gắn với 2 máy khác nhau thì tương ứng với 2 ô nhớ khác nhau trong 2 bộ nhớ khác nhau. Mỗi mô-đun bộ xử lý-bộ nhớ thì cơ bản là một máy tính riêng biệt và các máy này được gọi là đa máy tính. Các máy này có thể gồm nhiều máy tính hoàn toàn riêng biệt và được nối vào nhau thành một mạng cục bộ. Hình 3. 26. Tổ chức kết nối của máy tính song song có bộ nhớ phân tán Kiến trúc song song phát triển mạnh trong thời gian gần đây do các lý do: 105 - Việc dùng xử lý song song đặc biệt trong lãnh vực tính toán khoa học và công nghệ. Trong các lãnh vực này người ta luôn cần đến máy tính có tính năng cao hơn. - Người ta đã chấp nhận rằng một trong những cách hiệu quả nhất để chế tạo máy tính có tính năng cao hơn các máy đơn xử lý là chế tạo các máy tính đa xử lý. - Máy tính đa xử lý rất hiệu quả khi dùng cho đa chương trình. Đa chương trình được dùng chủ yếu cho các máy tính lớn và cho các máy phục vụ lớn. Các ví dụ về các siêu máy tính dùng kỹ thuật xử lý song song: Máy điện toán Blue Gene/L của IBM đang được đặt tại Phòng thí nghiệm Lawrence Livermore, và đứng đầu trong số 500 siêu máy tính mạnh nhất thế giới. Siêu máy tính Blue Gene/L được sử dụng cho các công việc "phi truyền thống", chủ yếu là giả lập và mô phỏng các quá trình sinh học và nguyên tử. IBM nghiên cứu và phát triển Blue Gene với mục đích thử nghiệm nhằm tạo ra các hệ thống cực mạnh nhưng chiếm ít không gian và tiêu thụ ít năng lượng. Siêu máy tính IBM Blue Gene/L có khả năng xử lý 135,5 nghìn tỷ phép tính/giây (135,3 teraflop). Số bộ xử lý (BXL) của Blue Gene/L được các nhà khoa học tăng lên gấp đôi (64.000 BXL) nhằm tăng cường khả năng tính toán cho siêu máy tính này. Hãng điện tử khổng lồ NEC phát hành một Supercomputer dạng vec-tơ, máy SX-8 mới ra đời có tốc độ xử lý cực đại lên tới 65 teraflop (65 nghìn tỷ phép tính dấu phẩy động/giây) và khả năng hoạt động ổn định ở mức xấp xỉ 90% của tốc độ 58,5% teraflop. Máy SX-8 có kiến trúc khác hẳn Blue Gene/L của IBM. Nó dùng kiến trúc vec-tơ nên đem đến độ ổn định khi hoạt động cao hơn nhiều so với dạng máy tính vô hướng (scalar) như của IBM. 3.6. Kiến trúc IA-64 Kiến trúc Itanium (IA-64) là kiến trúc điện toán mà Intel và HP đặt rất nhiều tham vọng vào đây. Hãng này hy vọng nó sẽ thay thế kiến trúc x86 vốn đã có nhiều tuổi. Con chip Itanium đầu tiên Intel tung ra là vào hồi 2001. Kiến trúc này là sản phẩm của sự kết hợp nghiên cứu giữa hai công ty máy tính hàng đầu thế giới là Intel, HP (Hewlett Packard) và một số trường đại học. Kiến trúc mới dựa trên sự phát triển của công nghệ mạch tích hợp và kỹ thuật xử lý song song. Kiến trúc IA-64 giới thiệu một sự khởi đầu mới quan trọng của kỹ thuật siêu vô hướng - kỹ thuật xử lý lệnh song song (EPIC: Expicitly Parallel Intruction Computing) - kỹ thuật ảnh hưởng nhiều đến sự phát triển của bộ xử lý hiện nay. Sản phẩm đầu tiên thuộc kiến trúc này là bộ xử lý Itanium. Đặc trƣng của kiến trúc IA-64: - Cơ chế xử lý song song là song song các lệnh mã máy thay vì các bộ xử lý song song như hệ thống đa bộ xử lý. - Các lệnh dài hay rất dài (LIW hay VLIW). 106 - Các lệnh rẽ nhánh xác định (thay vì đoán các lệnh rẽ nhánh như các kiến trúc trước). - Nạp trước các lệnh (theo sự suy đoán). Các đặc trưng của tổ chức của bộ xử lý theo kiến trúc IA-64: - Có nhiều thanh ghi: số lượng thanh ghi các bộ xử lý kiến trúc IA-64 là 256 thanh ghi. Trong đó, 128 thanh ghi tổng quát (GR) 64 bit cho các tính toán số nguyên, luận lý; 128 thanh ghi 82 bit (FR) cho các phép tính dấu chấm động và dữ liệu đồ hoạ; ngoài ra, còn có 64 thanh ghi thuộc tính (PR)1 bit để chỉ ra các thuộc tính lệnh đang thi hành. - Nhiều bộ thi hành lệnh: hiện nay, một máy tính có thể có tám hay nhiều hơn các bộ thi hành lệnh song song. Các bộ thi hành lệnh này được chia thành bốn kiểu: - Kiểu I (I-Unit): dùng xử lý các lệnh tính toán số nguyên, dịch, luận lý, so sánh, đa phương tiện. - Kiểu M (M-Unit): Nạp và lưu trữ giữa thanh ghi và bộ nhớ thêm vào một vài tác vụ ALU. - Kiểu B (B-Unit): Thực hiện các lệnh rẽ nhánh. - Kiểu F (F-Unit): Các lệnh tính toán số dấu chấm động Định dạng lệnh trong kiến trúc IA-64 Hình 3. 27. Định dạng lệnh trong kiến trúc IA-64 107 Kiến trúc IA-64 định nghĩa một gói (buldle) 128 bit chứa ba lệnh (mỗi lệnh dài 41 bit) và một trường mẫu (template field) 5 bit. Bộ xử lý có thể lấy một hay nhiều gói lệnh thi hành cùng lúc. Trường mẫu (template field) này chứa các thông tin chỉ ra các lệnh có thể thực hiện song song (Bảng 3.3). Các lệnh trong một bó có thể là các lệnh độc lập nhau. Bộ biên dịch sẽ sắp xếp lại các lệnh trong các gói lệnh kề nhau theo một thứ tự để các lệnh có thể được thực hiện song song Hình 3.27a chỉ ra định dạng lệnh trong kiến trúc IA-64. Hình 3.27b mô tả dạng tổng quát của một lệnh trong gói lệnh. Trong một lệnh, mã lệnh chỉ có 4 bit chỉ ra 16 khả năng có thể để thi thi hành một lệnh và 6 bit chỉ ra thanh ghi thuộc tính được dùng với lệnh. Tuy nhiên, các mã tác vụ này còn tuỳ thuộc vào vị trí của lệnh bên trong gói lệnh, vì vậy khả năng thi hành của lệnh nhiều hơn số mã tác vụ được chỉ ra. Hình 3.27c mô tả chi tiết các trường trong một lệnh (41 bit). Trong bảng 3.3, các kiểu L-Unit, X-Unit là các kiểu mở rộng, có thể thực hiện lệnh bởi I-Unit hay B-Unit. Bảng 3. 3. Bảng mã hoá tập hợp các ánh xạ trong trường mẫu. 108 109 CÂU HỎI ÔN TẬP CHƢƠNG 3 Câu 1: Nêu các thành phần và nhiệm vụ của đường đi dữ liệu. Câu 2: Mô tả đường đi dữ liệu ứng với các lệnh sau: i. ADD R1, R2, R3 ii. SUB R1, R2, (R3) iii. ADD R1, R5,#100 iv. IMP R1 (Nhảy đến ô nhớ mà R1 trỏ tới) v. BRA + 5 (Nhảy bỏ 5 lệnh). Câu 3: Nêu khái niệm ngắt quãng. Cho biết mục đích của việc sử dụng ngắt quãng. Nêu các giai đoạn thực hiện ngắt quãng của CPU. Câu 4: Trình bày kỹ thuật ống dẫn và cho biết những ràng buộc khi thực hiện kỹ thuật ống dẫn. Câu 5: Vẽ hình để mô tả kỹ thuật ống dẫn. Kỹ thuật ống dẫn làm tăng tốc độ CPU lên bao nhiêu lần (theo lý thuyết)? Tại sao trên thực tế sự gia tăng này lại ít hơn? Câu 6: Các điều kiện mà một CPU cần phải có để tối ưu hóa kỹ thuật ống dẫn. Giải thích từng điều kiện. Câu 7: a. Giả sử một tiến trình được chia thành 4 giai đoạn như sau: Mô tả bằng sơ đồ và xác định tổng thời gian tính toán khi thực hiện tuần tự và hình ống của 2 tiến trình. b. Trong đoạn chương trình sau có khả năng xảy ra xung đột dữ liệu trong pipeline không? Tại sao? Nếu có khả năng xảy ra xung đột, nêu một hướng khắc phục. ADD#500, R4, R4 ; R4 R4 + 500 ADD R2, R3, R1 ; R1 R2 + R3 SUB#1000, R5 ; R5 R5 - 1000 CMP#400, R1 ; So sánh R1 với 400 (tính R1 – 400, không gán kết quả vào R1) Biết rằng mỗi lệnh được chia thành 5 giai đoạn trong pipeline: Đọc lệnh (IF), giải mã và đọc toán hạng (ID), truy nhập bộ nhớ (MEM), thực hiện (EX) và lưu kết quả (WB). 110 Câu 8: Thế nào là máy tính vec-tơ? Các kiểu của kiến trúc vec-tơ. Câu 9: Cho ví dụ về máy tính một dòng lệnh, nhiều dòng số liệu (SIMD). Câu 10: Các máy tính song song nhiều dòng lệnh, nhiều dòng số liệu (MIMD) dùng nhiều bộ xử lý, được phân thành 2 loại tùy theo tổ chức bộ nhớ của chúng là: Máy tính đa xử lý có bộ nhớ tập trung chia sẻ và máy tính đa xử lý có bộ nhớ tập trung chia sẻ và máy tính đa xử lý có bộ nhớ phân tán. Phân tích ưu – khuyết điểm của hai loại máy tính này. Câu 11: Nêu các loại hệ thống MIMD. Câu 12: Nêu các đặc trưng của kiến trúc IA – 64 và định dạng lệnh trong kiến trúc IA – 64. Câu 13: Khi chọn CPU cho máy tính thì cần lưu ý điều gì? Gợi ý: Nếu đã có Mainboard thì phải mua CPU có các thông số sau phù hợp với Mainboard như: Soket; Tốc độ FSB (bus của CPU) mà Main hỗ trợ là bao nhiêu. Câu 14: Giữa CPU và RAM có mối liên hệ gì không khi chọn thiết bị? Câu 15: Muốn nâng cấp CPU có được không? Gợi ý: Hoàn toàn được nếu như CPU muốn nâng cấp cắm vừa chân (tức là cùng Soket) đồng thời nó có tốc độ Bus thuộc phạm vi mà Mainboard hỗ trợ. Lưu ý, có thể CPU tốc độ cao vẫn chạy được trên Main của bạn nhưng nó sẽ làm việc không hết hiệu suất . 111
File đính kèm:
- giao_trinh_kien_truc_may_tinh_phan_1.pdf