Tải bản đầy đủ (.doc) (12 trang)

Bài tập lớn ngành công nghệ thông tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (124.71 KB, 12 trang )

Bài tập lớn ngành Công nghệ thông tin
So sánh kiến trúc RICS và CISC
Bài làm
I. Định nghĩa về RISC và CISC
RISC là viết tắt của “reduced instruction set computer”, với gợi ý là máy
tính (hay là bộ vi xử lý bên trong nó) đã được giảm nhỏ tập lệnh. Nó
giống như là CPU Lite. Hay bạn có thể nói thô thiển là: đó là một dạng
thu nhỏ (cắt giảm) của một con vi xử lý, có thể bạn nói đúng một phần
nào đó. Triết lý cho phát triển RISC đó là cắt giảm bộ vi xử lý để chỉ còn
lại những bộ phận thiết yếu của nó. Những gì không thực sự cần thiết sẽ
bị vứt bỏ. Với các nhà lập trình thì đó có nghĩa là các chíp RISC thường
không thể thực hiện một phép nhân đơn giản. Lý thuyết của phép nhân là
thực hiện liên tiếp nhiều phép cộng, do đó lệnh ADD là đủ.
Một ý khác của RISC đó là các chức năng phức tạp thích hợp thực hiện
bằng phần mềm hơn là bằng phần cứng. Phần mềm thì dễ thay đổi, dễ
cập nhật, và tạo ra nhanh hơn. Viết mã mới nhanh hơn là thiết kế và xây
dựng một chíp mới. Do đó các máy tính dựa trên RISC có thể được nâng
cấp nhanh hơn. Các chương trình và các thuật toán có thể điều chỉnh và
cải tiến. Tốt nhất là phần cứng RISC phải được đơn giản hóa, tối ưu hóa
sao cho nó chạy nhanh hơn. Đúng là lúc đầu các chíp RISC nhỏ hơn, đơn
giản hơn, và nhanh hơn so với các chíp CISC vào thời điểm đó. Vứt bỏ
các trang bị thừa mứa mà các dòng vi xử lý như 68020 và 80286 đã tích
lũy, các dòng RISC cạnh tranh như SPARC và MIPS trở nên nhanh hơn
nhiều. Nếu xét về tốc độ rõ ràng là RISC là người chiến thắng. Các tạp
chí kỹ thuật và các xuất bản thương mại tới tấp quảng cáo sâu rộng RISC
như là một lĩnh vực mới cho máy tính. Tất cả các vi xử lý quen thuộc


trước kia dường như kiệt quệ. Dòng vi xử lý 68K tốc độ xung nhịp chỉ
khoảng 66 MHz, trong khi đó với các dòng kia thì tốc độ xung nhịp tính
bằng 3 con số. Ngay cả bây giờ cũng vậy, hầu hết các vi xử lý 68K tốc


độ chỉ dưới 100 MHz. Phải chăng dòng vi xử lý CISC sắp chết và không
thể

dùng

cho

các

ứng

dụng

hiện

đại

?

Dù thấp hơn về tốc độ xung nhịp, các chíp CISC như 68K và x86 vẫn
cho hiệu suất ngang bằng, và có thể cao hơn so với các đối thủ RISC.
Chúng đáng xem xét hơn và thường là sự lựa chọn tốt nhất cho nhiều hệ
thống nhúng. Dù được gán nhãn chói lọi RISC thường là sự lựa chọn tệ
hại cho các ứng dụng real-world.
Những gì bạn nhận được từ kiến trúc RISC đó là một CPU khá đơn giản,
với tập lệnh dễ hiểu và trực quan. Tất cả các lệnh có cùng chiều dài, điều
này làm cho chúng dễ dàng xắp xếp gọn gàng trong RAM. Chúng cũng
có cách mã hóa tương tự nhau, do đó nếu bạn có ý định dịch ngược
opcode của RISC thì cũng dễ thực hiện. Cũng dễ dàng đếm số lệnh trong
bộ nhớ. Và cuối cùng rất dễ tính toán số chu kỳ máy thực hiện cho một

