o Ngôn ngữ máy: Tập các chỉ thị Æ Khó dùng, nhàm chán o Ngôn ngữ cấp cao: Biểu diễn một tập các chỉ thị mức dưới Æ Xây dựng cấu trúc máy ảo + Ngôn ngữ bậc cao ở các cấp máy khác nhau o
Trang 1TRƯỜNG ………
KHOA………
-[\ [\ -
Chính sách ngôn ngữ ở Việt Nam qua các thời kì lịch sử
Trang 2Chương 1: TỔNG QUAN HỆ THỐNG MÁY TÍNH
• Thế hệ 3: Máy tính dùng mạch tích hợp IC (Intergrated Circuit) 1966 – 1980
• Thế hệ 4: Máy tính dùng mạch tích hợp cực lớn VLSI (Very Large Scale Intergrated )1980 đến nay
a Máy tính thế hệ 1
Máy tính ENIAC (Electronic Numerical Integrator and Computer):
Đề xuất năm 1943 và hoàn thành 1946 được sử dụng đến1955 do thầy trò Eckert và Mauchly Trường đại học Pennsylvania của Mỹ
• Sử dụng 18000 bóng đèn điện tử (vacuum tubes)
IAS(Institute for Advanced Studies):
Xây dựng dựa trên ý tưởng của Turring (Mỹ) và Von Neumann (Anh)
Thiết kế 1947 hoàn thành 1952
Trang 3Là mô hình cơ bản của hệ thống máy tính ngày nay
• 1947 - Eckert-Mauchly Computer Corporation
• UNIVAC I (Universal Automatic Computer)
• US Bureau of Census 1950 calculations
• Became part of Sperry-Rand Corporation
• Late 1950s - UNIVAC II
– Faster
– More memory
Trang 4– Kích thước máy tính giảm, rẻ tiền hơn, tiêu tốn năng lượng ít hơn
– Vào thời điểm này, mạch in và bộ nhớ bằng xuyến từ được dùng
– Ngôn ngữ cấp cao xuất hiện (như FORTRAN năm 1956, COBOL năm 1959,
ALGOL năm 1960) và hệ điều hành kiểu tuần tự (Batch Processing) được dùng
c Thế hệ thứ ba (1965-1971)
– Xuất hiện các mạch tích hợp - IC: Integrated Circuit
– Các mạch kết độ tích hợp mật độ thấp (SSI: Small Scale Integration) có thể
chứa vài chục linh kiện
– Mạch tích hợp mật độ trung bình (MSI: Medium Scale Integration) chứa
hàng trăm linh kiện trên mạch tích hợp
– Mạch in nhiều lớp xuất hiện
– Bộ nhớ bán dẫn bắt đầu thay thế bộ nhớ bằng xuyến từ
– Máy tính đa chương trình và hệ điều hành chia thời gian được dùng
d Thế hệ thứ tư 1972
– IC có mật độ tích hợp cao (LSI: Large Scale Integration): Chứa hàng ngàn
linh kiện
– IC mật độ tích hợp rất cao (VLSI: Very Large Scale Integration) có thể chứa
hơn 10 ngàn linh kiện trên mạch (Hiện nay, các chip VLSI chứa hàng triệu linh kiện)
– Xuất hiện bộ vi xử lý (microprocessor) chứa cả phần thực hiện và phần điều
khiển của một bộ xử lý
– Bắt đầu xuất hiện các thế hệ máy tính cá nhân
– Bộ nhớ bán dẫn, bộ nhớ cache, bộ nhớ ảo được dùng rộng rãi
– Kỹ thuật ống dẫn, kỹ thuật vô hướng, xử lý song song…
Trang 5Chíp VXL intel 4004 –
chip VXL đầu tiên của intel
IBM/PC đầu tiên khởi dầu cho dòng máy PC phổ biến ngày nay
Tóm tắt:
• Vacuum tube - 1946-1957
• Transistor - 1958-1964
• Small scale integration - 1965 : Up to 100 devices on a chip
• Medium scale integration – 1971 – 100: 3,000 devices on a chip
• Large scale integration - 1971-1977 : 3,000 - 100,000 devices on a chip
• Very large scale integration - 1978 -1991: 100,000 - 100,000,000 devices on
a chip
• Ultra large scale integration – 1991 : Over 100,000,000 devices on a chip
Hình 1.3: Sự phát triển về mật độ tích hợp của các chip VXL
Trang 6Hình 1.4 : Lịch sử tiến hóa của các thế hệ vi xử lý Intel: từ năm 1971 tới năm 2003
Phân loại máy tính:
Thông thường máy tính được phân loại theo tính năng kỹ thuật và giá tiền
– Các siêu máy tính (Super Computer): là các máy tính đắt tiền nhất và tính
năng kỹ thuật cao nhất Giá bán một siêu máy tính từ vài triệu USD Các siêu máy tính thường là các máy tính vectơ hay các máy tính dùng kỹ thuật vô hướng và được thiết kế để tính toán khoa học, mô phỏng các hiện tượng Các siêu máy tính được thiết kế với kỹ thuật xử lý song song với rất nhiều bộ xử
lý (hàng ngàn đến hàng trăm ngàn bộ xử lý trong một siêu máy tính)
– Các máy tính lớn (Mainframe) là loại máy tính đa dụng Nó có thể dùng
cho các ứng dụng quản lý cũng như các tính toán khoa học Dùng kỹ thuật
xử lý song song và có hệ thống vào ra mạnh Giá một máy tính lớn có thể từ vài trăm ngàn USD đến hàng triệu USD
– Máy tính mini (Minicomputer) là loại máy cở trung, giá một máy tính mini
có thể từ vài chục USD đến vài trăm ngàn USD
– Máy vi tính (Microcomputer) là loại máy tính dùng bộ vi xử lý, giá một
máy vi tính có thể từ vài trăm USD đến vài ngàn USD
Trang 71.1.2 Xu hướng phát triển của các hệ thống máy tính
– Máy tính thông minh, dựa trên các
ngôn ngữ trí tuệ nhân tạo như LISP và
PROLOG,
– Giao diện người - máy thông minh:
ASIMO (Advanced Step Innovative
Mobility: Bước chân tiên tiến của đổi
mới và chuyển động)
– Máy tính song song với từ vài bộ xử lý
đến vài ngàn bộ xử lý
– Hệ thống nhúng
1.2 Các thuật ngữ và khái niệm cơ bản
1.2.1 Các khái niệm cơ bản
– Máy tính(computer) là thiết bị điện tử thực hiện công việc:
• Nhận thông tin vào
• Xử lý thông tin theo chương trình nhớ sẵn bên trong bộ nhớ máy tính
• Đưa thông tin ra
– Chương trình (Program): chương trình 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 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): Bao 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 (Computer Architecture) đề cập đến các thuộc tính của
hệ thống máy tính dưới cái nhìn của người lập trình Hay nói cách khác, là những thuộc tính ảnh hưởng trực tiếp đến quá trình thực hiện logic của chương trình Bao gồm: tập lệnh, biểu diễn dữ liệu, các cơ chế vào ra, kỹ thuật đánh địa chỉ,…
Trang 8– 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.Ở mức cao nhất máy tính bao gồm 4 thành phần:
– Bộ xử lý : điều khiển và xử lý số liệu
– Bộ nhớ : chứa chương trình và dữ liệu
– Hệ thống vào ra : trao đổi thông tin giữa máy tính với bên ngoài
– Liên kết giữa các hệ thống (BUS): liên kết các thành phần của máy tính lại
với nhau
Hình 1.5: Mô hình phân lớp hệ thống máy tính
1.2.2 Ngôn ngữ máy, cấp máy và máy ảo
o Ngôn ngữ máy: Tập các chỉ thị Æ Khó dùng, nhàm chán
o Ngôn ngữ cấp cao: Biểu diễn một tập các chỉ thị mức dưới Æ Xây dựng
cấu trúc máy ảo + Ngôn ngữ bậc cao ở các cấp máy khác nhau
o Biên dịch (compilation): dịch toàn bộ chương trình sang dạng thấp hơn
rồi chạy chương trình
o Thông dịch (interpretation): Dịch từng lệnh sang mã máy
Các mức ngôn ngữ máy:
• Mức 0: Mức logic số, hoạt động sử dụng các cổng logic AND, OR, XOR,
NOT…
• Mức 1: Mức vi chương trình; Thực hiện thông dịch các lệnh mức 2; Các
lệnh di chuyển dữ liệu, kiểm tra…
• Mức 2: Mức máy tính thông thường; chạt trên mức vi chương trình
Trang 9• Mức 3: Mức máy hệ điều hành; chứa thêm tập các chỉ thị điều khiển các
chương trình hoạt động một cách đồng thời
• Mức ngôn ngữ Assembly: Dùng cho người lập trình, ngôn ngữ gần với
ngôn ngữ máy nhất mà người lập trình tiếp cận (Thực hiện biên dịch)
• Mức ngôn ngữ bậc cao: Dùng lập trình ứng dụng
Mô hình cơ bản hệ thống máy tính:
Kiến trúc hệ thống máy tính:
Structure - Top Level
Structure - The CPU
Trang 10H Để có t
ụ, tại thời đthái cao
Trang 11Trong đó: I là lượng thông tin tính bằng bit
N Số trạng thái có thể có Như vậy lượng thông tin là số con số nhị phân cần thiết để biểu diễn số trạng thái có thể có Do vậy, một con số nhị phân được gọi là một bit Một từ n bit
có thể tượng trưng một trạng thái trong tổng số 2n trạng thái mà từ đó có thể tượng trưng Vậy một từ n bit tương ứng với một lượng thông tin n bit
1.3.2 Biểu diễn thông tin trong máy tính
Nguyên tắc chung: Mọi dữ liệu đưa vào máy tính đều được mã hóa thành số
nhị phân
Các loại dữ liệu:
– Dữ liệu nhân tạo: do con người quy ước
– Dữ liệu tự nhiên: Tồn tại khách quan với con người
Mã hoá dữ liệu nhân tạo
– Dữ liệu số nguyên: mã hoá theo một số chuẩn đa qui ước
– Dữ liệu số thực: mã hoá bằng số dấu chấm động
– Dữ liệu phi số (ký tự): mã hoá theo các bộ mã ký tự hiện hành như : ASCII, Unicode,…
Hình 1.7: Mô hình mã hóa và tái tạo tín hiệu vật lý:
Các tín hiệu thông dụng:
Âm thanh
Hình ảnh
Thứ tự lưu trữ các byte trong máy tính:
– Bộ nhớ chính tổ chức lưu trữ dữ liệu theo đơn vị byte
Trang 12– Độ dài từ dữ liệu có thể chiếm từ 1 đến 4 byte Vì vậy cần phải biết thứ tự
chúng lưu trữ trong bộ nhớ chính đối với các dữ liệu nhiều byte
– Có hai cách lưu trữ được đưa ra
o Little Endian (đầu nhỏ): Byte có ý nghĩa thấp hơn được lưu trữ trong
Lưu trữ của các bộ VXL điển hình:
– Loại máy Intel: 80x86, Petium -> little endian
– Motorola 680x0 và các bộ xử lý RISC -> big endian
– Power PC & Itanium: tích hợp cả hai cách trên
a Biểu diễn số nguyên
Máy tính biểu diễn số nguyên chia thành hai loại:
- Số nguyên không dấu
- Số nguyên có dấu
Số nguyên không dấu:
Giả sử dùng n bit để biểu diễn số nguyên không dấu
Æ dải giá trị biểu diễn: (0 – 2N-1)
Trang 13– Số bù một của một số N được xác định bằng cách đảo các bit trong N
– Số bù hai của một số N được xác định bằng cách lấy số bù một của N cộng thêm 1: Số bù 2 của N =(số bù 1 của N)+1
Giả sử dùng n bit để biểu diễn số nguyên có dấu Æ dải mà n bit biểu diễn được
từ (- 2n-1 …-1,0 2n-1-1) Giá trị của số nguyên đó được tính theo 2 phần riêng biệt:
Trang 14Biểu diễn số trên trong máy tính: Sử dụng cách biểu diễn số có dấu phẩy tĩnh rất bất tiện Æ sử dụng số có dấu phẩy động
• Floating Point Number Æ Biểu diễn cho số thực
Các phép toán với số dấu phẩy động:
• Tăng số mũ của số có số mũ nhỏ hơn bằng với số mũ của số có số mũ lớn
Trang 15Yêu cầu: Phân biệt số thập phân và mã BCD của số đó
Mã ASCII (American Standard Code for Information Interchange): Biểu
diễn các ký tự hiển thị được và ký tự điều khiển:
Trang 16Bảng mã ASCII tiêu chuẩn
Trang 17Bảng mã ASCII mở rộng:
Bài tập:
1 Chuyển đổi giữa các hệ thống đếm
2 Chuyển đổi giữa các ký tự trong bảng mã ASCII
1.4 Sơ lược các bộ phận của hệ thống máy tính (Pending)
Trang 18— Hỗ trợ các hệ điều hành đa nhiệm
Các bộ vi xử lý tiên tiến Intel
80486
o Ra đời năm 1989
o Có chừng1,2 triệu bóng bán dẫn/chip gấp 4 lần 386
o Có 168 chân, đóng vỏ PGA (Pin grid array)
o Là bộ vi xử lý 32 bit như 386, tức có cấu trúc bên trong, các thanh ghi cũng như bus số liệu ngoài đều là 32 bit
o Bus dữ liệu chân D0-D31
o Bus địa chỉ chân A0-A31
Một số đặc điểm nâng cao:
1 Thực hiện cách tổ chức đường ống dẫn (pepeline) nhờ vậy mà tốc độ thực hiện của 486 nhanh hơn nhiều lần so với 386 Nhiều lệnh nếu thực hiện ở 386 mất 3 chu kỳ đồng hồ còn ở 486 chỉ mất có 1 chu kỳ
Trang 192 Sử dụng Cache Internal: 8 kb bên trong CPU loại trừ được độ trễ khi
sử dụng cache external 8 kb cache Internal được dùng để lưu số liệu và lệnh nên tốc độ xử lý được nâng đáng kể
3 Có đồng xử lý toán học ngay bên trong CPU
4 Có thiết kế 4 chân DP0-DP3 (Data Parity) để kiểm tra tính chẵn lẻ của
hệ thống Mỗi chân cho mỗi byte từ D0-D31
5 Tần số làm việc của CPU bằng đồng hồ của hệ thống
Pentium (1993)
Một số thông số chung:
– Mật độ 3,1tr T/chip
– 273 chân – PGA (Pin Grid Array)
Đặc điểm nâng cao:
– Bus dữ liệu ngoài 64 bit: D0-D63
– Có 2 đơn vị thực hiện bên trong CPU
– Có 8 chân DP để làm việc với 8 byte số liệu D0-D63
– Có 16 Kb cache trên chip: 8 kb cho mã lệnh, 8 kb cho số liệu còn ở 486 chỉ có cache 8 kb dành cho cả hai
– Hai cache mã lệnh và số liệu của CPU Pentium được truy nhập đồng thời
– Bộ đồng xử lý toán học của Pentium nhanh gấp nhiều lần (10 lần trở lên) so với đồng xử lý toán học của 486 Bộ đồng xử lý toán học được
coi là đơn vị dấu phẩy động (FPU), còn đơn vị tương ứng để thực hiện với số nguyên được gọi là đơn vị số nguyên (IU) Phần FPU của
Pentium sử dụng pepeline 8 tầng còn đơn vị BIU sử dụng 5 tầng
– Pentium mới có đó là cấu trúc Superscalar (Cấu trúc siêu hướng), có
2 đơn vị thực hiện song song bên trong CPU Mỗi đơn vị thực hiện lại được tổ chức theo kiến trúc đường ống dẫn gồm nhiều tầng nên tăng được tốc độ xử lý lên nhiều lần Như vậy khi Pentium thực hiện lệnh, tại mỗi thời điểm có 2 lệnh cùng chuyển đến 2 đơn vị thực hiện khác nhau
– BVXL Pentium có thể dự đoán rẽ nhánh (Branch prediction) tức là bộ
vi xử lý có thể suy đoán và nhận trước mã lệnh khi có lệnh JMP hoặc
Trang 20Hình 2.1:
7)
mMMX đượimedia Ext
X có 3 nét đuật mới nh
e - hay còn
ề là kỹ thunhiều dạng
c lệnh khi
và đồ hoạ
o với Pentiu
MX được bổliệu video,
Pentium cóngay sau lệchất suy đo
Cấu trúc b
ợc xuất xưtension tức
đặc trưng c
ất có tên g
n gọi là kỹ uật SIMD
g dữ liệu đthực hiện
Kỹ thuật um)
ổ sung 57 l, audio, đồ
ó thể suy đệnh JMP) voán rẽ nhán
bộ vi xử lý
ởng đầu tiê
c là bộ vi x
chính sau đgọi là SIMDthuật lệnhcho phép vđồng thời
n vòng lặp SIMD nân
lệnh mới v hoạ và ho
Kỹ thuật chung ch
n tổng thời
Từ MMX
đa phương
n, Multipleliệu) Mấunhưng thực
o phép bớtliệu video,
u lên đáng
ho thao tácultimedia)
g
c
Trang 21MMX có truy nhập hiều
ntium MMX
um II = Pe
hệ thi hànhnhánh (Mu
g dữ liệu (Dtheo kiểu đđộc lập ké
ng các kỹ th
nh liệu suy đoán
hệ Intel Pen
32 Kb và dRAM - là v
nh ghi 64 b
o + Pentium
ynamic Exench PredictAnalisis)peculative Eual Indepen
ntium MM
do đó bớt vùng nhớ đbit và có 4
m MMX +
ecution) tion)
Execution)ndent Bus A
DIP
) Architectur
Trang 22– Tần số làm việc của Celeron đầu tiên là 333 Mhz, 300A Mhz, 300 Mhz và
266 Mhz Hiện nay đã đạt đến tốc độ 800 Mhz
– BVXL Celeron thế hệ sau có 15,5 triệu transistor và được xây dựng dựa trên công nghệ CMOS 0,25 micron Nhờ áp dụng công nghệ này, BVXL có tần
số làm việc cao và công suất tiêu thụ của CPU nhỏ
– Bus hệ thống của BVXL Intel Celeron là 66 Mhz
– Cache L1 có 32 Kb và được phân thành 16Kb cache cho số liệu và 16K cho lệnh) cho phép truy nhập nhanh số liệu
– Celeron 266 và 300 Mhz không có cache L2 Các bộ vi xử lý Celeron sau này như Celeron 333 Mhz và 300A Mhz có bổ sung thêm cache L2 là 128
Pentium III (1999)
Pentium III = Pentium II + SSIMDE + số hiệu bộ VXL
– SSIMDE (Streaming Single Instruction Multiple Data Extensions): Mở rộng lệnh đơn cho đa dữ liệu phân luồng
Phần cứng: Bổ xung thêm 8 thanh ghi 128 bit
Phần mềm: Bổ xung thêm 70 lệnh (cho Multimedia và Internet)
Phân luồng bộ nhớ (memory streaming)
Cache L2 512Kb, có sử dụng giao thức kiểm tra và sửa lỗi ECC
(Error Checking and Correction) – Số hiệu bộ VXL (Intel Processor Serial Number)
Một số đặc trưng chính của bộ vi xử lý Pentium III như sau:
– Giữ nguyên các công nghệ tiên tiến của bộ vi xử Intel Pentium II bao gồm:
o Thi hành động các lệnh (Dynamic Execution) của Pentium Pro
o Công nghệ MMX của Intel Pentium MMX
Trang 23o Kiến trúc Bus độc lập kép DIB (Dual Independent Bus Architecture - DIP)
– Bổ sung hai tính chất rất mạnh cho Internet Tính chất thứ nhất là: sử dụng công nghệ mở rộng lệnh đơn cho đa số liệu phân luồng (Streaming Single Instruction Multiple Data extensions - gọi gọn hơn là (Streaming SIMD extensions hay SSE)
– Bổ sung thêm 70 lệnh SIMD mới, trong đó 50 lệnh mới là cho thực hiện trên dấu phẩy động Hỗ trợ cho điều này Pentium III có 8 thanh ghi mới (độ rộng
128 bit) cho phép thực hiện song song các toán hạng là số liệu dấu phẩy động
– Pentium III có thêm khái niệm SIM cho dấu phẩy động SIMD-FP Sử dụng SIMD với dấu phẩy động cho phép đạt độ chính xác cao hơn và nhờ vậy đồ hoạ 3D trung thực hơn
– Pentium III sử dụng phân luồng bộ nhớ (memory streaming) Khi CPU cần đến số liệu thi số liệu được nạp vào hai cache L2 và L1
– Các lệnh phân luồng bộ nhớ của Pentium III cung cấp thêm một chọn lựa là
có thể xử lý số liệu mà không cần nạp vào cache Phần mềm phát triển thực hiện công việc này Lúc đó số liệu có thể tuỳ chọn là không nạp vào hai hoặc một trong cache Việc đó cho phép phần mềm sử dụng trực tiếp bộ nhớ mà không dùng cache Nhờ vậy độ rộng dai thông hiệu dụng nâng từ 640 Mb/s lên 790 Mb/s
BVXL Pentium III có thông số kỹ thuật như sau:
– Bus hệ thống 100, 133 MHz
– Cache L2: 512 Kb, có sử dụng giao thức kiểm tra và sửa lỗi ECC (Error Checking and Correction ) Giao thức ECC rất mạnh trong phát hiện lỗi và sửa lỗi khi thao tác số liệu
– Bộ vi xử lý Pentium III được lắp vào board mạch dưới dạng cartrige với hàng chân cắm đơn kiểu SECC2 (Single-Edge Contact Cartridge 2) Board mạch này giao tiếp với board mạch chủ qua khe cắm có 242 chân tiếp xúc – Pentium III hiện nay có tần số làm việc rất cao, xấp xỉ 1 GHz với công nghệ 0.18 μm
Pentium IV (2000)
Trang 24Sử dụng công nghệ Vi kiến trúc NetBurst
9 Tổ chức siêu đường ống (Hyper pipeline-20 tầng)
9 Tổ chức động cơ thi hành nhanh REE (Rapid Excution Engine)
9 Tần số hệ thống 400MHz
9 Thi hành động cải tiến
9 Bổ xung đơn vị Multimedia và Enhanced Floating Point
Các đặc tính nâng cao
– Công nghệ Siêu đường ống (Hyper Pipeline) với độ sâu (Pipeline Depth) là
20 tầng
– Pentium III có độ sâu đường ống là 10 tầng
– Có động cơ thi hành nhanh REE (Rapid Execution Engine)
– Hai đơn vị số học và logic của Pentium 4 có tần số làm việc gấp đôi so với
tần số làm việc của nhân CPU Với cách tổ chức này, các lệnh số nguyên như lệnh ADD, SUB, AND, OR thực hiện chỉ trong nửa nhịp đồng hồ Ví dụ với Pentium 4 - 1,5 GHz, REE làm việc ở tần số 3 Ghz
– BUS hệ thống 400 MHz Với BUS hệ thống 400 MHz, Pentium 4 cho phép trao đổi số liệu Vào/Ra hệ thống là 3,2 GB/s
– Cache chuyển số liệu mức 2 cải tiến 256 KB (Level 2 Advanced Transfer Cache - ATC) Cache chuyển số liệu mức 2 cải tiến ATC có kích thước 256
KB và thực hiện trao đổi số liệu với nhân CPU với độ rộng 256 bit (32 byte)
Do vậy Pentium 4 - 1,5 GHz có thể trao đổi số liệu với tốc độ nhanh hơn hẳn
là 48 GB/s (Pentium III - 1 GHz là 16 GB/s)
– Thi hành động cải tiến (Advanced Dynamic Execution)
– Pentium 4 có thể xem xét trước 126 lệnh, tải về 48 lệnh và nạp vào mỗi đường ống 24 lệnh
– Bộ đệm đích rẽ nhánh BTB có kích thước 4 KB có thể thực hiện được thuật toán dự đoán rẽ nhánh phức tạp
Tổ chức đường ống vi kiến trúc NetBurst
Tổ chức đường ống vi kiến trúc NetBurst gồm 3 phần chính
9 Khối phát lệnh theo trinh tự gọi tắt là Khối phát lệnh
9 Khối thi hành siêu tỷ lệ không theo trinh tự hay gọi tắt là Khối thi hành
9 Đơn vị lưu trinh tự chương trinh
Trang 25Khối phát lệnh gồm hai đơn vị là Nhận/giải mã lệnh và Cache giám sát trinh
tự thi hành Khối phát lệnh có nhiệm vụ liên tục chuyển các lệnh theo đúng thứ tự của chương trinh tới khối thi hành và thực hiện các chức năng sau:
– Nhận trước các lệnh có thể được thực hiện
– Nhận các lệnh trước đó chưa được nhận
2.2.1 Thành phần cơ bản của một máy tính
Thành phần cơ bản của một bộ máy tính gồm: bộ xử lý trung tâm (CPU: Central Processing Unit), bộ nhớ trong, các bộ phận nhập-xuất thông tin Các bộ phận trên được kết nối với nhau thông qua các hệ thống bus Hệ thống bus bao gồm: bus địa chỉ, bus dữ liệu và bus điều khiển Bus địa chỉ và bus dữ liệu dùng trong việc chuyển dữ liệu giữa các bộ phận trong máy tính Bus điều khiển làm cho sự trao đổi thông tin giữa các bộ phận được đồng bộ Thông thường người ta phân biệt một bus hệ thống dùng trao đổi thông tin giữa CPU và bộ nhớ trong (thông qua cache), và một bus vào-ra dùng trao đổi thông tin giữa các bộ phận vào-ra và bộ nhớ trong
Bộ xử lý trung tâm (CPU):
Hình 2.3: Cấu trúc một hệ máy tính đơn giản
Trang 26Một chương trình sẽ được sao chép từ đĩa cứng vào bộ nhớ trong cùng với các thông tin cần thiết cho chương trình hoạt động, các thông tin này được nạp vào
bộ nhớ trong từ các bộ phận cung cấp thông tin (ví dụ như một bàn phím hay một đĩa từ) Bộ xử lý trung tâm sẽ đọc các lệnh và dữ liệu từ bộ nhớ, thực hiện các lệnh
và lưu các kết quả trở lại bộ nhớ trong hay cho xuất kết quả ra bộ phận xuất thông tin (màn hình hay máy in)
Thành phần cơ bản của một máy tính bao gồm :
– Bộ nhớ trong: Đây là một tập hợp các ô nhớ, mỗi ô nhớ có một số bit
nhất định và chức một thông tin được mã hoá thành số nhị phân mà không quan tâm đến kiểu của dữ liệu mà nó đang chứa Các thông tin này là các lệnh hay số liệu Mỗi ô nhớ của bộ nhớ trong đều có một địa chỉ Thời gian thâm nhập vào một ô nhớ bất kỳ trong bộ nhớ là như nhau
Vì vậy, bộ nhớ trong còn được gọi là bộ nhớ truy cập ngẫu nhiên (RAM: Random Access Memory) Độ dài của một từ máy tính (Computer Word)
là 32 bit (hay 4 byte), tuy nhiên dung lượng một ô nhớ thông thường là 8 bit (1 Byte)
– Bộ xử lý trung tâm (CPU): đây là bộ phận thi hành lệnh CPU lấy lệnh
từ bộ nhớ trong và lấy các số liệu mà lệnh đó xử lý Bộ xử lý trung tâm gồm có hai phần: phần thi hành lệnh và phần điều khiển Phần thi hành lệnh bao gồm bộ làm toán và luận lý (ALU: Arithmetic And Logic Unit)
và các thanh ghi Nó có nhiệm vụ làm các phép toán trên số liệu Phần điều khiển có nhiệm vụ đảm bảo thi hành các lệnh một cách tuần tự và tác động các mạch chức năng để thi hành các lệnh
– Bộ phận vào - ra: đây là bộ phận xuất nhập thông tin, bộ phận này thực
hiện sự giao tiếp giữa máy tính và người dùng hay giữa các máy tính trong hệ thống mạng (đối với các máy tính được kết nối thành một hệ thống mạng) Các bộ phận xuất nhập thường gặp là: bộ lưu trữ ngoài, màn hình, máy in, bàn phím, chuột, máy quét ảnh, các giao diện mạng cục bộ hay mạng diện rộng Bộ tạo thích ứng là một vi mạch tổng hợp (chipset) kết nối giữa các hệ thống bus có các tốc độ dữ liệu khác nhau
Trang 27Hình 2.4: Sơ đồ mô tả hoạt động điển hình của một máy tính
Sơ đồ cấu trúc tổng quát của hệ vi xử lý 8086/8088:
Trang 28o tiếp Bus –
c năng:
Nhận trưĐảm nhitiếp qua cá
Phát cáccác cổngĐọc mã Đọc dữ lGhi dữ liĐọc dữ D-Bus Ghi dữ li
học và logic
c năng: Th
Số học:
Logic: Ahình kết nố
u khiển – C
c năng:
Nhận lệnTăng nội
BIU: Đơn v EU: Đơn vị – BIU:
ước các lệniệm chức n
ác BUS
c tín hiệu
g I/O thônglệnh từ bộliệu từ bộ niệu vào bộliệu từ các
iệu ra các c
c – ALU:
hực hiện cáCộng, trừ,AND, OR, X
nh cất tạm vnăng điều k
địa chỉ đế
g qua A-Bunhớ thôngnhớ thông qnhớ thông
c cổng Inpcổng Outpu
ác phép toá, nhân, chiaXOR, NOT
U
hớ đưa vào
nh ghi PC m
BUS lệnh (CU v
vào hàng đkhiển BUS
ến bộ nhớ
us
g qua D-Buqua D-Bus
g qua D-Buput thông q
Trang 29hình kết nố
thông tin đ
Clock: tí
Mã lệnh Các trạnthái thựcCác tín hCác tín hCác tín h
i của VXL
nhớ được
tạm thời pghi tuỳ thu
2 loại: Loạ
h ghi theo c
ác định thao
ều khiển thựyêu cầu từ
ều khiển
ng nhịp từ mghi lệnh đưđưa đến chphép toán tkhiển từ BUkhiển bên trkhiển bên n
L
CPU nhận
hục vụ chouộc vào bộ
ại lập trình
chức năng
o tác mà lệ
ực thi lệnhBUS hệ th
mạch tạo d
ưa đến CU g
o biết trạngtrong ALU
US điều khrong CPU:
ngoài CPU
n biết qua t
o hoạt động
ộ vi xử lý cđược và lo
tên thanh g
g ở thời điể
cụ thể Æ tăoại không l
u
ải quyết đá
CPU cũng
n thanh ghihay cổng và
ghi và có t
ểm hiện tạiăng hiệu nălập trình đư
u
g
y
Trang 30anh ghi đa
anh ghi đi
anh ghi đưanh ghi dùn
anh ghi có ttrạng thái:
c, các lệnh
ược sử dụn
ng để lưu
thể chứa dữThanh gh
nh đang đư
AXBXCXDX[L]
: thanh gh
h xuất nhập
g để quản trữ dữ liệu
ữ liệu hoặc
hi chứa thôược thực hi
X: AccumuX: Base X: Count X: Data
ulator
là thanh ghanh ghi n
ỉ của ngăn(AX, BX,
ều được trạng thái
ghi để thựcnày thường
n ,
i
c
g
Trang 31và chỉ số
offset (độ
ghi con trỏ
ến các địa cghi đoạn ngghi con trỏ
y nhập dữ ltrữ các địa
sở, thường
m, dùng để
liệu, thườn cổng trong
lệch) cho
ỏ ngăn xếp,chỉ trong đogăn xếp, ch
ỏ cơ sở, môliệu từ bên
n tử định
chỉ đỉnh nxếp hiên tại củtính từ SS
n xếp lệnh truy c
g, trừ, nhân
cơ sở củavòng lặp,
quả của các
p cổng
địa chỉ trgăn xếpÆ
ủa lệnh
S nhưng còcập dữ liệu
n, chia )
a một vùngphép dịch,
c phép tính
rong đoạn Cho phép
òn được sử
u cất trong
g ,
Trang 32c Thanh ghi đoạn
Bộ nhớ CPU được chi thành các đoạn logic 64Kbyte Địa chỉ các đoạn được
chứa trong các thanh ghi đoạn
– CS: Code segment – Thanh ghi đoạn mã; Nhận diện địa chỉ bắt đầu của
đoạn chương trình hiện hành trong bộ nhớ – DS: Data segment – Nhận địa chỉ bắt đầu của đoạn số liệu hiện hành
trong bộ nhớ (nơi chứa các biến chương trình) – SS: Stack segment - Thanh ghi ngăn xếp, chứa địa chỉ bắt đầu của đoạn
ngăn xếp trong bộ nhớ – ES: Thanh ghi đoạn mở rộng; lưu trữ các dữ liệu chuỗi
d Thanh nghi cờ Flag Register
2 CF Carry Flag Cờ nhớ = 1 nếu số nhớ vượt quá bit MSB
3 OF Overflow Flag Cờ tràn =1 nếu kết quả vượt thang
4 SF Sign Flag Cờ dấu =1 nếu kết quả âm (bằng giá trị bit cuối)
5 PF Parity Flag Cờ chẵn =1 nếu số các số 1 kết quả chẵn (byte đầu)
6 ZF Zero Flag Cờ zero = 1 nếu kết quả bằng 0
7 DF Direction Flag Cờ hướng: nếu DF=1 thực hiện theo chiều giảm
3 bit cờ điều khiển
8
IF Interrupt-
Enable Flag Cờ ngắt- báo MP biết yêu cầu ngắt
9 TF Trap Fla g Cờ bẫy- đặt MP vào chế độ chạy từng lệnh
Các cờ từ 1÷6 phản ánh trạng thái của kết quả sau một thao tác nào đó Các
cờ còn lại từ 7÷9 là cờ điều khiển và được lập hoặc xoá bằng các lệnh riêng
2.4 Các phương pháp quản lý bộ nhớ
8086: 20bit địa chỉ Æ Quản lý 1MByte bộ nhớ
Độ lớn của các thanh ghi 16 bit Æ Không đủ để quản lý bộ nhớ
Giải pháp: Chia bộ nhớ thành các đoạn 64Kbyte
Trang 33u của đoạn
i
à
n
Trang 34• Địa chỉ offset: Khoảng cách kể từ đầu đoạn của ô nhớ cần tham khảo Chiều dài tối đa của một đoạn là 64K
• Trong mỗi đoạn, ô nhớ đầu tiên có offset là 0000h và ô nhớ cuối cùng có offset
là FFFF (h)
Địa chỉ logic và các thanh nghi
• Địa chỉ luận lý được sử dụng trực tiếp hoặc thông qua các thanh ghi của nó
– Các thanh ghi đoạn dùng để chứa địa chỉ đoạn segment
– Các thanh ghi đa năng quát dùng để chứa địa chỉ trong đoạn offset
– Để tham khảo đến địa chỉ luận lý có segment trong thanh ghi DS, offset trong thanh ghi BX, ta viết DS:BX
• Một số cặp thanh ghi luôn luôn phải dùng chung với nhau một cách bắt buộc như sau :
– CS:IP : lấy lệnh (địa chỉ lệnh sắp thi hành)
– SS:SP : địa chỉ đỉnh chồng
– SS:BP : thông số trong chồng (dùng cho chương trình con)
– DS:SI : địa chỉ chuỗi nguồn (chỉ có ý nghĩa trong các lệnh xử lý
chuỗi)
– ES:DI : địa chỉ chuỗi đích (chỉ có ý nghĩa trong các lệnh xử lý chuỗi)
nhiên
Dữ liệu tổng quát DS CS, ES,SS Địa chỉ hiệu dụng
Nguồn của chuỗi
(String)
BX dùng làm con trỏ DS CS, ES,SS Địa chỉ hiệu dụng
BP dùng làm con trỏ SS CS, ES,SS Địa chỉ hiệu dụng
2.5 Các phương pháp định địa chỉ
• Định địa chỉ thanh ghi
• Định địa chỉ tức thời
Trang 35• Định vị bộ nhớ
– Định vị trực tiếp – Định vị gián tiếp thanh ghi – Định vị cơ sở
– Định vị chỉ số và cơ sở
Định địa chỉ thanh ghi
• Toán hạng được chứa trong một thanh ghi, thanh ghi có tên trong trường địa chỉ toán hạng
• Ví dụ: MOV DX,CX
Định địa chỉ tức thời
• Toán hạng là dữ liệu 8 hoặc 16 bit nằm ngay trong lệnh
• Toán hạng tức thời được lưu trong đoạn mã ngay sau mã toán hạng
• Toán hạng được lấy ra cùng với lệnh và ghi vào hàng đợi lệnh và ghi vào hàng nhận lệnh trước
• VD: MOV AL,12h
Định vị bộ nhớ:
• Định vị trực tiếp: Toán hạng chứa địa chỉ nằm trong lệnh Địa chỉ đoạn hiện
tại nằm trong chứa trong DS
• Định vị gián tiếp thanh ghi: Địa chỉ hiệu dụng là nội dung các thanh ghi
Trang 364406
506
MJM
4602
702
MJM
lệnh
ode: Mã lệnướng truyềD=0: DữD=1: Dữ
ác định tru: Chọn tha
D và R/M cMOV
MOV AX,[S
MP [DI]
NC BYTE PDEC WORDBX]
ộ địa chỉ ch
Dữ liệu
Dữ liệuStack
ho toán hạn
AL←[
IP←[D[BP]←
[BX+1
AL ←IP←[D
AL←[
IP←[BAL←[
bởi 3 bit RE
h bởi 3 bit Rrld (W=1)
ng của lệnh
[SI]; AH←
DI+1:DI]
←[BP]+1 1:BX]← [B
← [SI+6]; AHDI+7:DI+6]
[BP+2]; AHBX+3:BX+
[BX+SI];AH
EG REG
h
[SI+1]
BX+1:BX]-1
H ←[SI+7]]
H ←[BP+3]6]
H←[BX+S
1
I+1]
Trang 37REG Xác định thanh ghi cho toán hạng thứ nhất
MOD và R/M cùng nhau xác định toán hạng thứ hai
W=1
MOD=11 W=0
000 [BX]+[SI] [BX]+[SI]+ADD8 [BX]+[SI]+ADD16 AX AL
001 [BX]+[DI] [BX]+[DI]+ADD8 [BX]+[DI]+ADD16 CX CL
010 [BP]+[SI] [BP]+[SI]+ADD8 [BP]+[SI]+ADD16 DX DL
011 [BP]+[DI] [BP]+[DI]+ADD8 [BP]+[DI]+ADD16 BX BL
Trang 38h lệnh (EX hập bộ nhớ kết quả (R
t)
à một sự k
ự của chươtính (ví dụ
n một số nh
ày
n của CPUhất trong bộ
h, ta phải b
uả của máy
máy có thểuction FetcInstruction: Execute)
ớ trong hoặ
S: Result Sành trong m
máy:
ời gian tìm
a các lệnh
o giờ cũnghịch đảo củ
kiện xảy raơng trình (
ụ như IBM
hà sản xuất
U là bộ ph
ộ điều khiểbiết điều ch
y tính
ể chia thànch)
g bằng một
ủa tần số ho
a một cách(nghĩa là tạ
M, INTEL)
t khác dùng
hận khó thự
ển Để nhậnhỉnh chu k
nh 5 giai đo
MEM: Memhiều chu kỳ
mã lệnh và
u là khác nh
số nguyênoạt động (t
h ngẫu nhiê
ạo ra một ldùng từ n
n lần chu kỳtốc độ đồng
ên trong mlệnh nhảy)ngắt quãng
để ám chỉ
”, “bẩy” để
ắt quãng là
t quãng lúcnày có thể
Trang 39Người ta đã nghỉ ra “ngắt quãng” là để nhận biết các sai sót trong tính toán
số học, và để ứng dụng cho những hiện tượng thời gian thực Bây giờ, ngắt quãng được dùng cho các công việc sau đây:
Ngoại vi đòi hỏi nhập hoặc xuất số liệu
Người lập trình muốn dùng dịch vụ của hệ điều hành
Cho một chương trình chạy từng lệnh
Làm điểm dừng của một chương trình
Báo tràn số liệu trong tính toán số học
Trang bộ nhớ thực sự không có trong bộ nhớ
Báo vi phạm vùng cấm của bộ nhớ
Báo dùng một lệnh không có trong tập lệnh
Báo phần cứng máy tính bị hư
Báo điện bị cắt
Dù rằng ngắt quãng không xảy ra thường xuyên nhưng bộ xử lý phải được thiết kế sao cho có thể lưu giữ trạng thái của nó trước khi nhảy đi phục vụ ngắt quãng Sau khi thực hiện xong chương trình phục vụ ngắt, bộ xử lý phải khôi phục trạng thái của nó để có thể tiếp tục công việc Để đơn giản việc thiết kế, một vài bộ
xử lý chỉ chấp nhận ngắt sau khi thực hiện xong lệnh đang chạy Khi một ngắt xảy
ra, bộ xử lý thi hành các bước sau đây:
1 Thực hiện xong lệnh đang làm
2 Lưu trữ trạng thái hiện tại
3 Nhảy đến chương trình phục vụ ngắt
4 Khi chương trình phục vụ chấm dứt, bộ xử lý khôi phục lại trạng thái cũ của
nó và tiếp tục thực hiện chương trình mà nó đang thực hiện khi bị ngắt
2.7.2 Kỹ thuật ống dẫn (Pipeline)
Đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc
Trang 40Ví dụ: Chúng ta có những lệnh đều đặn, mỗi lệnh được thực hiện trong cùng một khoản thời gian Giả sử, mỗi lệnh được thực hiện trong 5 giai đoạn và mỗi giai đoạn được thực hiện trong 1 chu kỳ xung nhịp Các giai đoạn thực hiện một lệnh là: lấy lệnh (IF: Instruction Fetch), giải mã (ID: Instruction Decode), thi hành (EX: Execute), thâm nhập bộ nhớ (MEM: Memory Access), lưu trữ kết quả (RS: Result Storing)
Hình 1.24 cho thấy chỉ trong một chu kỳ xung nhịp, bộ xử lý có thể thực hiện một lệnh (bình thường lệnh này được thực hiện trong 5 chu kỳ)
Hình 2.7: Các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc
So sánh với kiểu xử lý tuần tự thông thường, 5 lệnh được thực hiện trong
25 chu kỳ xung nhịp, thì xử lý lệnh theo kỹ thuật ống dẫn thực hiện 5 lậnh chỉ trong
9 chu kỳ xung nhịp
Như vậy kỹ thuật ống dẫn làm tăng tốc độ thực hiện các lệnh Tuy nhiên kỹ thuật ống dẫn có một số ràng buộc:
– Cần phải có một mạch điện để thi hành mỗi giai đoạn của lệnh vì tất
cả các giai đoạn của lệnh được thi hành cùng lúc Trong một bộ xử lý không dùng kỹ thuật ống dẫn, ta có thể dùng bộ làm toán ALU để cập nhật thanh ghi PC, cập nhật địa chỉ của toán hạng bộ nhớ, địa chỉ ô nhớ mà chương trình cần nhảy tới, làm các phép tính trên các toán hạng vì các phép tính này có thể xảy ra ở nhiều giai đoạn khác nhau – Phải có nhiều thanh ghi khác nhau dùng cho các tác vụ đọc và viết Trên hình III.4, tại một chu kỳ xung nhịp, ta thấy cùng một lúc có 2 tác vụ đọc (ID, MEM) và 1 tác vụ viết (RS)