Báo cáo bài tập lớn môn Kiến Trúc Máy Tính Đề tài Phân tích kiến trúc và nguyên lý làm việc của bộ vi xử lý 64 bit của Intel. Là công ty lớn trong lĩnh vực công nghệ, Intel từng nỗ lực phát triển con chip Itanium để tiến vào lĩnh vực bộ xử lý 64 bit từ nhiều thập niên trở về trước. Chip Itanium, CPU 64bit đầu tiên của Intel, từng một thời được kỳ vọng thay thế vi xử lý x86 đã chính thức suy tàn.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN _
BÀI TẬP LỚN MÔN HỌC
KIẾN TRÚC MÁY TÍNH
ĐỀ TÀI: PHÂN TÍCH KIẾN TRÚC VÀ NGUYÊN LÝ LÀM VIỆC
CỦA BỘ VI XỬ LÝ 64 BIT CỦA INTEL
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN _
BÀI TIỂU LUẬN MÔN HỌC
KIẾN TRÚC MÁY TÍNH
ĐỀ TÀI: PHÂN TÍCH KIẾN TRÚC VÀ NGUYÊN LÝ LÀM VIỆC CỦA
BỘ VI XỬ LÝ 64 BIT CỦA INTEL
Hà Nội, 2019
Trang 3Mục Lục
LỜI NÓI ĐẦU 4
Chương 1: TỔNG QUAN VỀ BỘ VXL CỦA INTEL 5
1.1 Khái niệm 5
Hình 1.1: Cấu trúc CPU 5
1.2 Lịch sử ra đời của bộ VXL 6
Hình 1.2: Ảnh một vi xử lý 6
1.3 Cấu trúc phần cứng của bộ VXL 9
Hình 1.3: Cấu trúc phần cứng của một vi xử lý 10
1.3.1 Đơn vị xử lý trung tâm CPU 11
Hình 1 4: Đơn vị xử lý trung tâm CPU 11
1.3.2 Bộ nhớ 12
1.3.3 Cổng vào/ra song song 12
1.3.4 Cổng vào/ra nối tiếp 12
1.3.5 Bộ đếm/Bộ định thời 13
1.4 Nguyên lý hoạt động của bộ VXL 14
1.5 Lập trình cho một VXL 19
Chương 2: BỘ VI XỬ LÝ 64 BIT CỦA INTEL VÀ CÁC THẾ HỆ VXL 22
2.1 Tổng quan về bộ vi xử lý 64 bit của Intel 22
Hình 2.1: Vi xử lý của Intel 22
2.2 Kiến trúc bộ vi xử lý 64 bit 24
2.3 64 Bit dữ liệu mô hình 26
2.4 64 Bit điều hành hệ thống thời gian 28
2.5 Kiến trúc Itanium (Merced) : 2001 30
Hình 2.2: Bộ vi xử lý Itanium 30
2.6 Kiến trúc Intanium 2: 2002- 2010 31
2.7 Itanium 9300 (Tkwila):2010 33
2.8 P4 Prescott (năm 2004) 33
2.9 Pentium D (năm 2005) 34
Trang 4Hình 2.4: Kiến trúc Pentium D 2005 34
2.10 Pentium Extreme Edition (năm 2005) 35
2.11 Intel Core 2 Duo 35
Hình 2.5: Kiến trúc Intel Core ™ Dou 35
Chương 3: NGUYÊN LÝ LÀM VIỆC CỦA BỘ VI XỬ LÝ 64 BIT CỦA INTEL 37
3.1 Sơ đồ khối 37
Hình 3 1: Sơ đồ khối của bộ vi xử lý 37
3.2 Nguyên lý làm việc của bộ nhớ Cache L1 37
Hình 3 2: Bộ nhớ cache L1 38
3.3 Cách tổ chức và nguyên lý làm việc bộ nhớ Cache L2 39
Hình 3 3: Cách bản đồ hóa trực tiếp cách làm việc của cache L2 40
3.4 Tổ chức cache nhớ L3 42
3.5 Độ rộng Bus dữ liệu và Bus địa chỉ (Data Bus và Add Bus) 42
Hình 3 4: Minh họa CPU có 12 đường truyền dữ liệu gọi là Data Bus 43
3.6 Tốc độ sử lý và tốc độ Bus của CPU 43
Hình 3 5: Minh họa về tốc độ xử lý (speed CPU) và tốc độ Bus (FBS) của CPU.43 3.7 Nguyên lý làm việc của các thanh ghi 44
3.8 Khối xử lý trung tâm ALU 45
Hình 3 6: Bộ tính toan ALU 46
3.9 Quy trình xử lý thông tin 46
Hình 3 7: Quy trình xử lý thông tin 47
3.10 Con trỏ ngăn xếp SP(Stack) 47
Hình 3 8: Con trỏ ngăn xếp SP 48
3.11 Khối điều khiển CU 49
Hình 3 9: Khối Điều khiển CU 49
Trang 5LỜI NÓI ĐẦU
Tập đoàn Intel (Integrated Electronics) thành lập vào ngày 18/7/1968, lúc đó
là tập đoàn hợp nhất về thiết bị điện tử, sản xuất ờ Santa Clara, (California, USA)bởi nhà hoá học kiêm vật lý học Gordon E.Moore và Robert Noyce, sau khi họ đãrời khỏi công ty Fairchild Semiconductor
Intel sản xuất các sản phẩm như chip vi xử lý cho máy tính, ví dụ như bomạch chủ, ổ nhớ flash, card mạng và các thiết bị máy tính khác Intel Corporation
là công ty sản xuất thiết bị chất bán dẫn lớn nhất thế giới, và là nhà phát minh rachuỗi vi mạch xử lý thế hệ x86 mà bộ xử lý tìm thấy ở các máy tính cá nhân
Là công ty lớn trong lĩnh vực công nghệ, Intel từng nỗ lực phát triển con chipItanium để tiến vào lĩnh vực bộ xử lý 64 bit từ nhiều thập niên trở về trước ChipItanium, CPU 64-bit đầu tiên của Intel, từng một thời được kỳ vọng thay thế vi xử
lý x86 đã chính thức suy tàn
Để góp một phần nho nhỏ giúp mọi người hiểu sâu hơn về bộ vi xử lí 64 bitcủa intel, nhóm 7 xin được trình bày sơ lược về bộ vi xử lí intel và sâu hơn là bộ bộVXL intel 64 bit Tài liệu gồm 2 chương:
Chương 1: Trình bày tổng quan về bộ VXL của intel Giúp mọi người hiểu
về khái niệm, lịch sử ra đời của bộ VXL, cấu trúc phần cứng, nguyên lý hoạt động
và lập trình cho một VXL
Chương 2: Người đọc sẽ hiểu rõ hơn về BỘ VXL 64 Bit của intel gồm tổng
quan, kiến trúc của bộ VXL 64 bit và một vài các thế hệ VXL của intel khác
Chương 3: Nguyên lý làm việc của bộ VXL 64 Bit Intel.
Bài tập được hoàn thành nhờ sự cộng tác của các thành viên nhóm 7, sựtham khảo tài liệu từ Internet cùng tài liệu và sự hướng dẫn của thầy Nguyễn Tuấn
Tú – Giảng viên, Thạc sĩ trường Đại học Công nghiệp Hà Nội Bài viết này củachúng em còn nhiều thiếu sót mong được nhận them phản ánh và góp ý thêm từthầy và quý bạn đọc
Nhóm sinh viên thực hiện!
Trang 6Chương 1: TỔNG QUAN VỀ BỘ VXL CỦA INTEL
1.1 Khái niệm
CPU viết tắt của chữ Central Processing Unit (tiếng Anh), tạm dịch là đơn
vị xử lí trung tâm CPU có thể được xem như não bộ, một trong những phần tử cốt lõi nhất của máy vi tính Nhiệm vụ chính của CPU là xử lý các chương trình vi tính
và dữ kiện
CPU có nhiều kiểu dáng khác nhau: Ở hình thức đơn giản nhất, CPU là mộtcon chip với vài chục chân Phức tạp hơn, CPU được ráp sẵn trong các bộ mạch vớihàng trăm con chip khác CPU là một mạch xử lý dữ liệu theo chương trình đượcthiết lập trước Nó là một mạch tích hợp phức tạp gồm hàng triệu transistor
Hình 1.1: Cấu trúc CPU
“Vi xử lý” là thuật ngữ chung dùng để đề cập đến kỹ thuật ứng dụng các
công nghệ vi điện tử, công nghệ tích hợp và khả năng xử lý theo chương trình vào các lĩnh vực khác nhau.
Vào những giai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý,các chip (hay các vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếunhư CPU cùng các mạch giao tiếp giữa CPU và các phần cứng khác Trong giai
Trang 7đoạn này, các phần cứng khác (kể cả bộ nhớ) thường không được tích hợp trên chip
mà phải ghép nối thêm bên ngoài Các phần cứng này được gọi là các ngoại vi(Peripherals) Về sau, nhờ sự phát triển vượt bậc của công nghệ tích hợp, các ngoại
vi cũng được tích hợp vào bên trong IC và người ta gọi các vi xử lý đã được tíchhợp thêm các ngoại vi là các “vi điều khiển” Việc tích hợp thêm các ngoại vi vàotrong cùng một IC với CPU tạo ra nhiều lợi ích như làm giảm thiểu các ghép nốibên ngoài, giảm thiểu số lượng linh kiện điện tử phụ, giảm chi phí cho thiết kế hệthống, đơn giản hóa việc thiết kế, nâng cao hiệu suất và tính linh hoạt
1.2 Lịch sử ra đời của bộ VXL
Bộ vi xử lý là một trong những thành tựu khoa học kỹ thuật vĩ đại trong thế
kỷ XX của nhân loại Nó được sảnxuất dựa trên công nghệ mạch tích hợp và thành
phần cơ bản trong bộ vi xử lý là transistor (hay bóng bán dẫn) nên lịch sử của nógắn liền với lịch sử ra đời của transistor và sự phát triển của công nghệ mạch tíchhợp
Hình 1.2: Ảnh một vi xử lý
Vùng Santa Clara ở miền Nam vịnh San Francisco (bang Canifornia, Mỹ)trồng rất nhiều mận, trước kia được gọi là thung lũng mận khô Từ thâp niên 60,những vườn mận ngày càng ít đi và SantaClata đã được đổi tên là Silicon Valley(thung lũng Silicon) Hiện nay, transistor, mạch tích hợp, bộ vi xử lý của SiliconVallley đã xuất hiện trên toàn thế giới Tập đoàn điện thoại AT & T (AmericanTelephone &Telegraph) đã đầu tư xây dựng một số phòng thí nghiệm tại MarrayHill (bang NewJersey) Các phòng thí nghiệm này tập trung một đội ngũ các nhà
Trang 8khoa học giỏi, chú trọng ngiên cứu, cải tiến những sản phẩm do tập đoàn AT & Tsản xuất.Vào ngày 23 tháng 12 năm 1947, ba nhà khoa học Wiliam Shockley, JohnPardeen,Walter Brattian đã mời giám đốc các trung tâm nghiên cứu đến để giớithiệu mộtbộ khuếch đại rất lạ Ba nhà khoa học này đang nghiên cứu về các chấtbán dẫn - những tinh thể có một đặc điểm vật lý rất quan trọng: chỉ cho dòng điệnlưu thông theo một chiều duy nhất Đây là một loại vật liệu lý tưởng để biến dòngđiện xoay chiều thành dòng điện một chiều Từ loại vật liệu này, họ sẽ chế tạo bộchuyển mạch cho các tổng đài điện thoại của AT & T Còn bộ khuếch đại khác,trong đó có một mẩu germanium nhỏ đựng trên ba chân bằng thép, gọi làtransistor.Transistor nhỏ hơn đèn chân không 50 lần, tiết kiệm năng lượng hơn,không cần nhiều linh liện (do đó ít hỏng hóc) và gần như không nóng lên Ba nhàkhoa học trên đã nhận được giải Nobel vật lý năm 1956.
Nhưng nhà khoa học WiliamShockley lại không nhìn thấy tương lai tươisáng nơi tập đoàn AT & T Năm1955, Shockley đã bỏ AT & T đến thành lập phốnhỏ Palo Alto ở miền Nam SanFranasco để thành lập Shockley Semiconductors,chiêu tập rất nhiều nhà khoa học nổi tiếng thời ấy Nhưng dưới quyền chỉ đạo củaShockley, các nhà khoa học trẻ rất khó phát triển Năm 1957, cuộc xung đột bùngnổ: tám nhà khoa học(đứng đầu là Bob Noyce 27 tuổi - tiến sĩ khoa học thuộc việncông nghệ Massachusetts) quyết định “ly khaí, thành lập một bộ phận nghiên cứuchất bán dẫn trong tập đoàn Fairchild Camera and Instrument ở MountainWiew.Theo quan điểm của họ, người chính được khâm phục chính là nhà vật lý học ngườiAnh Dummer Ngay từ năm 1952, Dummer đã dự định chế tạo một mô hình cáclinh kiện điện tử, bao gồm nhiều lớp vật lý cách điện, dẫn xuất, điều chỉnh vàkhuyếch đại âm thanh tốt Cũng trong thập niên 50, một nhà nghiên cứu tên là JackKilby làm việc cho Texas Instrument ở Dalas đã bỏ việc đến California.Năm 1958,Jack Kilby giới thiệu một mẫu Silicium nhỏ mang nhiều transistor, nhưng nhà khoahọc Bob Noyce đã chế tạo một loại sản phẩm tương tự, được gọi làmạch tích hợp(IC - Integrated Circuit) Sản phẩm này bao gồm nhiều transistor trên mặt phẳngcực nhỏ (vài mm2), có thể lưu trữ thông tin, thay đổi dữ liệu, thực hiện được cácphép tính đại số: đó là “con rệp”
Trang 9Sản phẩm mới của Bob Noyce đã làm cho thế giới điện tử bàng hoàng Chođến thời gian ấy, máy tính bao gồm hàng nghìn transistor được liên kết với nhaubằng dây điện Như thế, muốn lắp ráp, phải cần nhiều giờ lao động hơn, mà máytính vẫn có thể hỏng hóc vì nhiệt và chấn động âm thanh Trong khi đó, “con rệp”lại không dùng dây điện,chi tiết transistor nhỏ lên khối lượng thiết giảm Lúc đó,chỉ có một trở ngại duy nhất: mạch tích hợp đầu tiên bao gồm hàng chục transistorđắt tiền (giá hàng nghìn đôla), rất khó bán trên thị trường.
Những người cứu sống mạch tích hợp lại chính là nhà du hành vũ trụ YuriGararin và tổng thống Mỹ John Kennedy.Tổng thống Mỹ là người đã tuyên bố đưacon người lên mặt trăng Kế hoạch thám hiểm mặt trăng bắt đầu và như thế, phảitrang bị cho tàu không gian những máy tính cực nhỏ, tối tân chống nhiệt và thayđổi của khí hậu Mạch tích hợp đãthoả mãn được những yêu cầu trên Dù mạch tíchhợp đắt tiền nhưng cơ quan hàng không vũ trụ Mỹ và lầu 5 góc vẫn duyệt chi kinhphí Còn “con rệp” được sản xuất hàng loạt lên giá thành ngày càng hạ ỞMountain Wiew, tám nhà khoa học trẻ của tập đoàn Fairchild ngày càng giàu sụ.Dùvậy, năm 1968, hai nhà khoa học Gordon Moore và Bob Noyce quyết địnhnghỉviệc, thành lập công ty Intel (IntegratedElectronics) Theo quan điểmcủa họ,tính sáng tạo của kỹ sư điện tử phát triển rất mạnh khi họ còn trẻ Do đó, họ chỉtuyển dụng các nhà khoahọc trẻ, phần lớn dưới 30 tuổi Người thứ 12 gia nhập Inteltên là Marcian TedHoff, sinh tại Rochester (bang New York), tiến sĩ thuộc trườngđại học Standford Mới 31 tuổi nhưng Hoff đã có rất nhiều bằng sáng chế
Đến năm 1969 đã có 200 người làm việc cho Intel Các văn phòng tạiMoutain View trở nên quá chật hẹp, nên Intel dời địa điểm nghiên cứu đến SiliconValley Cùng thời gian ấy, công ty Busicomcủa Nhật Bản dự định liên kết với Intelsản xuất mạch in của một loại máy tính mới Bob Noyce chỉ định Hoff làm việc vớicác kỹ sư Nhật
Buổi làm việc của hai bên chỉ kéo dài một ngày Đêm hôm ấy, Hoff đi nghỉ ởTahiti và suy nghĩ rằng,theo dự án của Busicom, máy tính sẽ rất đắt tiền và rất phứctạp Thế là vài ngày sau, Hoff đề xuất với Busicom phương pháp sản xuất máy tínhbằng cách tậphợp các mạch tích hợp có những chức năng cơ bản của máy tính.Trên một diện tích có mỗi cạnh 0,5 cm là 2000 transistor mang nhiều chức năng: bộ
Trang 10phần xử lýtrung tâm, mạch bộ nhớ ROM (Read Only Memory) chứa chương trìnhcho sẵn để tínhtoán, một bộ nhớ RAM (Random Access Memory) - bộ nhớ có thểđọc, xoá và viết thông tin, chứa dữ liệu cho người sử dụng nạp vào để xử lý Đâyquả là sáng kiến thiên tài: một máy điện toán trên một “con rệp” duy nhất Chỉ cònthiếu màn hình và bàn phím Sau này, Hoff đã gọi sản phẩm mới ấy là bộvi xử lý.Hợp đồng giữa Ted Hoff và Busicom được kí kết, dành độc quyền khai thác choBusicom Hai kỹ sư điện tử khác tên là Mazor và Frederico Faggin cùng tham giaxây dựng dự án bộ vi xử ký Vào tháng 1 năm 1971, bộ vi xử lí đầu tiên được rađời, mang số hiệu 4004 Tháng 11 năm 1971, tạp chí Tin tức điện tử công bố chínhthức sản phẩm 4004 Trong thời gian ấy, Intel mua lại bản quyền bộ vi xử lí củaBusicom.
Sau này, Ted Hoff phát biểu:”Khi làm việc về dự án bộ vi xử lí, tôi chỉ nghĩđến việc sáng chế một máy tính chữ chưa ý thức được sức phát triển của sản phẩm
ấy trong tương lai” Riêng đối với Bob Noyce, ông đã nảy ra ý tưởng sẽ ứng dụng
bộ vi xử lí vào mộtvài lĩnh vực hoạt động có tính chất phổ cập dễ sinh lợi CònGordon Moore đãphát biểu trong thập niên 60 câu nói nổi tiếng sau này được gọi làđịnh luật Moore: “Cứ sau 18 tháng, tốc độ và sức mạnh của bộ tích hợp lại đượctăng gấp đôi” Năm 1971, bộ vi xử lí 4004 có 2300 transistor Năm 1993, bộ vi xử
lí Pentium của Intel có 3,1triệu transistor Tháng 8 năm 1999, Pentium III của Intel
có 21 triệutransistor chạy ở tốc độ 600 MHz Tháng 3 năm 2000 tốc độ của bộ vi
xử lí đạttới mức kỉ lục: 1 GHz !
Nhưng chưa dừng lại ở đó, gần đây nhất là Pentium IV “kinh hoàng” với tốc
độ 2 GHz được Intel giớithiệu vào tháng 8/2001
Hiện nay ba nhà khoa học đoạt giải Nobel: Wiliam Shockley, John Pardeen,Walter Brattain đã qua đời John Pardeen còn đoạt giải Nobel vật lý vào năm 1972(lần thứ 2) Bob Noyce cũng đã qua đời vào năm 1990 Còn Gordon Moore và TedHoff vẫn tiếp tục chỉ đạo Intel ở Silicon Valley, xây dựng Intel trở thành tập đoànsản xuất bộ vi xử lí hàng đầu thế giới
1.3 Cấu trúc phần cứng của bộ VXL
Về cơ bản kiến trúc của một vi xử lý gồm những phần cứng sau:
Trang 11- Đơn vị xử lý trung tâm CPU (Central Processing Unit)
- Các bộ nhớ (Memories)
- Các cổng vào/ra song song (Parallel I/O Ports)
- Các cổng vào/ra nối tiếp (Serial I/O Ports)
- Các bộ đếm/bộ định thời (Timers)
Ngoài ra với mỗi loại vi điều khiển cụ thể còn có thể có thêm một số phầncứng khác như bộ biến đổi tương tự- số ADC, bộ biến đổi số- tương tự DAC, cácmạch điều chế dạng sóng WG, điều chế độ rộng xung PWM…
Bộ não của mỗi vi xử lý chính là CPU, các phần cứng khác chỉ là các cơ
quan chấp hành dưới quyền của CPU Mỗi cơ quan này đều có một cơ chế hoạtđộng nhất định mà CPU phải tuân theo khi giao tiếp với chúng Để có thể giao tiếp
và điều khiển các cơ quan chấp hành (các ngoại vi), CPU sử dụng 03 loại tín hiệu
cơ bản là tín hiệu địa chỉ (Address), tín hiệu dữ liệu (Data) và tín hiệu điều khiển(Control) Về mặt vật lý thì các tín hiệu này là các đường nhỏ dẫn điện nối từ CPUđến các ngoại vi hoặc thậm chí là giữa các ngoại vi với nhau Tập hợp các đườngtín hiệu có cùng chức năng gọi là các bus Như vậy ta có các bus địa chỉ, bus dữliệu và bus điều khiển Có thể mô tả sơ bộ cấu trúc phần cứng của một vi xử lý theohình sau:
Hình 1.3: Cấu trúc phần cứng của một vi xử lý
Trang 12Sau đây là mô tả sơ bộ về các phần cứng bên trong một vi xử lý:
1.3.1 Đơn vị xử lý trung tâm CPU
CPU có cấu tạo gồm có đơn vị xử lý số học và lôgic (ALU), các thanh ghi,các khối lôgic và các mạch giao tiếp Chức năng của CPU là tiến hành các thao táctính toán xử lý, đưa ra các tín hiệu địa chỉ, dữ liệu và điều khiển nhằm thực hiệnmột nhiệm vụ nào đó do người lập trình đưa ra thông qua các lệnh (Instructions)
Hình 1 4: Đơn vị xử lý trung tâm CPU
- Bộ giải mã lệnh: có nhiệm vụ nhận dạng câu lệnh và điều khiển các mạch
khác theo lệnh đã giải mã Việc giải mã đươpcj thực hiện nhờ có tập lệnh
“instruction set” Mỗi họ vi điều khiển thường có các tập lệnh khác nhau
- Arithmetical Logical Unit (ALU): Thực thi tất cả các thao tác tính toán số
học và logic
- Thanh ghi tích lũy (Accumulator) : là một thanh ghi SFR liên quan mật
thiết với hoạt động của ALU, lưu trữ tất cả các dữ liệu cho quá trình tínhtoán và lưu giá trị kết quả để chuẩn bị cho các tính toán tiếp theo Mộttrong các thanh ghi SFR khác được gọi là thanh ghi trạng thái (StatusRegister) cho biết trạng thái của các giá trị lưu trong thanh ghi tích lũy
Trang 131.3.2 Bộ nhớ
Nhìn chung có hai loại bộ nhớ là bộ nhớ chương trình và bộ nhớ dữ liệu Bộnhớ chương trình dùng để chứa mã chương trình hướng dẫn CPU thực hiện mộtnhiệm vụ nào đó Thông thường thì bộ nhớ chương trình là các loại bộ nhớ “khôngbay hơi” (non- volatile), nghĩa là không bị mất nội dung chứa bên trong khi ngừngcung cấp nguồn nuôi Có thể kể ra một số bộ nhớ thuộc loại này như: ROM,PROM, EPROM, EEPROM, Flash Bộ nhớ dữ liệu là bộ nhớ dùng để chứa dữ liệu(bao gồm các tham số, các biến tạm thời…) Tuỳ thuộc loại dữ liệu mà bộ nhớ loạinày có thể là loại “không bay hơi” hoặc “bay hơi” (mất dữ liệu khi cắt nguồn nuôi).Loại “bay hơi” thường thấy là các bộ nhớ SRAM
1.3.3 Cổng vào/ra song song
Đây là các đường tín hiệu được nối với một số chân của IC dùng để giao tiếpvới thế giới bên ngoài IC Giao tiếp ở đây là đưa điện áp ra hoặc đọc vào giá trịđiện áp tại chân cổng Các giá trị điện áp đưa ra hay đọc vào chỉ có thể được biểudiễn bởi một trong hai giá trị lôgic (0 hoặc 1)
Trong kỹ thuật vi xử lý, người ta thường dùng quy ước lôgic dương: giá trịlôgic 0 ứng với mức điện áp thấp xấp xỉ 0VDC, giá trị lôgic 1 ứng với mức điện ápcao xấp xỉ +5VDC Tùy loại vi xử lý mà “khoảng xấp xỉ” đó là khác nhau nhưngnhìn chung là tương thích với mức lôgic TTL Mỗi cổng vào/ra song song thườnggồm 08 đường vào/ra khác nhau và gọi là các cổng 08 bit Các đường tín hiệuvào/ra của các cổng và thuộc cùng một cổng là độc lập với nhau Điều đó có nghĩa
là ta có thể đưa ra hay đọc vào các giá trị lôgic khác nhau đối với từng chân cổng(từng đường tín hiệu vào/ra) Một điều cần chú ý nữa đối với các cổng vào/ra đó làchúng có thể được tích hợp thêm (nói đúng hơn là kiêm thêm) các chức năng đặcbiệt liên quan đến các ngoại vi khác
1.3.4 Cổng vào/ra nối tiếp
Khác với cổng song song, với cổng nối tiếp các bit dữ liệu được truyền lần lượt trên cùng một đường tín hiệu thay vì truyền cùng một lúc trên các đường tín
hiệu khác nhau Thông thường thì việc truyền dữ liệu bằng cổng nối tiếp phải tuântheo một cơ chế, một giao thức hay một nguyên tắc nhất định Có thể kể ra một số
Trang 14giao thức như SPI, I2C, SCI… Cổng nối tiếp có 02 kiểu truyền dữ liệu chính: Truyền đồng bộ (synchronous): thiết bị truyền và thiết bị nhận đều dùng chung mộtxung nhịp (clock) - Truyền dị bộ (asynchronous): thiết bị truyền và thiết bị nhận
-sử dụng hai nguồn xung nhịp riêng Tuy nhiên hai nguồn xung nhịp này khôngđược khác nhau quá nhiều
Xung nhịp là yếu tố không thể thiếu trong truyền dữ liệu nối tiếp và nó có
vaitrò xác định giá trị của bit dữ liệu (hay nói đúng hơn là xác định thời điểm đọcmức lôgic trên đường truyền dữ liệu)
Cổng nối tiếp có thể có một trong các tính năng sau: Đơn công: thiết bị chỉ
có thể hoặc truyền hoặc nhận dữ liệu Bán song công: thiết bị có thể truyền và nhận
dữ liệu nhưng tại một thời điểm chỉ có thể làm một trong hai việc đó Song công:thiết bị có thể truyền và nhận dữ liệu đồng thời
1.3.5 Bộ đếm/Bộ định thời
Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếmcác xung nhịp Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộđếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm đi 01đơn vị (trong chế độ đếm lùi/đếm xuống)
Xung nhịp đưa vào đếm có thể là một trong hai loại: Xung nhịp bên trong IC
Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên trong IC và các linhkiện phụ bên ngoài nối với IC Ta có thể ví đó là “nhịp tim” để toàn bộ các phầncứng bên trong vi xử lý (bao gồm cả CPU và các ngoại vi) có thể hoạt động được.Trong trường hợp sử dụng xung nhịp loại này, người ta gọi là các bộ định thời(timers) Do xung nhịp bên loại này thường đều đặn nên ta có thể dùng để đếm thờigian một cách khá chính xác Xung nhịp bên ngoài IC Đó là các tín hiệu lôgic thayđổi liên tục giữa 02 mức 0- 1 và không nhất thiết phải là đều đặn Trong trường hợpnày người ta gọi là các bộ đếm (counters) Ứng dụng phổ biến của các bộ đếm làđếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xera/vào kho bãi…
Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn” (overflow) Nóđược hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và
Trang 15quay trở về giá trị 0 Với bộ đếm 8 bit, giá trị tối đa là 255 và là 65535 với bộ đếm
16 bit
Ngoài các phần cứng nêu trên còn phải kể đến một khối lôgic khác là khốigiao tiếp bus Khối này có chức năng ghép nối giữa các bus bên trong chip và cácchân đưa ra ngoài chip Mục đích của việc đưa các tín hiệu địa chỉ, dữ liệu và điềukhiển ra ngoài là nhằm mở rộng khả năng phối ghép thêm của vi xử lý với cácngoại vi khác (chủ yếu là các bộ nhớ ngoài) ngoài các ngoại vi được tích hợp trên
IC Thông thường thì số lượng các đường tín hiệu là giữ nguyên khi đưa ra ngoàichip, tuy nhiên trong một số trường hợp số lượng các đường tín hiệu có thể nhỏhơn số lượng thực bên trong (ví dụ như trường hợp của vi xử lý 8088, bus dữ liệubên trong là 16 bit nhưng đưa ra ngoài chỉ có 8 bit) Khi đưa ra ngoài, các tín hiệuđịa chỉ và dữ liệu có thể được ghép với nhau (cùng sử dụng chung một số chân nàođó) hoặc được tách riêng (tín hiệu địa chỉ dùng một số chân, tín hiệu dữ liệu dùngmột số chân khác) Người ta thường “dồn kênh” (multiplex), tức là ghép chức năng,giữa bus địa chỉ và bus dữ liệu để giảm thiểu số chân cần thiết Trong trường hợpnày, tín hiệu địa chỉ sẽ xuất hiện trước, sau đó là tín hiệu dữ liệu trên cùng một tậphợp các đường tín hiệu Để tách được 2 loại tín hiệu đó thì nhà sản xuất cung cấpcho người sử dụng một đường tín hiệu điều khiển có tên là tín hiệu chốt địa chỉ(thường ký hiệu là ALE) Tín hiệu này sẽ tích cực khi tín hiệu địa chỉ xuất hiện vàkhông tích cực khi tín hiệu dữ liệu xuất hiện trên bus Các IC thích hợp với việctách tín hiệu địa chỉ và dữ liệu là các IC thuộc họ 74xx373/374 hoặc 74xx573/574
1.4 Nguyên lý hoạt động của bộ VXL
Trước hết, nói qua về một khái niệm rất hay được nhắc tới trong kỹ thuật vi
xử lý – “không gian địa chỉ” Nó được hiểu là số lượng địa chỉ mà CPU có thể phânbiệt được Trong một bộ nhớ có rất nhiều ô nhớ và CPU thường phải truy nhập (ghihoặc đọc) đến từng ô nhớ cụ thể, do đó CPU tất nhiên phải phân biệt được các ônhớ riêng rẽ với nhau Mỗi ô nhớ cần phải có một địa chỉ gắn với nó Địa chỉ nàychỉ dành riêng cho ô nhớ đó, không trùng với địa chỉ của một ô nhớ nào khác, khitruy nhập tới địa chỉ đó tức là truy nhập đến ô nhớ đó Ngoài ô nhớ, trong vi xử lýcòn có một số phần cứng khác cũng cần có một địa chỉ dành riêng cho nó như các
Trang 16thanh ghi điều khiển, các thanh ghi dữ liệu… Thường thì hầu như tất cả nhữngphần cứng cần được truy nhập hay tác động đến đều phải được gắn với một haynhiều địa chỉ Lấy ví dụ, để có thể giao tiếp và điều khiển một bộ đếm(timer/counter), CPU cần phải tác động đến các thanh ghi quy định chế độ hoạtđộng, thanh ghi chứa số đếm của bộ đếm đó Các thanh ghi này đều có địa chỉ gánriêng cho chúng và nhờ các địa chỉ đó mà CPU có thể ghi/đọc giá trị của các thanhghi, qua đó tác động lên bộ đếm.
Vi xử lý hoạt động theo một số nguyên tắc cơ bản sau:
- Các thao tác tính toán xử lý sẽ được vi xử lý, hay nói đúng hơn là CPU,thực hiện theo các chỉ dẫn (chính là các lệnh) đặt trong bộ nhớ chương trình
Đương nhiên trong bộ nhớ chương trình không có những chỉ dẫn kiểu như
“hãy đưa điện áp +5VDC ra chân cổng A!” hay “dừng cái bộ đếm đó lại, đừng cho
nó đếm thêm một xung nhịp nào nữa!” hay “hãy tạm thời chờ ở đây cho đến khinào điện áp tại chân B có giá trị lôgic bằng 0!”
Đó là ngôn ngữ của con người, các vi xử lý không nghe được và đươngnhiên không hiểu được những câu đó, chúng chỉ có thể nhận biết được hai và chỉhai giá trị lôgic trái ngược nhau mà thôi Hai giá trị lôgic trái ngược nhau có thể làđen- trắng, không- có, cao- thấp… Điều đó không quan trọng, cái quan trọng là vềmặt vật lý (điện học), nhờ một cơ chế nào đó mà khi đọc nội dung của bộ nhớ hayđọc giá trị lôgic của một cổng vào ra, vi xử lý có thể phân biệt được khi nào giá trịđọc được là giá trị lôgic thứ nhất và khi nào thì không phải thế Theo truyền thốngngười ta quy định chung rằng các giá trị lôgic đó là 0 và 1 Biểu thị các giá trị lôgic
đó theo quy ước lôgic dương là điện áp cao (xấp xỉ +5VDC) cho giá trị 1 và điện ápthấp (xấp xỉ 0VDC) cho giá trị 0
Như vậy, thay vì nói với vi xử lý rằng “hãy đưa ra giá trị lôgic 1 tại châncổng A!”, người ta mã hoá câu nói đó thành một chuỗi các bit lôgic 0- 1 (ví dụ
00001010 chẳng hạn) rồi đặt trong bộ nhớ chương trình của IC CPU khi cấp nguồnnuôi sẽ đọc và tất nhiên nó hiểu cái chuỗi 0- 1 đó có nghĩa là gì và nó sẽ thực hiệntheo ý nghĩa của lệnh nó dịch ra từ chuỗi 0- 1 đó Vậy tại sao nó hiểu được? Xin trả
Trang 17lời là bạn lại lan man rồi đấy! Nó hiểu được đơn giản vì người ta chế tạo ra đã nhưthế rồi Hãy biết chấp nhận như vậy vào lúc này!
- Việc thực hiện các lệnh sẽ diễn ra tuần tự (lệnh ở địa chỉ thấp hơn đượcthực hiện trước) bắt đầu từ địa chỉ reset Địa chỉ reset là địa chỉ của bộ nhớ chươngtrình mà tại đó, sau khi được cấp nguồn nuôi, CPU sẽ bắt đầu đọc và thực hiện theochỉ dẫn được mã hóa đặt tại đó Mỗi loại vi xử lý có một địa chỉ reset riêng (thường
là từ 0000H) do nhà sản xuất quy định - Các lệnh được thực hiện tuần tự là nhờ cóthanh ghi “bộ đếm chương trình”(PC) Thanh ghi này chứa địa chỉ của ô nhớ chứa
mã của lệnh tiếp theo sẽ được thực hiện Khi CPU tìm nạp được mã của lệnh n,thanh ghi PC sẽ tự độngtăng lên 1 đơn vị để trỏ vào ô nhớ chứa mã của lệnh (n+1)
- CPU thực hiện một lệnh theo các bước nhỏ Thường thì các bước đó baogồm: tìm nạp mã lệnh (fetch- tức là truy cập bộ nhớ chương trình, đọc lấy giá trị tại
ô nhớ có địa chỉ trỏ bởi thanh ghi PC, lưu vào một thanh ghi chuyên dùng chứa mãlệnh trong CPU), giải mã lệnh (decode- giải mã giá trị đã lấy được và đang đặttrong thanh ghi chứa mã lệnh trong CPU), cuối cùng là thực hiện lệnh (execute-thực hiện chỉ dẫn được giải mã ra từ mã lệnh đọc được) Những vi xử lý đầu tiênđược thiết kế với phương thức thực hiện lệnh một cách thuần “tuần tự”, nghĩa làthực hiện tuần tự 3 bước đối với lệnh thứ n rồi mới thực hiện 3 bước tiếp theo củalệnh thứ (n+1)
Sau này, các vi xử lý được thiết kế với CPU được module hóa thành từngphần riêng biệt có hoạt động khá độc lập với nhau, do đó mà cấu trúc xử lý đườngống (pipeline) ra đời Với cấu trúc này, các bước nhỏ trong việc thực hiện các lệnh
sẽ được gối lên nhau, trong khi một phần cứng của CPU thực hiện bước 3 (thựchiện
lệnh) của lệnh n thì một phần cứng khác của CPU thực hiện việc giải mãlệnh tiếp theo (lệnh thứ n+1), và đồng thời một phần cứng khác nữa trong CPU tìmnạp mã của lệnh thứ (n+2)
Với cấu trúc xử lý đường ống, tốc độ xử lý của CPU đã được nâng cao rõ rệt
và tất cả những vi xử lý ngày nay đều được thiết kế với CPU theo cấu trúc xử lýnày
Trang 18- Ngăn xếp(Stack): Là một đoạn bộ nhớ (thường đặt trong RAM) dùng đểchứa địa chỉ trở về của trong các trường hợp chương trình con hoặc chương trìnhphục vụ ngắt được gọi Ngoài ra ngăn xếp còn dùng để lưu các dữ liệu tạm thời.Ngăn xếp hoạt động theo cơ chế “vào sau ra trước” (LIFO- Last In First Out).Thanh ghi con trỏ ngăn xếp (SP- Stack Pointer) là thanh ghi có nội dung là địa chỉcủa ô nhớ trên cùng của ngăn xếp Giá trị của SP được tăng giảm một cách tự động.Ngăn xếp là phần cứng vô cùng quan trọng trong vi xử lý, nó tham gia vào các thaotác rẽ nhánh (trừ thao tác nhảy) của chương trình Người lập trình phải hết sức cẩnthận khi gán giá trị khởi tạo cho SP để tránh sự cố tràn ngăn xếp hoặc ngăn xếptrùng với các vùng nhớ lưu dữ liệu khác Khi xảy ra một trong các sự cố trên, sẽkhông có cách nào kiểm soát được hoạt động của vi xử lý và có thể gây thiệt hạilớn đối với hệ thống Giống như một trò chơi, khi bạn tham gia và vì một lý do nào
đó phạm vào một trong hai lỗi đó, tất cả những gì bạn sẽ nhận được trên màn hình
là dòng chữ “GAME OVER”!
- Vậy thế nào là địa chỉ trở về? Như đã nói ở trên, vi xử lý thực hiện cáclệnh một cách tuần tự: lệnh 1, lệnh 2,…, lệnh n, lệnh n+1…Tuy nhiên đôi khi nógặp phải một lệnh gọi chương trình con và do đó phải chuyển sang thực hiệnchương trình con đó Đoạn mã lệnh của chương trình con thường nằm ở một nơikhác trong bộ nhớ chương trình, tức là có địa chỉ không liên tiếp với lệnh gọichương trình con Nhắc lại rằng thanh ghi PC lúc này đang chứa địa chỉ của lệnhtiếp sau lệnh gọi chương trình con CPU chỉ biết thực hiện những gì có tại địa chỉchứa trong PC, do vậy mà PC cần phải được nạp giá trị mới là địa chỉ của mã lệnhđầu tiên của chương trình con Việc nạp giá trị mới cho PC được thực hiện mộtcách tự động khi bạn gọi một chương trình con, ngoài ra địa chỉ của lệnh tiếp saulệnh gọi chương trình con trong chương trình chính cũng được tự động lưu lại đểsau khi thực hiện xong chương trình con, CPU sẽ có thể quay lại thực hiện tiếpchương trình chính một cách đúng chỗ, tuần tự như không có chuyện gì xảy ra Nơilưu giữ một cách tự động địa chỉ trở về (địa chỉ của lệnh tiếp sau lệnh gọi chươngtrình con) ấy chính là ngăn xếp Người ta thực hiện việc chia chương trình chínhthành các chương trình con (là các đoạn chương trình thực hiện một nhiệm vụ cụthể) để dễ dàng cho việc lập trình và dò lỗi Bạn sẽ dần có được kỹ năng chia nhỏ
Trang 19chương trình chính thành các chương trình con một cách hợp lý trong quá trình lậptrình cho vi xử lý.
- Ngăn xếp cũng có vai trò tương tự như đối với ngắt Vậy ngắt là gì? Đó lànhững yêu cầu do các ngoại vi (là các phần cứng tích hợp trên IC hoặc các tác động
từ bên ngoài) gửi tới CPU nhằm đòi hỏi những đáp ứng nhất định Mục đích củaviệc thiết kế cơ chế ngắt trong vi xử lý là nhằm tiết kiệm thời gian cho CPU Tronghầu hết các trường hợp, vi xử lý cần phải thực hiện nhiều nhiệm vụ trong thời gianrất ngắn và liên tục Để có thể đáp ứng kịp thời với các sự kiện cần xử lý, CPU cóthể tiến hành thăm dò polling) liên tục các sự kiện để xem khi nào chúng xảy ra thì
xử lý, đáp ứng lại Tuy nhiên nếu làm vậy thì lãng phí rất nhiều thời gian của CPUtrong khi còn có rất nhiều nhiệm vụ khác đang chờ được thực hiện, ngoài ra CPUkhông thể thăm dò nhiều sự kiện cùng một lúc được Người ta tạo ra ngắt để CPUkhông phải thăm dò liên tục một hay nhiều sự kiện đó Bằng cách ghép các sự kiệncần đáp ứng với các cơ chế ngắt khác nhau, khi một sự kiện nào đó xảy ra, phầncứng phụ trách ngắt tích hợp trên CPU sẽ tự động báo cho CPU biết rằng sự kiện
đã xảy ra CPU sẽ dừng công việc đang làm lại (nhưng phải thực hiện xong lệnhđang được thực hiện, dù mới chỉ ở giai đoạn tìm nạp mã lệnh), và chuyển sang đápứng bằng cách thực hiện chương trình phục vụ ngắt tương ứng Đáp ứng xong, tức
là xử lý xong sự kiện gây ra ngắt, CPU sẽ tiếp tục quay lại làm tiếp công việc đangdang dở (đương nhiên là nhờ hoạt động của ngăn xếp) Nói đến ngắt không thểkhông nói đến mức ưu tiên của các loại ngắt khác nhau Có 02 loại mức ưu tiênngắt cơ bản là ưu tiên giữa các ngắt xảy ra đồng thời (ngắt A và ngắt B xảy ra đồngthời cùng một lúc) và ưu tiên giữa các ngắt xảy ra khác thời điểm (đang thực hiệnchương trình phục vụ ngắt A thì lại xảy ra ngắt B) Trong cả hai trường hợp, ngắt
có mức ưu tiên cao hơn sẽ luôn được phục vụ ngay lập tức Tùy loại vi xử lý màmức ưu tiên có thể thay đổi được linh hoạt hoặc cố định - Khác với chương trìnhcon, thời điểm thực hiện chương trình phục vụ ngắt trong hầu hết các trường hợp lànằm ngoài sự kiểm soát của người lập trình do ngắt có thể xảy ra bất kỳ thời điểmnào, khi CPU đang thực hiện bất kỳ một lệnh nào trong chương trình chính Vì thế
cơ chế hoạt động một cách tự động của ngăn xếp là không thể thiếu trong một vi xử
lý Cũng vì thế mà cần phải xem xét kỹ lưỡng việc sử dụng các tài nguyên (thanhghi, ô nhớ, biến, thậm chí là các ngoại vi) của các chương trình phục vụ ngắt để
Trang 20tránh tranh chấp với chương trình chính Thông thường thì khi vào đầu chươngtrình phục vụ ngắt, người ta lưu lại những tài nguyên dùng chung đó trước khi thayđổi chúng Kết thúc chương trình phục vụ ngắt, các tài nguyên sẽ được khôi phụclại giá trị của chúng trước khi trở về chương trình chính Thực hiện các thao tác lưutrữ và khôi phục này đương nhiên liên quan đến ngăn xếp, chỉ có điều không phảithực hiện một cách tự động bởi CPU mà phải do người lập trình chủ động thực hiệnbằng các lệnh Người lập trình phải quyết định cất những gì và lấy ra những gì!Cũng phải chú ý đến cơ chế hoạt động “vào sau ra trước” của ngăn xếp và cất đibao nhiêu thì phải lấy ra bấy nhiêu Nếu không bạn sẽ phạm phải một lỗi tương tựnhư tràn ngăn xếp và chỉ có Chúa mới biết được chuyện gì sẽ xảy ra khi địa chỉ trở
về không được nạp đúng vào thanh ghi PC
Một trong những tài nguyên hay bị thay đổi khi thực hiện chương trình phục
vụ ngắt là các cờ trạng thái của CPU Đó là các bit thể hiện trạng thái hiện thời củaCPU và của kết quả thực hiện các lệnh Các cờ này thường được ghép với nhauthành một thanh ghi và được gọi là thanh ghi trạng thái
1.5 Lập trình cho một VXL
Sau khi thiết kế xong phần cứng, bạn phải tiến hành lập trình cho vi xử lý đểhoàn thiện sản phẩm của mình Vi xử lý có thể được lập trình bằng ngôn ngữ bậccao hay ngôn ngữ bậc thấp Ngôn ngữ bậc thấp là ngôn ngữ được thiết kế riêng chotừng loại vi xử lý và thường được gọi là hợp ngữ (Assembly) Ngôn ngữ bậc cao làcác ngôn ngữ gần với ngôn ngữ của con người và giống nhau cho nhiều loại vi xử
lý Mỗi loại ngôn ngữ đều có ưu và nhược điểm riêng Với những người mới bắtđầu nghiên cứu về kỹ thuật vi xử lý, theo kinh nghiệm của riêng bản thân, tôi chorằng nên bắt đầu với ngôn ngữ bậc thấp Có một số điểm đáng lưu ý khi bạn lậptrình cho một vi xử lý Đó là: - Trước tiên bạn phải hiểu rõ được các chế độ địa chỉcủa vi xử lý đó Chế độ địa chỉ chính là cách chỉ ra toán hạng nằm ở đâu Toánhạng là các tham số, các hằng số, các ô nhớ, các thanh ghi, các bit, các cờ…hay nóichung là các đối tượng tham gia vào việc thực hiện lệnh Thông thường thì mộttoán hạng (ví dụ như một thanh ghi) có thể được trỏ đến bằng một vài chế độ địachỉ khác nhau Mỗi chế độ địa chỉ có thế mạnh riêng của nó và tùy từng trường hợp
Trang 21mà ta nên chọn chế độ thích hợp khi lập trình - Sau đó bạn phải nắm bắt được tậplệnh (Instruction Set) của vi xử lý đó Tập lệnh là tất cả những lệnh mà vi xử lý cóthể hiểu được, có thể thực hiện được Mỗi lệnh đều được mã hóa (hay được quyước) bởi một chuỗi các bit 0 và 1 Các vi xử lý khác nhau thì có tập lệnh khác nhau
do nhà sản xuất chip cung cấp
Trước khi bắt đầu viết các lệnh cụ thể, bạn nên viết lưu đồ thuật toán thựchiện các nhiệm vụ cụ thể Lưu đồ thuật toán là sơ đồ diễn giải trình tự thực hiện cácnhiệm vụ một cách lôgic và liền mạch Viết lưu đồ thuật toán ngay cả cho cácchương trình hết sức đơn giản là một thói quen rất tốt ngay cả khi bạn đã là một caothủ trong lập trình vi xử lý Chỉ cần mất chút thời gian thực hiện công việc này, bạn
sẽ có được cái nhìn vừa bao quát vừa chi tiết đối với chương trình mình định viết,nhờ đó mà bạn lập trình nhanh hơn, hiệu quả hơn và dễ dàng phát hiện ra lỗi vềthuật toán xử lý nếu chương trình chạy không như ý muốn Đối với bản thân tôi mànói, tôi cho rằng viết các dòng lệnh cho một vi xử lý không phải là khó, ngược lại
nó rất dễ, cái khó là bạn phải biết được mình phải viết những gì hay nói đúng hơn
là phải tìm ra một lưu đồ thuật toán đúng đắn Khi đã tìm ra con đường đi đúng vàhiệu quả, tất cả những gì còn lại phải làm là thể hiện các thao tác xử lý đó bằngcách lệnh của vi xử lý - một công việc mà bất cứ ai nắm rõ tập lệnh của vi xử lý đóđều có thể làm tốt Khi lưu đồ thuật toán bạn lập ra là đúng, nếu sau khi lập trình
mà vi xử lý hoạt động không như mong muốn thì lỗi chỉ có thể là do bạn chưa thểhiện bằng các ḍng lệnh một cách đúng đắn những gì đã lập ra mà thôi Dần dần,kinh nghiệm tích lũy được sẽ chỉ cho bạn cách thể hiện đúng một lưu đồ bất kỳthậm chí ngay ở lần đầu tiên và theo như cách chúng tôi vẫn nói đùa trong chuyênmôn, trình độ lập trình của bạn đã đạt đến cấp độ “plug and play”!
Chương trình sẽ được viết trong một file mã nguồn (thường có đuôi làASM) - Phần mềm trên máy tính có tên là “Trình biên dịch” (Compiler) sẽ dịchfile mã nguồn sang một file có đuôi là OBJ File này chứa thông tin cần thiết để cóthể chuyển đổi sang file có đuôi HEX hay file có đuôi BIN (là các file chứa mãchương trình đã được chuyển sang dạng Hexa hay Binary) để có thể nạp vào trong
bộ nhớ chương trình của vi xử lý
Trang 22Trong khi lập trình, hãy đặc biệt lưu ý đến các tình huống rẽ nhánh củachương trình Các tình huống đó bao gồm các lệnh nhảy vô điều kiện, các lệnhnhảy có điều kiện, các lệnh gọi chương trình con, các tình huống xảy ra ngắt vàđương nhiên phải chú ý đến các phần cứng liên quan như ngăn xếp hay các cờtrạng thái - Với mỗi loại vi xử lý/vi điều khiển lại có nhiều hãng cung cấp cácphần mềm trên máy tính dùng để soạn thảo và biên dịch Các phần mềm này có các
từ khóa khác nhau mà người lập trình phải tuân thủ khi sử dụng Từ khóa là các kýhiệu được thể hiện bằng các ký tự, được viết trong file mã nguồn nhưng nó khôngphải là lệnh của vi xử lý, đương nhiên không được dịch ra mã máy, đó chỉ là cácchỉ dẫn cho phần mềm trên máy tính thực hiện biên dịch các file mã nguồn sang mãmáy một cách chính xác
Trang 23Chương 2: BỘ VI XỬ LÝ 64 BIT CỦA INTEL VÀ CÁC THẾ HỆ VXL
2.1 Tổng quan về bộ vi xử lý 64 bit của Intel
Hầu hết các CPU được thiết kế để các nội dung của một sổ đăng ký sốnguyên duy nhất có thể lưu trữ các địa chỉ (địa điểm) của datum bất kỳ trong bộnhớ ảo của máy tính Vì vậy, tổng số địa chỉ trong bộ nhớ ảo - tổng số tiền của dữliệu máy tính có thể giữ khu vực làm việc của nó - được xác định bởi chiều rộngcủa các đăng ký Bắt đầu từ những năm 1960 với IBMSystem/360 (mà là mộtngoại lệ, ở chỗ nó sử dụng thứ tự thấp 24 bit của một từ cho các địa chỉ, kết quảtrong 16 MB [16 × 1024 2 byte] kích thước không gian địa chỉ), sau đó ( giữa nhiềungười khác) tháng mười haiVAXmáy tính mini trong năm 1970, và sau đóvới Intel 80386 vào giữa những năm 1980, một sự đồng thuận trên thực tế pháttriển là 32 bit là một kích thước đăng ký thuận tiện A 32- bit địa chỉ đăng ký cónghĩa là 2 32 địa chỉ, hoặc 4 GB bộ nhớ RAM , có thể được tham chiếu Đồng thờinhững kiến trúc này đã được nghĩ ra, 4 GB bộ nhớ là vượt xa số lượng tiêu biểu (4MB) trong cài đặt này được coi là đủ "khoảng không" để giải quyết 4,29 tỷ địa chỉ
đã được coi là một kích thước thích hợp để làm việc với một lý do quan trọng khác:4,29 tỷ số nguyên là đủ để giao tài liệu tham khảo duy nhất cho hầu hết các thựcthể trong các ứng dụng như cơ sở dữ liệu
Hình 2.1: Vi xử lý của Intel
Một số siêu máy tính kiến trúc của những năm 1970 và 1980 sử dụng sổ đăng
ký lên đến 64 bit rộng Trong giữa những năm 1980, Intel i860 phát triển đã bắt đầulên đến đỉnh điểm (quá muộn phát hành năm 1989 cho Windows NT) Tuy nhiên,
Trang 2432 bit vẫn là chỉ tiêu cho đến đầu những năm 1990, khi giảm liên tục trong chi phícủa bộ nhớ để cài đặt với số lượng tiếp cận RAM 4 GB, và việc sử dụng khônggian bộ nhớ ảo trên 4 GB trần đã trở thành mong muốn xử lý một số loại của cácvấn đề Trong phản ứng, MIPS và DEC phát triển kiến trúc bộ vi xử lý 64- bit, banđầu cho máy trạm và máy chủ máy cao cấp Đến giữa những năm 1990, hệ thốngmáy tính HAL , Sun Microsystems , IBM , Silicon Graphics , và HewlettPackard đã phát triển kiến trúc 64- bit cho máy trạm và hệ thống máy chủ Mộtngoại lệ đáng chú ý xu hướng này là máy tính lớn của IBM, mà sau đó được sửdụng 32- bit dữ liệu và kích cỡ địa chỉ 31- bit, các máy tính lớn của IBM đã khôngbao gồm bộ vi xử lý 64- bit cho đến năm 2000 Trong những năm 1990, bộ vi xử lý64- bit một số chi phí thấp đã được sử dụng trong ngành điện tử tiêu dùng và cácứng dụng nhúng Đáng chú ý, Nintendo 64 vàPlayStation 2 có bộ vi xử lý 64- bittrước khi giới thiệu của họ trong máy tính cá nhân Máy in cao cấp và thiết bịmạng, cũng như máy tính công nghiệp, cũng được sử dụng bộ vi xử lý 64- bit,chẳng hạn như các thiết bị hiệu ứng lượng tử R5000 Tính toán 64- bit bắt đầu trôidạt xuống máy tính để bàn máy tính cá nhân từ năm 2003 trở đi, khi một số môhình trong các dòng Macintosh của Applechuyển sang bộ xử lý PowerPC 970 (gọi
là "G5" của Apple), và AMD đã phát hành 64- bit đầu tiên của nó x86 64 bộ vi xửlý.Các vi xử lý Pentium thuộc thế hệ thứ vi xử lý 32- bit, tức là chúng có độ rộngbus dữ liệu ngoài là 32- bit tạo môi trường phát triển phầm mềm 32- bit.Đến naymôi trường tính toán 64- bit đang trở thành xu thế thay thế dần môi trường tính toán32- bit.Từ năm 2000 một thế hệ vi xử lý mới có cấu trúc 64- bit đã ra đời nhằm đápứng nhu cầu này.Đó là các vi xử lý IA- 64 và EM- 64T của INTEL.Hãng AMDcũng có các vi xử lý 64- bit như Opteron và Arthlon 64 dựa trên kiến trúc x86-64.Các bộ xử lý này có các tệp lớn hơn, hệ điều hành quản lý dung lượng bộ nhớ vàđĩa cứng lớn hơn, nhờ đó phần mềm có thể chạy nhanh hơn so với môi trường 32-bit.Cấu trúc vi xử lý IA- 64 ( INTEL Architecture) là một ví dụ được thiết kế với
bú địa chỉ 64- bit, cho phép định địa chỉ không gian bộ nhớ tuyến tính lên đến 16exabyte ( 264 =16x260 byte).Bus dữ liệu rộng 64- bit cho phép truy xuất 8 byte mộtnhịp đồng hồ.Bộ tính dấu chấm động cũng có độ chính xác rất cao.Như truyềnthống, vi xử lý IA- 64 cũng có tập lệnh tương thích với các vi xử lý thế hệ trước.Nócũng tiếp thu và phát triển các khả năng như dự đoán rã nhánh, suy đoán, tiên đoán
Trang 25IA- 64 có nhiều đến 128 thanh ghi đa năng 64- bit dùng cho các phép tính sốnguyên và phép tính còn một tệp các thanh ghi 64- bit khác như thanh ghi 82 bitcho các phép tính dấu chấm dộng.Ngoài ra thanh ghi ứng dụng các cấu trúc IA- 32
và IA- 64,vv…
Vi xử lý IA- 64 vẫn cho phép các mã lệnh của vi xử lý 32- bit ch”ạy trên nền
hê điều hành 64 bit mới.Do đó nó có 2 môi trường hệ điều hành cơ bản:
- Môi trường làm IA- 32, dùng cho các hệ điều hành thế hệ trước nhưWindows 98, NT…
- Môi trường IA- 64, dùng cho các hệ điều hành mới 64bit
Với các đặc điểm như trên, IA- 64 có thể hoạt động trong các chế độ:
- Chế độ thực 32bit trong môi trường 64 bit ( do hệ điều hành quyết định)
- Chế độ bảo vệ 32 bit trong môi trường 64 bit ( do hệ điều hành quyết định)
- Chế độ ảo 32 bit trong môi trường 64 bit ( do hệ điều hành quyết định)
- Các ứng dụng 64 bit trên hệ điều hành 64 bit
Tuy các bộ vi xử lý 64 bit đã thực hiện trên thị trường một thời gian nhưngviệc chấp nhận chúng diễn ra khác chaamk chủ yếu do thiếu phần mềm chạy trênnền 64 bit dể cả hệ điều hành.Tuy nhiên nền tảng 64- bit đang có được lực đẩy nhờ
cố gắng kết hợp của cả các công ty phần cứng , phần mềm.Hãng Microsoft cũng đãcho ra mắt phiên bản 64- bit của Windows gọi là Windows XP Professional x64Edition và Windows Server 2003 x64 Edition với ưu điểm so với Windows 32- bit
về tốc độ xử lý và khả năng quản lý bộ nhớ lớn hơn
Trang 26- AMD AMD64 phần mở rộng (được sử dụng trong xử lý Athlon
64 , Opteron , Sempron , Turion 64 , Phenom , Athlon II và Phenom II bộ xử lý)
- Của Intel Intel 64 phần mở rộng (được sử dụng trong mớihơn Celeron , Pentium , và bộ vi xử lý Xeon , Intel Core 2/i3/i5/i7 bộ vi xử lý, vàtrong một số bộ vi xử lý Atom )
- VIA Technologies , 64- bit mở rộng, được sử dụng trong VIA Nano bộ vi
xử lý
- Các phiên bản 64- bit của kiến trúc điện :
- Power7 bộ xử lý POWER6 và IBM
- IBM PowerPC 970 bộ xử lý
- Cell Broadband Engine được sử dụng trong PlayStation 3 , được thiết kếbởi IBM, Toshiba và Sony , kết hợp một bộ xử lý kiến trúc 64- bit Power với bảyhay tám Synergistic Processing Elements
- IBM " Xenon "bộ vi xử lý được sử dụng trong MicrosoftXbox 360 baogồm 64- bit PowerPC lõi
- Kiến trúc SPARC V9:
- UltraSPARC bộ vi xử lý của Sun
- SPARC64 bộ vi xử lý của Fujitsu
- Z của IBM / Kiến Trúc , một phiên bản 64- bit của ESA/390 kiến trúc,được sử dụng trong IBM eServer zSeries và System zmáy tính lớn
- Kiến trúc IA- 64 của Intel (được sử dụng trong Itanium bộ vi xử lý)
- MIPS64 kiến trúcMIPS Technologies