đoạn chương trình, bởi vì các lệnh của RISC hầu hết đều thực hiện trong
một chu kỳ máy. Chỉ cần đếm số lệnh (hoặc số byte, đem chia cho 4) và
bạn có kết quả, dĩ nhiên là tạm loại trừ ảnh hưởng của cache và các trạng
thái chờ. RISC là những gì thực hiện bằng hoặc không bằng tập lệnh,
hoặc các tính năng khác mà bạn muốn. Trước tiên là về toán học. Hầu
hết các chíp RISC trước kia không có lệnh nhân và cũng không có lệnh
chia. Ngày nay hầu hết vẫn không có lệnh chia. Nếu bạn là người lập
trình bằng hợp ngữ thì xin chúc mừng, bạn phải tự viết các hàm thực
hiện phép nhân và phép chia số nguyên. Đừng nghĩ đến phép toán dấu
chấm động, hầu hết các chíp RISC không hỗ trợ điều này. Công bằng thì
hầu hết các chíp CISC cũng chẳng có các bộ FPU, nhưng FPU phổ biến
trong các bộ vi xử lý CISC loại cũ nhiều hơn là trong các chíp RISC


mới.
Bạn cũng chẳng có các phép toán trực tiếp trên bít. Ví dụ, để kiểm tra và
đảo một bít trong một thanh ghi trạng thái, bạn phải đọc toàn bộ nội dung
của thanh ghi vào bên trong vi xử lý. Rồi che các bít mà bạn không sử
dụng, dịch phải kết quả, kiểm tra trạng thái của bít, đảo bít dùng phép
exclusive-OR, dịch trái nó trở lại vị trí cũ, rồi ghi nó trở ra thanh ghi.
Truy cập bộ nhớ không xắp xếp cũng là phần bị bỏ đi trong RISC. Các
chíp RISC đã được thiết kế cho các trạm làm việc, nơi mà dữ liệu luôn
được xắp xếp theo từ (word) bởi vì trình biên dịch đặt chúng nằm như
thế. Lượng dữ liệu nhỏ hơn (như byte) hoặc là không tồn tại hoặc là
được chèn thêm zero để vừa với một từ 32 bít. Trong các hệ thống nhúng
hiếm khi có sự ngăn nắp như vậy. Một số 32 bít được lưu ở một địa chỉ
lẻ sẽ không thể truy cập được bởi nhiều chíp RISC. Chúng không thể xử
lý được các toán hạng không xắp xếp (?). Tương tự như vậy, lượng dữ
liệu lẻ, như giá trị 24 bít phải được mở rộng zero- hoặc sign- khi lưu trữ
chúng, và như thế là lãng phí RAM. Có một tin tốt đó là trình biên dịch

đã xử lý điều này. Nếu bạn là người lập trình bằng hợp ngữ, RISC sẽ là
sự đau khổ. Nếu bạn lập trình bằng C hoặc là một ngôn ngữ cấp cao nào
đó thì bạn không cần để ý đến các giới hạn này. Trừ khi bạn quan tâm
đến mật độ mã.
Hiệu suất là một vấn đề lớn mà ai cũng nhắm tới. Hiệu suất tốt hơn là
một trong những lợi ích chính của RISC, do đó mà các chíp RISC luôn
nhanh

hơn,

đúng

không

?

Không

!

Cuộc đua giữa các vi điều khiển không đơn giản, bởi vì mọi người quan
tâm đến các loại hiệu suất khác nhau. Ví dụ, chíp nào tốt cho xử lý media
có thể không tốt cho xử lý mạng. Thế đủ để nói rằng không có một vi xử
lý nào xuất sắc về mọi mặt. Mỗi tập lệnh CPU là một sự thỏa hiệp.
Bạn phải chọn một CPU với kiến trúc tập lệnh (instruction set


architecture – ISA) phù hợp với ứng dụng thực tế của bạn. Hai chíp chạy
cùng tốc độ (ví dụ 100 MHz) có thể cho hiệu suất hoàn toàn khác nhau
bởi vì sự khác nhau trong ISA. Đó là lý do tại sao các nhà sản xuất vẫn

