TỔNG QUAN VỀ KIẾN TRÚC MÁY TÍNH MỤC TIÊU: - Ghi nhớ được lịch sử phát triển của máy tính - Trình bày được các thành phần cơ bản của một máy vi tính - Giải thích được các cách biến đổi c
TỔNG QUAN VỀ KIẾN TRÚC MÁY TÍNH
Các thế hệ máy tính
1.1.1 Lịch sử máy tính a Thế hệ đầu tiên: Đèn ống chân không
ENIAC (Electronic Numerical Integrator And Computer) là máy tính điện tử số đa năng đầu tiên thế giới, được thiết kế và chế tạo tại Trường Đại học Pennsylvania để đáp ứng nhu cầu chiến tranh của Hoa Kỳ trong Thế chiến II Dự án này ra đời nhằm hỗ trợ phòng thí nghiệm Nghiên cứu đạn đạo Quân đội (BRL) trong việc phát triển bảng quỹ đạo chính xác cho các loại vũ khí mới, một nhiệm vụ vô cùng quan trọng để đảm bảo hiệu quả của các đợt tấn công Trước đây, BRL thuê hơn 200 người dùng bàn tính để thực hiện các phép tính phức tạp, nhưng quá trình này mất nhiều thời gian và gây khó khăn trong việc cung cấp các bảng quỹ đạo kịp thời Với sự ra đời của ENIAC, các phép tính chiến thuật đã trở nên nhanh chóng và chính xác hơn, giúp nâng cao hiệu suất và độ chính xác trong chiến đấu.
John Mauchly, giáo sư ngành kỹ thuật điện tại Đại học Pennsylvania, cùng sinh viên của ông là John Eckert đã đề xuất xây dựng máy tính đa năng sử dụng đèn chân không để giải quyết các bài toán của BRL Năm 1943, dự án này đã nhận được chấp thuận từ Quân đội, bắt đầu phát triển trên máy ENIAC - một trong những máy tính đầu tiên của lịch sử Máy ENIAC có kích thước rất lớn, nặng tới 30 tấn, chiếm hơn 450m² mặt sàn và chứa hơn 18.000 đèn chân không, tiêu thụ tới 140 kilowatt điện khi hoạt động Với khả năng thực hiện 5.000 phép cộng mỗi giây, ENIAC nhanh hơn nhiều so với các máy tính cơ điện trước đó, mở ra kỷ nguyên mới cho công nghệ tính toán.
ENIAC là máy tính sử dụng hệ thập phân thay vì hệ nhị phân, với số được biểu diễn và tính toán theo hệ thập phân Bộ nhớ của ENIAC gồm 20 bộ tích luỹ (accumulator), mỗi bộ có thể lưu trữ một số thập phân 10 chữ số Mỗi chữ số được thể hiện bằng một vòng đèn ống chân không gồm 10 bóng, trong đó chỉ có một bóng sáng ON để biểu thị một chữ số từ 0 đến 9 Một hạn chế lớn của ENIAC là phải lập trình thủ công bằng cách thiết lập các công tắc chuyển mạch và cắm rút dây cáp.
ENIAC hoàn thành vào năm 1946 nhưng không kịp phục vụ chiến tranh Nhiệm vụ đầu tiên của nó là thực hiện các phép tính phức tạp để xác định tính khả thi của bom hydro, cho thấy tính đa năng của máy tính này ENIAC tiếp tục hoạt động dưới sự quản lý của BRL cho đến năm 1955, sau đó được tháo rời.
Nhiệm vụ nhập và thay đổi chương trình cho ENIAC vô cùng nhàm chán Tuy nhiên, nếu có một chương trình được thể hiện dưới dạng phù hợp để lưu trữ trong bộ nhớ cùng với dữ liệu, máy tính có thể đọc lệnh trực tiếp từ bộ nhớ Điều này cho phép chương trình được thiết lập hoặc thay đổi dễ dàng bằng cách cập nhật giá trị trong bộ nhớ Ý tưởng của việc lưu trữ chương trình này, còn gọi là chương trình lưu trữ được, là bước đột phá do các nhà thiết kế đề xuất nhằm nâng cao hiệu quả và linh hoạt của máy tính.
ENIAC là một dự án máy tính quan trọng trong lịch sử, nhờ vào sự đóng góp của nhà toán học nổi tiếng John von Neumann, người tư vấn chính cho dự án Trong cùng thời gian đó, nhà khoa học Alan Turing cũng phát triển ý tưởng về máy tính, nhưng ý tưởng này được chính von Neumann công bố lần đầu vào năm 1945 trong dự án máy tính mới mang tên EDVAC (Electronic Discrete Variable Computer).
Năm 1946, von Neumann cùng các cộng sự bắt đầu thiết kế máy tính chương trình lưu trữ mới mang tên máy tính IAS tại Viện Nghiên cứu cao cấp Princeton Dù dự án vẫn chưa hoàn thành vào năm 1952, máy tính IAS được xem là nguyên mẫu tiên phong cho tất cả các máy tính đa năng sau này, đóng vai trò quan trọng trong sự phát triển của công nghệ máy tính hiện đại.
Một bộ nhớ chính, lưu trữ cả dữ liệu và lệnh
Một khối số học và logic (ALU) có khả năng xử lý dữ liệu nhị phân
Một khối điều khiển (CU), biên dịch các lệnh trong bộ nhớ và cho phép lệnh được thực hiện
Thiết bị vào/ra (I/O) vận hành bởi khối điều khiển
Hầu như tất cả các máy tính ngày nay đều có cấu trúc và chức năng chung theo mô hình von Neumann, giúp xử lý dữ liệu một cách hiệu quả và linh hoạt Để hiểu rõ hơn, chúng ta có thể mô tả ngắn gọn về hoạt động của máy tính IAS, một ví dụ tiêu biểu của kiến trúc này Mô hình von Neumann đề cao khả năng chia sẻ bộ nhớ để lưu trữ cả dữ liệu và chương trình, tạo điều kiện tối ưu cho quá trình xử lý thông tin Tham khảo cách hoạt động của máy tính IAS sẽ giúp hiểu rõ hơn về cách các thành phần như bộ xử lý trung tâm và bộ nhớ tương tác để thực thi các lệnh.
Bộ nhớ của máy tính IAS gồm 1000 vị trí lưu trữ, gọi là từ (word), mỗi từ chứa 40 chữ số nhị phân (bit) Cả dữ liệu và lệnh đều được lưu trữ trong các từ này, với dữ liệu biểu diễn dưới dạng nhị phân và các lệnh là các mã nhị phân Mỗi số được biểu diễn bằng 1 bit dấu và 39 bit giá trị, trong khi một từ có thể chứa hai lệnh, mỗi lệnh gồm 20 bit Trong đó, 8 bit dành cho mã lệnh (opcode) để chỉ định hành động cần thực hiện, còn 12 bit dùng để xác định địa chỉ cụ thể trong bộ nhớ.
Khối điều khiển vận hành máy IAS bằng cách truy xuất các lệnh từ bộ nhớ và thực hiện lần lượt từng lệnh Cả bộ điều khiển và ALU đều chứa các vị trí lưu trữ gọi là thanh ghi, giúp quản lý dữ liệu và lệnh một cách hiệu quả Để hiểu rõ hơn, ta có thể tham khảo sơ đồ cấu trúc chi tiết thể hiện rõ các thành phần này Hình ảnh minh họa cho thấy sự có mặt của các thanh ghi trong cả khối điều khiển và ALU, đóng vai trò quan trọng trong quá trình xử lý của máy tính IAS.
Thanh ghi đệm dữ liệu (MBR): Chứa một từ sắp được lưu vào bộ nhớ hoặc sắp
9 được gửi ra khối I/O, hoặc được dùng để nhận một từ đến từ bộ nhớ hoặc từ các khối I/O
Thanh ghi địa chỉ bộ nhớ (MAR): Chứa địa chỉ bộ nhớ của từ sắp được đọc hoặc ghi vào MBR
Thanh ghi tập lệnh (IR): Chứa lệnh với mã lệnh 8 bit sắp được thực hiện
Thanh ghi đệm chứa tập lệnh (IBR): Được sử dụng để tạm thời lưu trữ lệnh nằm bên phải của 1 từ trong bộ nhớ
Bộ đếm chương trình (PC): Chứa địa chỉ của cặp lệnh tiếp theo cần truy xuất từ bộ nhớ
Bộ cộng tích luỹ (AC) và bộ nhân chia (MQ) đóng vai trò quan trọng trong quá trình xử lý dữ liệu của ALU, giúp tạm thời lưu trữ các toán hạng và kết quả của các phép tính Trong đó, bộ AC thường dùng để lưu trữ kết quả các phép cộng, trừ, trong khi bộ MQ chủ yếu phục vụ cho các phép nhân và chia Ví dụ, kết quả của phép nhân hai số sẽ được lưu trữ trong bộ nhân chia MQ để dễ dàng xử lý tiếp theo Các thành phần này đảm bảo hoạt động chính xác và hiệu quả của các phép tính trong hệ thống máy tính.
40 bit là một số 80 bit; 40 bit quan trọng hơn được lưu trữ trong AC và 40 bit ít quan trọng hơn lưu trong MQ
Hệ thống IAS hoạt động dựa trên việc thực hiện lặp đi lặp lại các chu kì lệnh, mỗi chu kì gồm hai chu kì con chính Trong chu kì truy xuất, opcode của lệnh tiếp theo được nạp vào bộ IR, còn phần địa chỉ của lệnh được nạp vào bộ MAR Lệnh này có thể được lấy từ bộ IBR hoặc từ bộ nhớ bằng cách nạp một từ vào bộ MBR rồi truyền xuống IBR, IR, và MAR, đảm bảo quá trình xử lý lệnh diễn ra chính xác và liên tục.
Sau khi opcode được nạp vào bộ phần tử lệnh (IR), chu kỳ thực thi bắt đầu Mạch điều khiển tiến hành giải mã opcode và thực hiện lệnh bằng cách gửi các tín hiệu điều khiển phù hợp, nhằm điều hướng dữ liệu hoặc thực hiện các phép tính cần thiết.
Máy tính IAS có tổng cộng 21 lệnh, được liệt kê trong Bảng 2.1 Các lệnh này có thể được phân thành các nhóm như sau:
Truyền dữ liệu: Di chuyển dữ liệu giữa bộ nhớ và các thanh ghi ALU hoặc giữa hai thanh ghi ALU
Rẽ nhánh không điều kiện là một khái niệm quan trọng trong lập trình, giúp khối điều khiển thực hiện các lệnh trong bộ nhớ theo trình tự nhất định Thông thường, các lệnh được thực hiện theo thứ tự tuần tự, nhưng lệnh rẽ nhánh không điều kiện cho phép thay đổi trình tự này để hỗ trợ các hành động lặp đi lặp lại hoặc điều kiện linh hoạt trong quá trình thực thi Điều này giúp tối ưu hóa hiệu suất và khả năng linh hoạt của chương trình, đồng thời nâng cao hiệu quả xử lý trong các hệ thống phần mềm.
Rẽ nhánh có điều kiện: Nhánh có thể được tạo ra tuỳ thuộc vào điều kiện, do đó sẽ có các điểm quyết định
Số học: Các phép tính được thực hiện bởi ALU
Sửa đổi địa chỉ trong bộ xử lý cho phép tính toán địa chỉ trực tiếp trong ALU, sau đó chèn địa chỉ này vào các lệnh đã lưu trữ trong bộ nhớ Nhờ đó, chương trình có thể định địa chỉ một cách linh hoạt hơn, tối ưu hóa quá trình xử lý dữ liệu và tăng hiệu quả hoạt động của hệ thống Phương pháp này giúp cải thiện khả năng truy cập dữ liệu chính xác, nhanh chóng và linh hoạt hơn trong các quá trình thực thi lệnh.
Những năm 1950 đã chứng kiến sự ra đời của ngành công nghiệp máy tính với hai công ty lớn là Sperry và IBM chiếm lĩnh thị trường
Phân loại máy tính
Siêu máy tính là những hệ thống máy tính có khả năng xử lý dữ liệu vượt trội về tốc độ và hiệu suất Thuật ngữ "Siêu Tính Toán" lần đầu xuất hiện trên báo New York World vào năm 1920 để miêu tả các bảng tính lớn của IBM phục vụ cho trường Đại học Columbia Hiện nay, siêu máy tính đạt tốc độ xử lý hàng nghìn teraflop, giúp giải quyết các bài toán phức tạp trong nghiên cứu khoa học, dự báo khí hậu và phát triển trí tuệ nhân tạo Siêu máy tính đóng vai trò quan trọng trong các lĩnh vực đòi hỏi tính toán cao cấp, góp phần thúc đẩy sự tiến bộ công nghệ và khoa học trên thế giới.
Hiệu suất xử lý đạt 17 nghìn tỷ phép tính mỗi giây, tương đương với tổng công suất của 6.000 chiếc máy tính hiện đại nhất hiện nay, mỗi máy có tốc độ khoảng từ 3 đến 3,8 gigaflop, thể hiện khả năng tính toán vượt trội của công nghệ này.
Có thể hiểu siêu máy tính là hệ thống những máy tính làm việc song song
Vào ngày 29 tháng 6 năm 2006, bảng xếp hạng siêu máy tính chính thức được công bố tại Hội nghị siêu máy tính quốc tế diễn ra tại Đức Sự kiện do Đại học Tổng hợp Mannheim, Đức, phối hợp cùng Đại học Tennessee Mỹ và Trung tâm Nghiên cứu Năng lượng thuộc Phòng thí nghiệm Quốc gia Lawrence-Berkeley thực hiện Buổi công bố này đánh dấu bước quan trọng trong lĩnh vực siêu máy tính toàn cầu.
Siêu máy tính IBM Blue Gene/L từng giữ danh hiệu mạnh nhất thế giới nhờ hệ thống gồm 65.536 thiết bị xử lý, đạt tốc độ xử lý 280,6 nghìn tỷ phép tính mỗi giây (280,6 teraflop) theo chỉ số vận hành Linpack Hệ thống này đã tự phá kỷ lục của chính mình, gấp đôi kỷ lục trước đó là 136,8 teraflop, xác lập vị trí quán quân về hiệu suất tính toán cao nhất thế giới Phòng thí nghiệm Quốc gia Lawrence Livermore là nơi lắp đặt siêu máy tính này, thể hiện bước tiến quan trọng trong lĩnh vực siêu máy tính cao cấp.
Hiện nay, không hệ thống siêu máy tính nào vượt qua ngưỡng 100 teraflop, giúp Blue Gene/L giữ vững kỷ lục lâu dài Tuy nhiên, IBM đang lên kế hoạch xây dựng siêu máy tính Roadrunner tại Trung tâm Thí nghiệm Quốc gia Los Alamos, New Mexico, với tốc độ dự kiến lên tới 1.600 teraflop, gấp bốn lần hiệu suất của Blue Gene/L hiện tại.
Mainframe là loại máy tính mạnh mẽ thường được các công ty, tập đoàn và tổ chức chính phủ sử dụng để xử lý khối lượng dữ liệu lớn, như thống kê dữ liệu, quản lý tài nguyên và xử lý giao dịch Ban đầu, thuật ngữ "mainframe" dùng để chỉ những thùng máy lớn chứa bộ xử lý và bộ nhớ của các máy tính cỡ lớn, nhưng về sau, nó trở thành biểu tượng của một hệ thống máy tính to lớn và mạnh mẽ hơn máy tính cá nhân Mainframe còn được biết đến với tên gọi khác là "Big Iron", thể hiện sức mạnh vượt trội và tính ổn định của loại máy tính này trong các hoạt động quan trọng của doanh nghiệp và chính phủ.
Trong những năm 1950-1970, các nhà sản xuất máy tính đã bắt đầu chế tạo các dòng mainframe, nổi bật với nhóm "IBM và Bảy Chú Lùn" gồm IBM cùng các hãng như Burroughts, UNIVAC, NCR, Control Data, Honeywell, General Electric và RCA Sau khi General Electric và RCA rút khỏi nhóm, nhóm này đổi tên thành "IBM và BUNCH" (viết tắt các hãng còn lại) IBM đã bắt đầu chiếm lĩnh thị trường mainframe với các dòng series 700/7000 và sau đó là series 360, mở đường cho hành trình tiến hóa của kiến trúc mainframe Hiện nay, dòng máy chủ mainframe của IBM đã phát triển thành zSeries, dòng sản phẩm chủ lực trong lĩnh vực máy tính lớn doanh nghiệp.
Trong đó, có 18 công ty tại Mỹ sản xuất mainframe, còn trên toàn thế giới, nhiều hãng như Siemens và Telefunken của Đức, ICL của Anh, Olivetti của Đức, cùng các tập đoàn như Fujitsu, Hitachi, Oki, NEC của Nhật Bản đều tham gia vào lĩnh vực này Trong thời kỳ chiến tranh lạnh, Liên Xô đã sản xuất một số máy mainframe sao chép từ IBM và tự thiết kế các dòng mainframe như BESM và Strela, thể hiện sự đa dạng và phát triển của công nghệ mainframe trên toàn cầu.
Trong những năm đầu của thập niên 1970, thị trường mainframe ngày càng thu hẹp do cạnh tranh khốc liệt, khiến các công ty như RCA về chung với UNIVAC và General Electric rút lui khỏi thị trường Đến thập niên 1980, ngành công nghiệp này tiếp tục chứng kiến sự hợp nhất, với Honeywell sát nhập vào Bull và UNIVAC trở thành phần của Sperry Năm 1986, Sperry hợp nhất với Burroughs để thành lập Tập đoàn Unisys, đồng thời năm 1991, AT&T nắm giữ cổ phần của NCR, thể hiện xu hướng tập trung và hợp nhất trong ngành công nghiệp máy tính lớn.
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Cập nhật phần mềm cho máy mainframe thường yêu cầu thiết lập lại hệ điều hành hoặc phần của nó, trong khi tính liên tục hoạt động của mainframe được đảm bảo nhờ các kiến trúc ảo hóa như z/OS, Parallel Sysplex của IBM hay XPLC của Unisys Các kiến trúc này cho phép một hệ thống đảm nhiệm nhiệm vụ của hệ thống khác trong quá trình cập nhật, nâng cấp hoặc sửa chữa, tối ưu hóa khả năng xử lý và hoạt động liên tục của mainframe Để khai thác tối đa sức mạnh của mainframe, cần có đội ngũ kỹ sư chuyên nghiệp và được đào tạo bài bản Việc bảo trì và lắp đặt mainframe phức tạp hơn nhiều so với máy tính để bàn, và nếu không cẩn thận, gây hư hỏng hệ thống sẽ làm mất đi toàn bộ lợi thế của mainframe đối với tổ chức.
Mainframe nổi bật với tính bảo mật vượt trội so với các loại máy tính khác, được các tổ chức nghiên cứu của Mỹ đánh giá là hệ thống an toàn nhất thế giới, như IBM zSeries, Unisys Dorado, và Unisys Libra, với số nguy cơ bảo mật rất thấp Trong khi đó, các hệ thống Windows, Linux và Unix có hàng nghìn lỗ hổng có thể bị khai thác, khiến chúng dễ bị tấn công hơn Chính vì khả năng chống malware và virus cực cao, mainframe trở thành lựa chọn ưu tiên của nhiều chính phủ để xử lý và lưu trữ dữ liệu quan trọng.
Máy tính mini ra đời vào giữa những năm 1960, là một phiên bản thu nhỏ của máy tính lớn nhưng vẫn đầy đủ các tính năng chính Chúng có kích thước nhỏ hơn so với các máy tính lớn, phù hợp trung gian giữa máy tính lớn và máy tính cá nhân Máy tính mini còn được gọi là máy tính tầm trung, chủ yếu dành cho các hệ thống nhiều người dùng để cùng làm việc đồng thời.
Thông tin và sự mã hóa thông tin
Khái niệm về thông tin gắn liề n với sự hiểu biết một trạng thái cho sẵn trong nhiều trạng thái có thể có vào một thời điểm cho trước
Trong ký hiệu này, chúng ta xác định hai trạng thái chính: trạng thái thấp khi hiệu điện thế dưới V L và trạng thái cao khi hiệu điện thế vượt quá V H Để phân tích tín hiệu một cách chính xác, cần xác định thời điểm quan sát trạng thái của tín hiệu, ví dụ như tại thời điểm t1 tín hiệu ở trạng thái thấp, còn tại thời điểm t2 thì tín hiệu ở trạng thái cao, giúp hiểu rõ quá trình chuyển đổi giữa các trạng thái tín hiệu.
1.3.2 Lượng thông tin và sự mã hóa thông tin
Thông tin được đo lường bằng đơn vị thông tin mà ta gọi là bit Lượng thông tin được định nghĩa bởi công thức:
Trong đó: I: là lượng thông tin tính bằng bit
N: là số trạng thái có thể có
Một bit phản ánh mức độ hiểu biết về một trạng thái trong hai trạng thái có thể có Ví dụ, thông tin của một trạng thái trong tổng số 8 trạng thái có thể được diễn đạt bằng khoảng 3 bits dữ liệu Điều này cho thấy rằng, để mô tả hoặc lưu trữ trạng thái trong hệ thống, số bit cần thiết phụ thuộc vào số lượng trạng thái có thể tồn tại, giúp tối ưu hoá quá trình xử lý và truyền tải thông tin.
Tám trạng thái được ghi nhận nhờ 3 số nhị phân (mỗi số nhị phân có thể có giá trị 0 hoặc 1)
Lượng thông tin được đo bằng số con số nhị phân cần thiết để biểu diễn các trạng thái có thể có Một số nhị phân gọi là bit, tượng trưng cho một trạng thái duy nhất Một từ n bit có khả năng thể hiện tổng cộng 2^n trạng thái, cung cấp khả năng biểu diễn đa dạng các trạng thái khác nhau Vì vậy, một từ n bit tương ứng với lượng thông tin n bit, giúp xác định chính xác dữ liệu cần truyền tải hoặc lưu trữ.
Hệ thống số là nền tảng xác định phạm vi các giá trị có thể có của một chữ số, như trong hệ thập phân các chữ số có giá trị từ 0 đến 9, còn trong hệ nhị phân mỗi chữ số (bit) chỉ có hai giá trị là 0 hoặc 1 Việc hiểu rõ khái niệm hệ thống số giúp làm rõ cách biểu diễn dữ liệu trong các hệ thống máy tính và các ứng dụng công nghệ số khác.
Dạng tổng quát để biểu diễn giá trị của một số:
V k : Số cần biểu diễn giá trị m: số thứ tự của chữ số phần lẻ
(phần lẻ của số có m chữ số được đánh số thứ tự từ -1 đến -m) n-1: số thứ tự của chữ số phần nguyên
(phần nguyên của số có n chữ số được đánh số thứ tự từ 0 đến n-1) b i : giá trị của chữ số thứ i k: hệ số (k: hệ thập phân; k=2: hệ nhị phân; )
Ví dụ: biểu diễn số 541.25 10
Một máy tính chủ yếu được cấu tạo từ các mạch điện tử có hai trạng thái, điều này giúp việc biểu diễn trạng thái của các mạch dễ dàng qua các số nhị phân Việc sử dụng hệ nhị phân là rất tiện lợi để mã hoá các ký tự, số cần thiết cho vận hành của máy tính, cũng như để biểu diễn dữ liệu một cách chính xác Để chuyển đổi một số hệ thập phân sang hệ nhị phân, ta có thể áp dụng hai phương thức chính, trong đó phương thức số dư được sử dụng để chuyển đổi phần nguyên của số thập phân sang nhị phân, giúp dễ dàng đổi ví dụ như chuyển đổi 23.375 từ hệ thập phân sang hệ nhị phân bằng cách chuyển đổi phần nguyên qua phương thức số dư với trọng số bắt đầu từ bit nhỏ nhất.
Phương thức nhân để biến đổi phần lẻ của số thập phân sang nhị phân bit có trọng số lớn nhất
Kết quả cuối cùng nhận được là: 23.37510 = 10111.011 2
Trong quá trình chuyển đổi phần thập phân của một số nguyên sang hệ nhị phân theo phương pháp nhân, đôi khi xảy ra các trường hợp dẫn đến chu kỳ lặp vô hạn trong quá trình biến đổi số Đây là một hiện tượng thường gặp khi phần thập phân có giá trị thể hiện dưới dạng phân số không giảm được, gây khó khăn trong việc chuyển đổi chính xác và gây ra vòng lặp vô hạn trong quá trình xử lý Hiểu rõ về đặc điểm này giúp các nhà phát triển phần mềm và học sinh, sinh viên nắm bắt tốt hơn các quy tắc chuyển đổi số giữa các hệ đếm, từ đó cải thiện kỹ năng và nâng cao độ chính xác trong các bài tập liên quan.
Khi chuyển đổi số nhị phân sang các hệ thống số khác nhau, chúng ta có thể nhóm các bit nhị phân thành các nhóm phù hợp để biểu diễn số trong hệ thống số mong muốn Quá trình này giúp đơn giản hóa việc chuyển đổi giữa các hệ thống số, đảm bảo tính chính xác và hiệu quả Việc phân nhóm các bit nhị phân là bước quan trọng để chuyển đổi số hiệu quả từ hệ nhị phân sang các hệ thống số khác như thập phân, thập lục phân hoặc nhị phân nâng cao.
Thông thường, người ta nhóm 4 bit trong hệ nhị phân hệ để biểu diễn số dưới dạng thập lục phân (Hexadecimal)
Dựa vào cách biến đổi số trong bảng phía trên, chúng ta có thể thấy ví dụ về cách chuyển đổi các số trong các hệ thống số khác nhau sang hệ nhị phân, giúp hiểu rõ hơn về quy trình chuyển đổi giữa các hệ đếm khác nhau.
Một từ n bit có thể biểu diễn tất cả các số dương từ 0 đến 2^n - 1 Mỗi số nhị phân thứ i trong từ n bit tương ứng với một số nguyên thập phân, giúp xác định chính xác giá trị của từng số trong khoảng này Điều này thể hiện rõ khả năng mở rộng của các chuỗi nhị phân trong việc lưu trữ dữ liệu số học, phù hợp với các ứng dụng yêu cầu đại diện các số nguyên trong phạm vi rộng.
N = ∑ di 2i i =0 Một Byte (gồm 8 bit) có thể biểu diễn các số từ 0 tới 255 và một từ 32 bit cho phép biểu diễn các số từ 0 tới 4294967295
1.3.4 Chuyển đổi giữa các hệ thống số
Có nhiều cách để biểu diễn một số n bit có dấu Trong tất cả mọi cách thì bit cao nhất luôn tượng trưng cho dấu
Trong hệ thống biểu diễn số, bit dấu có tầm quan trọng đặc biệt để xác định phương tính của số đó Khi bit dấu có giá trị là 0, số đó được hiểu là số nguyên dương, còn nếu bit dấu có giá trị là 1, số trở thành số nguyên âm Tuy nhiên, cách biểu diễn này không phù hợp để xử lý các số được biểu diễn bằng số thừa K, như sẽ được trình bày chi tiết trong phần sau của chương, trong đó bit dấu ngược lại: 1 biểu thị số nguyên dương, còn 0 biểu thị số nguyên âm.
Số nguyên có bit d n-1 là bit dấu và có trị số tượng trưng bởi các bit từ d 0 tới d n-2
1.3.5.1 Số nguyên có dấu: Trị tuyệt đối, bù 1, bù 2, thừa k, BCD
Trong cách này, bit d n -1 là bit dấu và các bit từ d 0 tới d Một từ n bit tương ứng với số nguyên thập phân có dấu
26 n-2 cho giá trị tuyệt đối
- Một Byte (8 bit) có thể biểu diễn các số có dấu từ -127 tới +127
- Có hai cách biểu diễn số không là 0000 0000 (+0) và 1000 0000 (-0)
*) Cách biểu diễn hằng số bù 1
Trong phương pháp biểu diễn số âm, số -N được thể hiện bằng cách thay thế các bit nhị phân của số dương N bằng số bù của nó Cụ thể, nếu bit d i bằng 0, thì nó được đổi thành 1, và ngược lại, qua đó giúp biểu diễn số âm một cách chính xác trong hệ thống nhị phân.
- Một Byte cho phép biểu diễn tất cả các số có dấu từ -127 (1000 00002) đến
- Có hai cách biểu diễn cho 0 là 0000 0000 (+0) và 1111 1111 (-0)
Để biểu diễn số bằng hệ số bù 2, người ta lấy số bù 1 rồi cộng thêm 1 Một từ n bit (dₙ₋₁ d₀) có trị thập phân được xác định dựa trên phương pháp này Phương pháp biểu diễn bằng số bù 2 giúp dễ dàng thực hiện các phép tính cộng trừ số âm trong máy tính Sử dụng hệ số bù 2 là kỹ thuật phổ biến để thể hiện các số âm trên các hệ thống máy tính hiện đại.
Một từ n bit có khả năng biểu diễn các số có dấu trong phạm vi từ -2^(n-1) đến 2^(n-1) - 1, mang lại khả năng lưu trữ các giá trị âm và dương Đặc biệt, số không được biểu diễn duy nhất bằng cách tất cả các bit của nó đều là không.
- Dùng 1 Byte (8 bit) để biểu diễn một số có dấu lớn nhất là +127 và số nhỏ nhất là –128
Chỉ có một giá trị 0: +0 = 00000000 2 , -0 = 00000000 2
Bảng I.4: Số 4 bit có dấu theo cách biểu diễn số âm bằng số bù 2
*) Cách biểu diễn bằng số thừa K
Trong phương pháp này, số dương của một số N được xác định bằng cách cộng thêm vào một số thừa K, sao cho tổng của K và một số âm bất kỳ luôn luôn dương Số âm -N của số N có thể tính bằng cách lấy K - N hoặc bằng cách lấy bù hai của số đã xác định.
Ví dụ, số thừa kế có giá trị là 128, đây là một số nguyên dương Trong đại số máy tính, số âm được biểu diễn bằng phương pháp bù hai của số nguyên dương tương ứng, bỏ qua bit cao nhất Quá trình này giúp dễ dàng thực hiện các phép tính cộng trừ trên máy tính Khi thực hiện các tính toán, số cộng thêm vào là 128, đảm bảo tính chính xác của các phép toán trong hệ thống số nguyên có dấu.
- Dùng 1 Byte (8 bit) để biểu diễn một số có dấu lớn nhất là +127 và số nhỏ nhất là –128
- Chỉ có một giá trị 0: +0 = 100000002, -0 = 10000000 2
KIẾN TRÚC PHẦN MỀM BỘ XỬ LÝ
Thành phần cơ bản của một máy tính
Bộ máy tính cơ bản gồm có CPU, bộ nhớ trong và các bộ phận nhập-xuất thông tin, được kết nối qua các hệ thống bus để truyền dữ liệu hiệu quả Hệ thống bus gồm bus địa chỉ, bus dữ liệu và bus điều khiển, trong đó bus địa chỉ và bus dữ liệu chịu trách nhiệm chuyển dữ liệu giữa các thành phần, còn bus điều khiển giúp đồng bộ quá trình trao đổi thông tin Thông thường, hệ thống bus được chia thành bus hệ thống để trao đổi dữ liệu giữa CPU và bộ nhớ (qua cache) và bus vào-ra để kết nối các thiết bị vào ra với bộ nhớ trong, đảm bảo hoạt động liên tục, hiệu quả của toàn bộ hệ thống máy tính.
Chương trình được sao chép từ đĩa cứng vào bộ nhớ trong để chuẩn bị cho hoạt động, bao gồm các thông tin cần thiết như lệnh và dữ liệu Bộ xử lý trung tâm đọc các lệnh và dữ liệu từ bộ nhớ, sau đó thực thi các lệnh đó, lưu kết quả vào bộ nhớ hoặc xuất ra thiết bị thông tin như màn hình hoặc máy in Quá trình này giúp đảm bảo chương trình hoạt động hiệu quả và chính xác.
Thành phần cơ bản của một máy tính bao gồm :
Bộ nhớ trong là một tập hợp các ô nhớ, mỗi ô có địa chỉ riêng biệt, chứa dữ liệu được mã hóa thành dạng số nhị phân, không phân biệt kiểu dữ liệu là lệnh hay số liệu Thời gian truy cập vào bất kỳ ô nhớ nào trong bộ nhớ trong đều như nhau, gọi là bộ nhớ truy cập ngẫu nhiên (RAM) Một từ máy tính thường có độ dài 32 bit (4 byte), trong khi dung lượng của mỗi ô nhớ thường là 8 bit (1 byte).
Bộ xử lý trung tâm (CPU) là thành phần chính chịu trách nhiệm thi hành các lệnh trong máy tính, lấy lệnh từ bộ nhớ trong và xử lý dữ liệu liên quan CPU gồm hai phần chính: phần thi hành lệnh và phần điều khiển, trong đó phần thi hành lệnh bao gồm bộ làm toán và bộ luận lý giúp thực hiện các phép tính và cân nhắc logic để xử lý dữ liệu chính xác.
ALU (Arithmetic and Logic Unit) là thành phần chịu trách nhiệm thực hiện các phép toán số học và logic trên dữ liệu Các thanh ghi hỗ trợ lưu trữ tạm thời dữ liệu và kết quả trung gian trong quá trình xử lý Phần điều khiển đóng vai trò đảm bảo các lệnh được thực hiện theo đúng trình tự, tác động các mạch chức năng phù hợp để hoàn thành các lệnh một cách chính xác và hiệu quả.
Bộ phận vào - ra là thành phần chịu trách nhiệm truyền tải thông tin giữa máy tính và người dùng hoặc giữa các máy tính trong mạng Các thiết bị xuất nhập phổ biến bao gồm bộ lưu trữ ngoài, màn hình, máy in, bàn phím, chuột, máy quét ảnh và các giao diện mạng cục bộ hoặc diện rộng Ngoài ra, bộ tạo thích ứng (chipset) đóng vai trò kết nối các hệ thống bus với các tốc độ dữ liệu khác nhau, đảm bảo hoạt động hiệu quả của toàn bộ hệ thống máy tính.
2.1.1 Định nghĩa kiến trúc máy tí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 của 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 tập trung vào kiến trúc phần mềm của bộ xử lý, trong đó bao gồm các tập lệnh, dạng các lệnh và các kiểu định vị Những yếu tố này đóng vai trò quan trọng trong việc xác định hoạt động và hiệu quả của bộ xử lý, góp phần tối ưu hóa quá trình xử lý dữ liệu Hiểu rõ kiến trúc phần mềm của bộ xử lý giúp phát triển hệ thống máy tính hiệu quả hơn và nâng cao hiệu suất làm việc của phần mềm.
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ể được hiểu và 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ữ, với mỗi lệnh chứa đựng thông tin yêu cầu bộ xử lý thực hiện như mã tác vụ, địa chỉ toán hạng nguồn và kết quả, cùng lệnh kế tiếp Các thông tin này thường được ẩn để tối ưu hóa quá trình xử lý của hệ thống máy tính.
+ Kiểu định vị chỉ ra cách thức thâm nhập toán hạ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 sai sót
Phần tổ chức của máy tính liên quan đến cấu trúc bên trong của bộ xử lý, các bus và cấp bộ nhớ, cùng với các mặt kỹ thuật khác của hệ thống máy tính Nội dung này sẽ được trình bày chi tiết hơn trong các chương sau để giúp hiểu rõ hơn về kiến trúc và hoạt động của máy tính.
Lắp đặt phần cứng của máy tính liên quan đến việc lắp ráp các linh kiện điện tử và bộ phận phần cứng cần thiết để xây dựng một máy tính hoàn chỉnh Quá trình này không được đề cập trong chương trình giảng dạy chính thức, nhưng là bước quan trọng để đảm bảo máy tính hoạt động hiệu quả và ổn định.
Một số máy tính có cùng kiến trúc phần mềm nhưng khác nhau về tổ chức phần cứng, điển hình là VAX-11/780 và VAX-8600 Các dòng VAX-11/780 và VAX-11/785 sử dụng kiến trúc phần mềm tương tự, gần giống nhau về cách tổ chức, tuy nhiên việc lắp đặt phần cứng của chúng có sự khác biệt rõ rệt Máy VAX-11/785 đã tích hợp các mạch kết nối hiện đại nhằm nâng cao tốc độ xung nhịp và có những thay đổi nhỏ trong cấu trúc bộ nhớ trong, phản ánh tiến bộ về công nghệ phần cứng.
Tập lệnh
Mục tiêu của phần này là trình bày các ví dụ từ các kiến trúc phần mềm phổ biến nhất để làm rõ các kỹ thuật ở mức ngôn ngữ máy thực thi các cấu trúc trong các ngôn ngữ cấp cao Để minh họa, chúng ta sử dụng cú pháp lệnh hợp ngữ sau đây nhằm giúp người đọc hiểu rõ cách các cấu trúc này hoạt động khi chuyển sang cấp độ ngôn ngữ máy.
Từ gợi nhớ mã lệnh, thanh ghi đích, thanh ghi nguồn 1, thanh ghi nguồn 2
Từ gợi nhớ mã lệnh mô tả ngắn gọn tác vụ phải thi hành trên các thanh ghi nguồn, kết quả được lưu giữ trong thanh ghi đích
Lệnh nhảy (GOTO) trong ngôn ngữ lập trình cao cấp được thể hiện bằng các lệnh hợp ngữ như JUMP hoặc các lệnh vòng lặp Lệnh nhảy có thể nạp địa chỉ tuyệt đối vào bộ đếm chương trình (PC), hướng đến địa chỉ cần nhảy tới, hoặc theo kiểu vòng, trong đó bộ đếm chương trình chỉ cộng thêm một độ dời Phân biệt giữa lệnh nhảy tuyệt đối và vòng lặp là quan trọng, vì PC trong lệnh vòng chứa địa chỉ tương đối so với địa chỉ của lệnh sau lệnh vòng, giúp tối ưu hóa quá trình điều hướng trong mã nguồn.
2.2.1 Các lệnh về bộ nhớ, tính toán…
Gán trị, bao gồm gán trị cho biểu thức số học và logic, được thực hiện thông qua các lệnh mã máy Trong các kiến trúc RISC, có thể xác định các lệnh phù hợp để thực hiện quá trình gán trị này Các lệnh mã máy trong kiến trúc RISC đóng vai trò quan trọng trong việc xử lý các phép gán một cách hiệu quả và tối ưu.
LOAD Ri, M (địa chỉ) M[địa chỉ] ← Ri
STORE Ri, M(địa chỉ) ; Ri ← M[địa chỉ] Địa chỉ được tính tuỳ theo kiểu định vị được dùng
- Lệnh tính toán số học : tính toán số nguyên trên nội dung của hai thanh ghi Ri,
Rj và xếp kết quả vào trong Rk:
ADDD (cộng số có dấu chấm động, chính xác kép)
SUBD (trừ số có dấu chấm động, chính xác kép)
- Lệnh logic: thực hiện phép tính logic cho từng bit một
NEG (lệnh lấy số bù 1 )
Các lệnh dịch chuyển số học hoặc logic (SHIFT) và quay vòng (ROTATE) thường liên quan đến việc dịch trái hoặc phải một số bit nhất định, có hoặc không giữ bit bị mất vào ban đầu Những lệnh này hoạt động trên thanh ghi và kết quả cuối cùng được lưu trữ trong một thanh ghi khác để đảm bảo quá trình xử lý dữ liệu hiệu quả Số lần thực hiện dịch chuyển hoặc quay vòng thường được xác định trong một thanh ghi thứ ba, giúp kiểm soát chính xác quá trình thao tác dữ liệu Hình II.7 minh họa rõ nét các lệnh dịch chuyển và quay vòng trong kiến trúc máy tính, hỗ trợ người học hiểu rõ hơn về cách thực hiện các phép toán này.
Cho các kiến trúc kiểu RISC, ta có :
SLL (shift left logical : dịch trái logic)
SRL (shift right logical : dịch phải logic)
SRA (shift right arithemtic : dịch phải số học)
2.2.2 Các lệnh có điều kiện
Lệnh có điều kiện có dạng :
Nếu thì nếu không
(IF THEN ELSE )
Lệnh này buộc phải ghi nhớ điều kiện và nhảy vòng nếu điều kiện được thoả a) Ghi nhớ điều kiện
Bộ làm tính ALU cung cấp kết quả theo các đầu vào và phép tính cần thực hiện, đảm bảo hoạt động chính xác trong quá trình xử lý dữ liệu Ngoài ra, ALU còn cung cấp các thông tin bổ sung về kết quả dưới dạng các bit trạng thái, phản ánh các trạng thái logic ĐÚNG hoặc SAI, như minh họa trong hình II.8 Các bit trạng thái này giúp xác định các điều kiện như quá trội, rỗng, hoặc lỗi trong quá trình tính toán, góp phần nâng cao hiệu quả và độ tin cậy của hệ thống số.
Trong các bit trạng thái của máy tính, có các bit điều kiện quan trọng như bit dấu S (Sign), xác định kết quả âm khi đúng; bit zero Z (Zero), báo hiệu kết quả bằng không; bit tràn OVF (Overflow), xuất hiện khi phép tính số học vượt quá khả năng lưu trữ của thanh ghi; và bit số giữ C (Carry), cho biết có mục truyền khi thực hiện phép cộng Các bit này thường được gọi là bit mã điều kiện, giúp điều hướng các hoạt động xử lý trong hệ thống máy tính.
Có hai kỹ thuật cơ bản để ghi nhớ các bit trạng thái
Cách thứ nhất, ghi các trạng thái trong một thanh ghi đa dụng Ví dụ lệnh CMP Rk,
Lệnh Ri, Rj thực hiện phép trừ Ri - Rj mà không ghi kết quả vào thanh ghi, thay vào đó ghi các bit trạng thái vào thanh ghi Rk Thanh ghi này dùng cho các lệnh nhảy có điều kiện, giúp lưu trữ nhiều trạng thái sau nhiều phép tính để sử dụng về sau Tuy nhiên, kỹ thuật này yêu cầu sử dụng một thanh ghi đa dụng để ghi lại trạng thái, trong khi số thanh ghi tối đa trong các bộ xử lý hiện đại thường giới hạn ở 32, tạo ra nhược điểm về khả năng lưu trữ trạng thái.
Trong kiến trúc máy tính, một phương pháp hiệu quả để lưu trữ trạng thái của hệ thống là sử dụng thanh ghi trạng thái, nằm trong một thanh ghi đặc biệt Các vấn đề liên quan đến việc giữ gìn nội dung của thanh ghi này đã được giải quyết bằng nhiều kỹ thuật khác nhau Trong kiến trúc SPARC, chỉ một số lệnh nhất định như ADDCC, SUBCC mới được phép thay đổi thanh ghi trạng thái, giúp kiểm soát chính xác quá trình thực thi Trong khi đó, kiến trúc PowerPC phân chia thanh ghi trạng thái thành 8 trường nhỏ, mỗi trường 4 bit, tạo thành 8 thanh ghi trạng thái con, nâng cao khả năng quản lý trạng thái hệ thống.
Các lệnh nhảy hoặc nhảy vòng có điều kiện chỉ thực hiện lệnh nhả y khi điều kiện được thoả Trong trường hợp điều kiện không đúng, chương trình tiếp tục thực hiện với lệnh kế tiếp Lệnh nhảy dựa trên thanh ghi trạng thái để xác định xem có thực hiện nhảy hay không, đảm bảo điều kiện trong lệnh phải đúng mới chuyển hướng chương trình.
Chúng ta xem một ví dụ thực hiện lệnh nhảy có điều kiện
Sau khi bộ xử lý thi hành một tác vụ, trạng thái của hệ thống được lưu trữ trong thanh ghi, giúp duy trì dữ liệu quan trọng và trạng thái của bộ xử lý Các lệnh tiếp theo của bộ xử lý sẽ được thực thi dựa trên trạng thái này, đảm bảo quá trình xử lý diễn ra liên tục và chính xác Việc lưu trữ trạng thái trong thanh ghi là phần cốt lõi của kiến trúc máy tính, hỗ trợ tối ưu hóa hiệu suất và quản lý dữ liệu hiệu quả.
1 CMP R4, R1, R2 : So sánh R1 và R2 bằng cách trừ R1 cho R2 và lưu giữ trạng thái trong R4
2 BGT R4, +2 : Nhảy bỏ 2 lệnh nếu R1 > R2
3 ADD R3, R0, R2 : R0 có giá trị 0 Chuyển nội dung của R2 vào R3
5 ADD R3, R0, R1 : chuyển nội dung R1 vào R3
Nếu R1 > R2 thì chuỗi lệ nh được thi hành là 1, 2, 5, 6 được thi hành, nếu không thì chuỗi lệnh 1, 2, 3, 4, 6 được thi hành
Chuỗi các lệnh trên , trong đó có 2 lệnh nhảy, thực hiện công việc sau đây : Nếu R1 > R2 thì R3 = R1 nếu không R3 = R2
Trong các CPU hiện đại, kỹ thuật ống dẫn giúp giảm tốc độ thi hành lệnh nhảy, tăng hiệu quả xử lý Để tránh sử dụng lệnh nhảy trong một số trường hợp, người ta thường dùng các lệnh di chuyển có điều kiện, tối ưu hóa quá trình xử lý và nâng cao hiệu suất hệ thống.
1 CMP R4, R1, R2 : So sánh R1 và R2 và để các bit trạng thái trong R4
3 MGT R4, R3, R1 : (MGT : Move if greater than) Nếu R1 > R2 thì di chuyển R1 vào R3
Các lệnh vòng lặp trong lập trình được thực hiện thông qua lệnh nhảy có điều kiện đã đề cập trước đó Quản lý số lần lặp lại của vòng lặp được thực hiện bằng cách sử dụng bộ đếm vòng lặp, giúp theo dõi số lần thực thi của vòng lặp Sau mỗi vòng lặp, bộ đếm này được kiểm tra để xác định xem đã đủ số vòng lặp mong muốn hay chưa, từ đó quyết định có tiếp tục lặp hay không.
Bộ xử lý PowerPC có một lệnh quản lý vòng lặp
Với thanh ghi Ri chứa số lần lặp lại
Lệnh này làm các công việc sau:
Ri := Ri -1 Nếu Ri 0, PC := PC + độ dời Nếu không thì tiếp tục thi hành lệnh kế
Các thủ tục trong chương trình được gọi từ bất kỳ nơi nào thông qua lệnh CALL, giúp thực thi các đoạn mã riêng biệt Khi kết thúc thủ tục, lệnh RETURN được sử dụng để nạp địa chỉ trở về vào PC, đảm bảo chương trình tiếp tục hoạt động bình thường từ sau lệnh gọi thủ tục đó Để duy trì luồng thực thi chính xác, cần lưu giữ địa chỉ của lệnh sau lệnh CALL để trở về đúng vị trí ban đầu sau khi thủ tục kết thúc.
Trong các kiến trúc CISC như VAX 11, 80x86, 680x0, địa chỉ trở về thường được giữ ở ngăn xếp để quản lý luồng thực thi chương trình hiệu quả Ngược lại, trong các kiến trúc RISC, một thanh ghi đặc biệt (thường là R31) được dùng để lưu giữ địa chỉ trở về, giúp giảm thiểu việc truy cập bộ nhớ Các lệnh gọi thủ tục trong kiến trúc RISC thường sử dụng lệnh kiểu JMPL Ri để chuyển hướng thực thi, đồng thời tự động cập nhật địa chỉ trở về trong thanh ghi này, đảm bảo quá trình gọi và trả về thủ tục diễn ra nhanh chóng và chính xác hơn.
R31 := PC ; để địa chỉ trở về trong R31
PC := Ri ; nhảy tới địa chỉ của thủ tục nằm trong thanh ghi Ri
Lệnh trở về khi chấm dứt thủ tục là JMP R31, vì thanh ghi R31 chứa địa chỉ trở về
Việc sử dụng một thanh ghi đặc biệt để lưu trữ địa chỉ chỉ áp dụng cho các thủ tục cuối cùng, không có thủ tục nào khác gọi tiếp Để cho phép các thủ tục có thể gọi các thủ tục khác, ta có hai giải pháp chính, giúp mở rộng khả năng liên kết giữa các thủ tục trong chương trình.
Giải pháp 1: có nhiều thanh ghi để lưu trữ địa chỉ trở về
Giải pháp 2: lưu giữ địa chỉ trở về ở ngăn xếp
Việc gọi thủ tục có thể được thực hiện bằng chuỗi lệnh sau đây :
ADDI R30, R30,4 ; R30 là con trỏ ngăn xếp
STORE R31, (R30) ; lưu giữ địa chỉ trở về JMPL Ri ; gọi thủ tục
Người ta dùng chuỗi lệnh sau đây để trở về chương trình gọi :
LOAD R31, (R30) ; phục hồi địa chỉ trở về SUBI R30, R30,4 ; cập nhật con trỏ ngăn xếp JMP R31 ; trở về chương trình gọi
Kiến trúc RISC
Các kiến trúc CISC (Complex Instruction Set Computer) xuất hiện từ những năm 1960 nhằm giảm độ dài chương trình và tối ưu hóa việc thực hiện các lệnh phức tạp Các lập trình viên nhận thấy các ứng dụng khó sử dụng các thanh ghi, và các vi lệnh thực hiện nhanh hơn so với lệnh nhỏ hơn, dẫn đến việc lựa chọn kiểu bộ nhớ – bộ nhớ và bộ nhớ – thanh ghi Các đặc tính này tạo ra các lệnh có chiều dài thay đổi, khiến bộ điều khiển vi chương trình trở thành lựa chọn hiệu quả nhất để xử lý các lệnh đa dạng Các máy CISC tiêu biểu đều có nhiều lệnh, chiều dài lệnh linh hoạt và các cách thực hiện lệnh đa dạng, cùng với sự sử dụng rộng rãi của nhiều vi chương trình.
Tiến bộ trong lĩnh vực mạch tích hợp (IC) và kỹ thuật dịch chương trình đã ảnh hưởng đáng kể đến các phương pháp xác định trước đây, đặc biệt khi các nhà nghiên cứu đã thực hiện khảo sát định lượng về việc sử dụng tập lệnh trong các máy CISC.
Trong các ví dụ, chương trình dịch đã biết sử dụng các thanh ghi mà không gặp sự khác biệt đáng kể khi sử dụng ô nhớ cho các vi chương trình hoặc ô nhớ cho các chương trình, dẫn đến khái niệm về máy tính với tập lệnh RISC rút gọn được hình thành vào đầu những năm 1980 Các máy RISC chủ yếu dựa trên một bộ lệnh cho phép thực hiện kỹ thuật ống dẫn một cách tối ưu bằng cách thiết kế các lệnh có chiều dài cố định, kiểu dáng đơn giản và dễ giải mã Máy RISC sử dụng kiểu thực hiện lệnh thanh ghi - thanh ghi, trong đó chỉ các lệnh ghi hoặc đọc ô nhớ mới cho phép thâm nhập vào ô nhớ Ba mẫu máy RISC đầu tiên gồm IBM 801 của IBM, RISC1 của Berkeley, và MIPS của Stanford đều có bộ điều khiển bằng mạch điện (không có ô nhớ vi chương trình), các lệnh có chiều dài cố định 32 bits, kiểu thực hiện thanh ghi - thanh ghi, và chỉ có một số ít lệnh.
Tóm lại, ta có thể định nghĩa mạch xử lý RISC bởi các tính chất sau:
- Có một số ít lệnh (thông thường dưới 100 lệnh )
- Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vị gián tiếp thông qua một thanh ghi)
- Có một số ít dạng lệnh (một hoặc hai)
- Các lệnh đều có cùng chiều dài
- Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ
- Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các vi lệnh làm cho thời gian thực hiện lệnh kéo dài
- Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong
Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy
Bộ xử lý RISC có các lợi điểm sau :
Diện tích của bộ xử lý dành cho bộ điều khiển giảm đáng kể, từ 60% đối với các bộ xử lý CISC xuống còn chỉ 10% với các bộ xử lý RISC Nhờ đó, có thể tích hợp nhiều thành phần hơn vào trong bộ xử lý, chẳng hạn như các thanh ghi, cổng vào ra và bộ nhớ cache, nâng cao hiệu suất và khả năng mở rộng của hệ thống.
Máy tính có tốc độ xử lý cao nhờ vào kỹ thuật giải mã lệnh đơn giản, sử dụng nhiều thanh ghi giảm thiểu truy cập bộ nhớ, và áp dụng kỹ thuật ống dẫn liên tục hiệu quả Các lệnh có thời gian thực thi giống nhau và dạng thức nhất quán, giúp tối ưu hóa hiệu suất xử lý.
- Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chi phí thiết kế
- Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển
Kiến trúc RISC mang lại nhiều lợi ích không thể phủ nhận, nhưng cũng có một số nhược điểm đáng chú ý Một trong những hạn chế chính là các chương trình viết cho kiến trúc RISC thường dài hơn so với các chương trình dành cho bộ xử lý CISC Điều này xảy ra do nguyên nhân của các yếu tố như hướng tới tối ưu hóa hiệu suất, giảm số lệnh phức tạp và yêu cầu nhiều lệnh đơn giản hơn để thực hiện cùng một chức năng.
Trong hệ thống, việc cấm thâm nhập bộ nhớ đối với hầu hết các lệnh ngoại trừ các lệnh đọc và ghi vào bộ nhớ là một quy tắc quan trọng Điều này yêu cầu sử dụng nhiều lệnh hơn để thực hiện một công việc nhất định, đảm bảo an toàn và kiểm soát truy cập bộ nhớ một cách hiệu quả Chính sách này giúp tối ưu hóa hiệu suất và bảo mật cho hệ thống máy tính.
+ Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị
Tập lệnh có ít lệnh, do đó các lệnh không sẵn có phải được thay thế bằng chuỗi lệnh của bộ xử lý RISC, gây ra nhiều khó khăn cho các chương trình dịch Các chương trình dịch gặp phải vấn đề về kích thước lệnh lớn, làm cho việc lựa chọn lệnh phù hợp để diễn dịch các cấu trúc của chương trình gốc trở nên khó khăn Sự cứng nhắc của kỹ thuật ống dẫn cũng gây ra những thách thức trong quá trình dịch mã Tuy nhiên, có hỗ trợ lệnh giúp tối ưu hóa quá trình dịch ngữ cấp cao, làm giảm thiểu những giới hạn này.
Các bộ xử lý CISC có khả năng xử lý mạnh hơn các ngôn ngữ cao cấp nhờ vào tập lệnh phức tạp, giúp thực hiện các lệnh đa dạng hơn Hãng Honeywell đã phát triển một máy tính đặc biệt với một lệnh cho mỗi động từ trong ngôn ngữ COBOL, tăng cường hiệu suất và tối ưu hóa quá trình lập trình.
Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một bộ xử lý RISC nền và nhiều toán tử chuyên dùng
Thí dụ, bộ xử lý 860 của Intel bao gồm một bộ xử lý RISC, bộ làm tính với các số lẻ và một bộ tạo tín hiệu đồ hoạ
2.3.2.Các kiểu định vị trong các bộ xử lý RISC
Kiểu định vị thanh ghi thường áp dụng cho các bộ xử lý RISC, trong đó toán hạng nguồn và kết quả đều nằm trong thanh ghi, với số thứ tự thanh ghi được quy định trong lập trình Hình II.5 minh họa các ví dụ về kiểu định vị này và dạng các lệnh tương ứng trong một số kiến trúc RISC Kiểu định vị thanh ghi giúp tối ưu hóa tốc độ thực thi và giảm độ phức tạp của lệnh, phù hợp với các hệ thống xử lý hiệu năng cao.
*) Kiểu định vị tức thì
*) Kiểu định vị trực tiếp
Kiểu định vị gián tiếp bằng thanh ghi cộng độ dời là đặc trưng của các kiến trúc RISC Phương pháp này tính địa chỉ toán hạng bằng cách cộng giá trị của thanh ghi chứa địa chỉ với một độ dời nhất định, giúp tối ưu hóa quá trình truy cập bộ nhớ.
Trong các bộ xử lý RISC, kiểu định vị trực tiếp chỉ là một trường hợp đặc biệt khi thanh ghi (địa chỉ) bằng 0 Cụ thể, một thanh ghi như R0 hoặc R31 được mắc vào điện thế thấp (tức là 0), và khi sử dụng thanh ghi này làm địa chỉ, ta đang thực hiện định vị trực tiếp.
Toán hạng
Kiểu của toán hạng thườ ng được đưa vào trong mã tác vụ của lệnh Có bốn kiểu toán hạng được dùng trong các hệ thống:
- Kiểu dạng số: số nguyên, dấu chấm động,
- Kiểu dạng chuỗi ký tự: ASCII, EBIDEC,
- Kiểu dữ liệu logic: các bit, cờ,
Một số ít máy tính sử dụng nhãn để xác định kiểu toán hạng, trong đó loại của toán hạng thường xác định luôn chiều dài của nó Toán hạng phổ biến có chiều dài là 1 byte (8 bit), nửa từ máy tính (16 bit), từ máy tính (32 bit), và từ đôi máy tính (64 bit) Đặc biệt, kiến trúc PA của hãng HP (Hewlett Packard) có khả năng tính toán với các số thập phân BCD Ngoài ra, một số bộ xử lý còn có thể xử lý các chuỗi ký tự để nâng cao khả năng tính toán.