tiếp tục điều chỉnh tập lệnh, và đó cũng là lý do tại sao các dòng CPU
mới có tập lệnh do chính người sử dụng định nghĩa đang được mọi người
ưa chuộng. Đa số các tập lệnh của RISC đều như nhau, tưởng chừng như
chúng chỉ hỗ trợ những vấn đề thiết yếu ? Thực tế thì mỗi kiến trúc RISC
đều đang dần thay đổi mà không bám chặt vào đường lối RISC trước kia.
Tuy nhiên đánh giá gần đúng thì các chíp RISC đều có điểm chung và có
thể thay thế cho nhau. Với CISC thì khác, chúng có tập lệnh đầy đủ, có
thể hoặc rất hữu dụng hoặc hoàn toàn không phù hợp cho hệ thống của
bạn. Đôi khi bạn tự hỏi ở đâu chui ra các tập lệnh kỳ quặc như thế, các
nhà lập trình sử dụng các tập lệnh đó vào việc gì. Khi khác bạn lại tự hỏi
bạn phải xoay xở làm sao nếu không có các tập lệnh như thế. Một trong
các lệnh mà tôi thích là lệnh TBLS ở dòng chíp 68300 của Motorola.
TBLS là một lệnh tra bảng và nội suy (table look up and interpolate
instruction). Hầu hết các nhà lập trình sẽ chẳng bao giờ dùng nhưng nó
sẽ cứu đời bạn khi bạn cần đến nó. Tập TBLS cho phép bạn tạo ra một
hàm hình học phức tạp từ một bảng các điểm dữ liệu rời rạc. TBLS tìm
kiếm trong bảng giá trị mà bạn đã tạo ra, xác định hai số gần nhất với số
mà bạn chỉ định. Sau đó thông qua phép nội suy tuyến tính nó chỉ ra
chính xác giá trị nằm giữa hai số kia. Thực chất TBLS nối hai điểm trong
đồ thị các điểm x, y rời rạc, trả về giá trị y từ giá trị x như ở hình 2. Khá
lạ, bạn nghĩ thế ? Nhưng nó rất cần thiết nếu bạn đang làm điều khiển
chuyển động. Nó giúp thay thế hàng trăm dòng lệnh nếu dùng các hàm
xử lý hình học thông thường với tất cả các trường hợp biệt lệ và các điều
kiện biên khác nhau. Nhớ là TBLS là một lệnh đơn thực hiện chỉ mất
khoảng 30 chu kỳ xung nhịp.


1.RISC: Là chữ viết tắt của Reduced Instruction Set Computer.
Nó còn được gọi là máy tính với tập lệnh rút gọn.
Kiến trúc này có những đặc điểm cơ bản sau:

-

Một lệnh có một chu kỳ.

-

Nhấn mạnh trên phần mềm.

-

Định dạng lệnh đơn giản (độ dài lệnh cố định).

-

Chế độ địa chỉ đơn giản.

-

Chú trọng các thao tác với các thanh ghi.

-

Song song hóa thuận tiện.
Ta gặp kiến trúc này trong các vi xử lý hiện nay như: ARM,
SuperH,MIPS,SPARC,DEC Alpha, PIC và PowerPC của IBM.(theo bài
giảng của thầy).
2.CISC: Là chữ viết tắt của Complex Instruction Set Computers. Nó
còn được gọi là
Máy tính với tập lệnh phức tạp.
Kiến trúc này có những đặc điểm cơ bản sau:


-

Tập lệnh lớn với nhiều lệnh phức tạp.

-

Đơn giản hóa trình dịch.

-

Chương trình dịch nhỏ và nhanh hơn.

-

Song song hóa phức tạp.
Một vài ví dụ về vi xử lý có kiến trúc CISC : System/360, PDP-11,
VAX, 68000, và x86..(theo tài liệu của thầy).
II. SO SÁNH KIẾN TRÚC CISC VÀ RISC.

1. Lịch sử ra đời của hai loại kiến trúc CISC và RISC.


Các kiến trúc với tập lệnh phức tạp CISC (Complex Instruction Set
Computer) được nghĩ ra từ những năm 1960. Vào thời kỳ này, người ta
nhận thấy các chương trình dịch khó dùng các thanh ghi, rằng các vi lệnh
được thực hiện nhanh hơn các lệnh và cần thiết phải làm giảm độ dài các
chương trình. Các đặc tính nầy khiến người ta ưu tiên chọn các kiểu ô
nhớ - ô nhớ và ô nhớ - thanh ghi, với những lệnh phức tạp và dùng nhiều
kiểu định vị. Điều này dẫn tới việc các lệnh có chiều dài thay đổi và như

thế thì dùng bộ điều khiển vi chương trình là hiệu quả nhất.
Ví dụ, chương trình dịch đã biết sử dụng các thanh ghi và không có sự
khác biệt đáng kể nào khi sử dụng ô nhớ cho các vi chương trình hay ô
nhớ cho các chương trình. Điều này dẫn tới việc đưa vào khái niệm về
một máy tính với tập lệnh rút gọn RISC vào đầu những năm 1980.
Vậy sự ra đời của kiến trúc máy RISC là muộn hơn so với kiến trúc
CISC. Vì vậy nó có nhiều điểm khác biệt so với kiến trúc CISC.
2.

Sự khác nhau trong nguyên tắc làm việc.
Ta sẽ xét các bảng số liệu của một vài máy CISC và máy RISC.

Bộ xử lý

iAPX

IBM 370/168

DEC 11/780

1973

1978

1982

Số lệnh

208


303

222

Bộ

420 KB

480 KB

64 KB

Năm sản
xuất

vi

nhớ

432


chương
trình
Chiều dài
lệnh (tính

16 - 48

16 - 456


ECL - MSI

TTl - MSI

Thanh

Thanh ghi -

6 - 321

bằng bit)
Kỹ thuật
chế tạo

ghi-

Cách

thanh

thanh

thực hiện

ghiThanh ghi

ghiThanh ghi

lệnh


- bộ nhớBộ

- bộ nhớBộ

nhớ - bộ nhớ

nhớ - bộ nhớ

64 KB

64 KB

NMOS
VLSI
Ngăn
xếpBộ
nhớ- bộ
nhớ

Dung
lượng

0

cache
Bảng I: Đặc tính của một vài máy CISC.
(theo />

Bộ xử lý


IBM 801

RISC1

MIPS

Năm sản xuất

1980

1982

1983

Số lệnh

120

39

55

0

0

0

32


32

32

NMOS

NMOS

VLSI

VLSI

Dung lượng bộ
nhớ vi chương
trình
Độ

dài

lệnh

(tính bằng bit)
Kỹ thuật chế
tạo
Cách thực hiện
lệnh

ECL MSI
Thanh

ghi-thanh
ghi

Thanh ghithanh ghi

Thanh
ghi-thanh
ghi

Bảng II:Đặc tính của ba mẫu đầu tiên máy RISC

(theo

/>
Các máy RISC dựa chủ yếu trên một tập lệnh cho phép thực hiện kỹ
thuật ống dẫn một cách thích hợp nhất bằng cách thiết kế các lệnh có
chiều dài cố định, có dạng đơn giản, dễ giải mã. Máy RISC dùng kiểu
thực hiện lệnh thanh ghi - thanh ghi. Chỉ có các lệnh ghi hoặc đọc ô nhớ
mới cho phép thâm nhập vào ô nhớ. Còn ở kiến trúc CISC thì độ dài lệnh
là khác nhau :ví dụ IBM 370/168 có chiều dài lệnh là 16-48(bit),ở DEC
11/780 có chiều dài lệnh 16 – 456(bit),và ở iAPX 432 chiều dài lệnh là 6
– 321(bit)… kiến trúc CISC có rất nhiều lệnh, định dạng lệnh phức tạp.
Chúng ta xét ví dụ: cộng 1 vào vùng địa chỉ trong kiến trúc CISC thì các
lệnh thực hiện là: đọc vùng nhớ, cộng them 1 và ghi lại vùng nhớ. Còn ở
kiến trúc RISC thì chỉ thực hiện một lệnh. Điều khác biệt là CISC không
cần tới nhiều thanh ghi với lệnh trên CISC có thể đọc trực tiếp giá trị


của vùng nhớ vào ALU , thực hiện tăng lên 1 và lưu lại kết quả vào vùng
nhớ. Đối với RISC thì nếu giá trị được đọc có sẵn ở thanh ghi thì không

cần lấy từ bộ nhớ, giá trị sau khi tăng lên 1 có thể lưu trực tiếp ở thanh
ghi mà không cần lưu vào bộ nhớ.
Tóm lại sự khác biệt căn bản trong kiến trúc RISC và CISC là nguyên
tắc thực hiện lệnh ở các thanh ghi: đọc và lưu dữ liệu vào các thanh ghi.
Mặt khác tập lệnh ở kiến trúc CISC dài và phức tạp hơn tập lênh trong
kiến trúc RISC, thời gian thực hiện một lệnh dài hơn và không cố đinh
như ở kiến trúc RISC.
3.

Mật độ mã.
Các chíp CISC có mật độ mã tốt hơn so với các chíp RISC. Vì
nguyên lý chủ đạo của RISC đó là phần cứng phải đơn giản, tất cả các
hoạt động phức tạp được thực hiện bằng phần mềm. Điều đó có nghĩa là
chíp RISC của bạn sẽ cần nhiều phần mềm hơn để thực hiện cùng một
công việc. Hầu hết các chíp RISC không có lệnh chia. Nếu muốn chia 2
số bạn phải hiện bằng phần mềm.

4. Nén mã
Lý do mà các chíp CISC có mật độ mã tốt hơn đó là bởi vì chúng
tập lệnh có xu hướng được làm ngắn hơn. Theo định nghĩa các chíp
RISC 32-bit phải có tập lệnh 32-bit. Còn một chíp CISC 32-bit thì lại
khác, có thể có lệnh 8-bit, 16-bit, 32-bit và có cả các lệnh dài hơn nữa.
Đây là một trong những đặc điểm làm cho chíp CISC phức tạp, nhưng
điều đó cũng làm cho nó thực tế hơn trong các hệ thống nhúng.
5.Tiêu thụ năng lượng
Một trong những thuận lợi của các chíp RISC là chúng có sự tiêu thụ
năng lượng thấp. Như một luật lệ các chíp RISC dùng ít năng lượng hơn


nhiều so với CISC. Điều này là rõ ràng: thiết kế của vi xử lý RISC là đơn

giản hơn và hợp lý hơn thì phải dùng năng lượng ít hơn.
6.Các ưu điểm và nhược điểm của kiến trúc RISC
A.Các ưu điểm:
- Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các
bộ xử lý CISC) xuống còn 10% (cho các bộ xử lý RISC). Như vậy có thể
tích hợp thêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và
bộ nhớ cache .....
- Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều
thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên
tục và có hiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có
cùng dạng).
- 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.
B.Những nhược điểm:
Các chương trình dài ra so với chương trình viết cho bộ xử lý



CISC. Điều này do các nguyên nhân sau :
Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc



và ghi vào bộ nhớ. Do đó ta buộc phải dùng nhiều lệnh để làm một công
việc nhấ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 nên các lệnh không có sẵn phải được thay thế
bằng một chuỗi lệnh của bộ xử lý RISC.




Các chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít
lựa chọn để diễn dịch các cấu trúc của chương trình gốc. Sự cứng nhắc
của kỹ thuật ống dẫn cũng gây khó khăn.



Có ít lệnh trợ giúp cho ngôn ngữ cấp cao.
7.Những ưu nhược điểm của CISC:
A .Lợi thế của kiến trúc CISC:- Chương trình ngắn hơn so với kiến trúc
RISC
- số lệnh để thực hiện trương chình ít hơn.Khả năng thâm nhập bộ nhớ dễ
dàng hơn.
- Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập
lệnh phức tạp. Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi
động từ của ngôn ngữ COBOL.
B.Những hạn chế của kiến trúc CISC
- Diện tích của bộ xử lý dùng cho bộ điều khiển lớn. Giảm khả năng tích
hợp thêm vào vi xử lý.Tốc độ tính toán còn chậm. Thời gian xây dựng
xong bộ vi xử lý là lâu hơn do các câu lệnh phức tạp.Và thời gian thực
hiện lệnh lâu khả năng xảy ra rủi ro nhiều.

8. Các kiến trúc của vi xử lý ngày nay.
Các vi xử lý ngày nay hầu hết có sự kết hợp giữa hai loại kiến trúc này
để được một vi xử lý có nhiều ưu điểm hơn và hạn chế từng những
khuyết điểm của từng loại.




×