Giáo trình kiến trúc máy tính Đại học Công nghiệp Hà Nội

Download giáo trình kiến trúc máy tính PDF ✓ Giáo trình kiến trúc máy tính đại học Cần Thơ, đại học Công Nghiệp, Bách Khoa ✓ giáo trình kiến trúc máy tính Vũ Đức Lung, Võ Văn Chín ✓ Giáo trình môn kiến trúc máy tính ✓ File Word, PDF ✓ Tải xuống miễn phí Full tài liệu kiến trúc máy tính link Google Drive.

Giáo trình kiến trúc máy tính Đại học Công nghiệp Hà Nội

XEM TRƯỚC 10 TRANG

TẢI FULL TÀI LIỆU 

GIỚI THIỆU TÀI LIỆU

Nhan đề Giáo trình kiến trúc máy tính
Tác giả TS. Vũ Đức Lung
Năm xuất bản 2009
Nhà xuất bản Đại học Công Nghệ Thông Tin 
Tóm tắt

Cuốn Giáo trình kiến trúc máy tính do TS. Vũ Đức Lung biên soạn là tài liệu học tập dành cho sinh viên ngành công nghệ thông tin năm nhất trường Đại học Công Nghệ Thông Tin. Giáo trình gồm 8 chương trình bày các vấn đề chung nhất, các thành phần cơ bản nhất cấu thành nên máy tính.  

Mục lục
  • Chương I: Giới thiệu 
  • Chương II: Các bộ phận cơ bản của máy tính 
  • Chương III: Biểu diễn dữ liệu 
  • Chương IV: Mạch Logic số 
  • Chương V: Mạch tuần tự 
  • Chương VI: Kiến trúc bộ lệnh 
  • Chương VII: Tổ chức bộ xử lý 
  • Chương VIII: Hệ thống bộ nhớ 

XEM TRƯỚC 10 TRANG

TẢI FULL TÀI LIỆU 

>>Giáo trình kiến trúc máy tính Đại học Cần Thơ - CTU, Võ Văn Chính PDF

GIỚI THIỆU TÀI LIỆU

Nhan đề Giáo trình kiến trúc máy tính
Tác giả
  • Msc. Võ Văn Chín 
  • ThS. Nguyễn Hồng Vân 
  • KS Phạm Hữu Tài 
Năm xuất bản 2003
Nhà xuất bản Đại học Cần Thơ
Tóm tắt

Cuốn giáo trình kiến trúc máy tính này được biên soạn trong khuôn khổ dự án ASVIET002CNTT "Tăng cường hiệu quả đào tạo và năng lực tự đào tạo của sinh viên khoa Công nghệ Thông tin - Đại học Cần thơ"

Giáo trình trang bị cho người đọc những kiến thức về lịch sử phát triển máy tính, các thành phần cơ bản cấu thành hệ thống máy tính, khái niệm về kiến trúc máy tính, tập lệnh, giới thiệu cấu trúc của bộ xử lý trung tâm, chức năng và các nguyên lý hoạt động của các cấp bộ nhớ máy tính, các thiết bị lưu trữ ngoài,...

Mục lục
  • Giới thiệu tổng quan giáo trình kiến trúc máy tính 
  • Chương I: Đại cương 
  • Chương II: Kiến trúc phần mềm bộ xử lý 
  • Chương III. Tổ chức bộ xử lý 
  • Chương IV. Các cấp bộ nhớ 
  • Chương V. Nhập - xuất 

XEM TRƯỚC 10 TRANG

TẢI FULL TÀI LIỆU 

>>Giáo trình kiến trúc máy tính Nguyễn Trung Đồng PDF

GIỚI THIỆU TÀI LIỆU

Nhan đề Giáo trình kiến trúc máy tính
Tác giả Nguyễn Trung Đồng 
Năm xuất bản Đang cập nhật
Nhà xuất bản Đang cập nhật
Tóm tắt

Cuốn giáo trình kiến trúc máy tính do Nguyễn Trung Đồng biên soạn là tài liệu học tập dành cho sinh viên học ngành Công nghệ thông tin tại các trường Đại học và cũng là  tài liệu có thể dùng làm tham khảo cho những ai quan tâm hay yêu thích tìm hiểu những kiến thức cơ bản của lĩnh vực chuyên môn này. 

Giáo trình trình gồm 8 chương, bày những vấn đề lý thuyết và những thành phần cơ bản nhất, chung nhất của kiến trúc máy tính. 

Mục lục
  • Chương I. Những kiến thức cơ bản 
  • Chương II. Giới thiệu chung 
  • Chương III. Kiến trúc Trung tâm xử lý (CPU)
  • Chương IV. Chương trình và thực hiện chương trình 
  • Chương V. Liên kết các thành phần chức năng - bus
  • Chương VI. Kiến trúc bộ nhớ 
  • Chương VII. Thiết bị ngoại vi của máy tính 
  • Chương VIII. Kỹ thuật và công cụ phát triển phần mềm máy tính 

>> Tham khảo thêm các tài liệu kiến trúc máy tính sau đây:

Trường Đại học công nghiệp hà nộiKhoa công nghệ thông tin-------  -------Bài tập lớnMô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ỘVXL 64 BIT CỦA INTELGiáo viên: Ths Nguyễn Tuấn TúNhóm số: 7Lớp: 0503126002Hà nội, 2019Trường Đại học công nghiệp hà nộiKhoa công nghệ thông tin-------  -------Bài tiểu luậnMô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ỘVXL 64 BIT CỦA INTELGiáo viên: Ths Nguyễn Tuấn TúSinh viên thực hiện:1. Vũ Thị Lanh2. Trần Thúy Nga3. Vũ Thị Phượng4. Hoàng Thị Thư5. Đỗ Thị Thanh ThủyLớp: 0503126002Hà nội, 2019Mục lụcLời nói đầu........................................................................................................- 1 CHƯƠNG 1: Tổng quan về bộ VXL của Intel.................................................- 2 1.1.Khái niệm................................................................................................- 2 1.2.Lịch sử ra đời của bộ VXL......................................................................- 3 1.3.Cấu trúc phần cứng của bộ VXL.............................................................- 5 1.4.Nguyên lý hoạt động của bộ VXL..........................................................- 8 1.5.Lập trình cho một VXL.........................................................................- 11 CHƯƠNG 2: Bộ vi xử lý 64 bit của Intel và các thế hệ VXL........................- 13 2.1.Tổng quan về bộ vi xử lý 64 bit của Intel.............................................- 13 2.2.Kiến trúc bộ vi xử lý 64 bit...................................................................- 14 2.3.64 Bit dữ liệu mô hình...........................................................................- 16 2.4. 64 Bit điều hành hệ thống thời gian.....................................................- 17 2.5.Kiến trúc Itanium (Merced): 2001........................................................- 20 2.6.Kiến trúc Intanium 2: 2002-2010..........................................................- 20 2.7.Itanium 9300 (Tkwila):2010.................................................................- 22 2.8. P4 Prescott (năm 2004)........................................................................- 22 2.9. Pentium D (năm 2005).........................................................................- 23 2.10. Pentium Extreme Edition (năm 2005)................................................- 23 2.11. Intel Core 2 Duo.................................................................................- 24 CHƯƠNG 3: Nguyên lí làm việc của bộ vi xử lí 64 bit của Intel..................- 25 3.1.Sơ đồ khối.............................................................................................- 25 3.2.Nguyên lý làm việc của bộ nhớ Cache L1............................................- 25 3.3.Cách tổ chức và nguyên lý làm việc bộ nhớ Cache L2.........................- 27 3.4.Tổ chức cache nhớ L3...........................................................................- 28 3.5.Độ rộng Bus dữ liệu và Bus địa chỉ (Data Bus và Add Bus)................- 29 3.6.Tốc độ sử lý và tốc độ Bus của CPU.....................................................- 29 3.7.Nguyên lý làm việc của các thanh ghi...................................................- 30 3.8.Khối xử lý trung tâm ALU....................................................................- 31 3.9.Quy trình xử lý thông tin.......................................................................- 32 3.10.Con trỏ ngăn xếp SP(Stack)................................................................- 32 3.11.Khối điều khiển CU.............................................................................- 33 Kết luận...........................................................................................................- 35 -Danh mục bảngBảng 1: Mô hình dữ liệu 64 bit............................................................- 16 Danh mục hìnhHình 2.1:Bộ vi xử lý Itanium...............................................................- 20 Hình 2.2:Bộ xử lý Itanium tháng 2 năm 2003.....................................- 21 Hình 2.3: Kiến trúc Pentium D ( năm 2005 ).......................................- 23 Hình 2.4.Kiến trúc Intel core TM duo.................................................- 24 Hình 3.1:Sơ đồ khối của bộ vi xử lý....................................................- 25 Hình 3.2:Bộ nhớ Cache L1..................................................................- 25 Hình 3.3: Cách bản đồ hóa trực tiếp các làm việc của Cache L2........- 27 Hình 3.4:Minh họa CPU có 12 đường truyền dữ liệu gọi là Data Bus - 29 Hình 3.5:Minh họa về tốc độ xử lý (speed CPU) và tốc độ Bus (FSB) củaCPU......................................................................................................- 29 Hình 3.6:Bộ tính toán ALU..................................................................- 31 Hình 3.7:Quy trình xử lý thông tin......................................................- 32 Hình 3.8: Con trỏ ngăn xếp SP............................................................- 32 Hình 3.9:Khối điều khiển CU..............................................................- 33 -Lời nói đầuTừ thủa xa xưa, con người đã biết dùng những cục đá, khúc cây để tínhtoán. Sau rồi đến những công cụ tính toán cổ xưa như bàn tính gảy. Nhưng trongthời đại khoa học kỹ thuật phát triển, do nhu cầu tính toán ngày càng cao củacon người, những công cụ thô sơ không còn đáp ứng được nữa, những công cụtính toán sử dụng điện đầu tiên ra đời với hơn trăm transistor, đã giải quyết đượcmột số phép tính đơn giản. Từ đó, máy tính tiếp tục được phát triển với tốc độngày càng nhanh và nhỏ hơn rất nhiều do sử dụng vi mạch tích hợp, gọi là bộ vixử lý.Bộ Vi Xử Lý, viết tắt CPU (tiếng anh Central Processing Unit, có nghĩa làĐơn vị xử lý trung tâm). Trước khi xuất hiện các bộ vi xử lý, các CPU được xâydựng từ các mạch tích hợp cỡ nhỏ riêng biệt, mỗi mạch tích hợp chỉ chứakhoảng vào chục tranzito. Do đó, một CPU có thể là một bảng mạch gồm hàngngàn hay hàng triệu vi mạch tích hợp. Ngày nay, công nghệ tích hợp đã pháttriển, một CPU có thể tích hợp lên một hoặc vài vi mạch tích hợp cỡ lớn, mỗi vimạch tích hợp cỡ lớn chứa hàng ngàn hoặc hàng triệu tranzito. Nhờ đó công suấttiêu thụ và giá thành của bộ vi xử lý đã giảm đáng kể.Sự tiến hóa của các bộ vi xử lý một phần nhờ vào việc chạy theo Định luậtMoore và hiệu suất của nó tăng lên một cách ổn định sau hàng năm. Định luậtnày phát biểu rằng sự phức tạp của một mạch tích hợp sẽ tăng lên gấp đôi saumỗi chu kỳ 18 tháng. Và thực tế, sự phát triển của các bộ vi xử lý đã bám sátđịnh luật này từ những năm 1970. Nhờ đó, từ máy tính mẹ (mainframecomputer) lớn nhất cho đến các máy tính xách tay hiện nay đều sử dụng một bộvi xử lý nhỏ nhắn tại trung tâm của chúng.Có nhiều loại CPU, do nhiều hãng sản xuất khác nhau với nhiều mục đíchsử dụng. Sau đây sẽ chỉ nói đến bộ vi xử lý 64 bit của Intel, do hãng Intel thiếtkế và sản xuất. Bài làm không thể tránh được còn nhiều thiếu sót, mong thầy côvà các bạn góp ý thêm. Chúng em xin chân thành cảm ơn!Nhóm sinh viên thực hiện!1CHƯƠNG 1: Tổng quan về bộ VXL của Intel1.1.Khái niệmCPU viết tắt của chữ Central Processing Unit (tiếng Anh), tạm dịch là đơnvị 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ìnhvi tính và dữ kiện. CPU có nhiều kiểu dáng khác nhau. Ở hình thức đơn giảnnhất, CPU là một con chip với vài chục chân. Phức tạp hơn, CPU được ráp sẵntrong các bộ mạch với hàng trăm con chip khác. CPU là một mạch xử lý dữ liệutheo chương trình được thiết lập trước. Nó là một mạch tích hợp phức tạp gồmhà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áccông nghệ vi điện tử, công nghệ tích hợp và khả năng xử lý theo chương trìnhvà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ểncủa công nghệ vi xử lý, các chip (hay các vi xử lý) được chế tạo chỉ tích hợpnhững phần cứng thiết yếu như CPU cùng các mạch giao tiếp giữa CPU và cácphần cứng khác. Trong giai đoạn này, các phần cứng khác (kể cả bộ nhớ) thườngkhô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ứngnày được gọi là các ngoại vi (Peripherals). Về sau, nhờ sự phát triển vượt bậccủ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ích hợp thêm các ngoại vi là các “vi điềukhiển”. Việc tích hợp thêm các ngoại vi vào trong cùng một IC với CPU tạo ranhiều lợi ích như làm giảm thiểu các ghép nối bên ngoài, giảm thiểu số lượnglinh 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ếtkế, nâng cao hiệu suất và tính linh hoạt.21.2.Lịch sử ra đời của bộ VXLBộ 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ản xuấ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ích hợp.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à Santa Clata đã đượ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àkhoa 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,John Pardeen, Walter Brattian đã mời giám đốc các trung tâm nghiên cứu đến đểgiới thiệu một bộ khuếch đại rất lạ. Ba nhà khoa học này đang nghiên cứu về cácchất bán dẫn - những tinh thể có một đặc điểm vật lý rất quan trọng: chỉ chodòng điện lư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ằngthép, gọi là transistor. Transistor nhỏ hơn đèn chân không 50 lần, tiết kiệm nănglượ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ónglê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ỉ đạocủa Shockley, các nhà khoa học trẻ rất khó phát triển. Năm 1957, cuộc xung độtbùng nổ: tám nhà khoa học (đứng đầu là Bob Noyce 27 tuổi - tiến sĩ khoa họcthuộc viện công nghệ Massachusetts) quyết định ly khai, thành lập một bộ phậnnghiên cứu chất bán dẫn trong tập đoàn Fairchild Camera and Instrument ởMountain Wiew. 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ười Anh Dummer. Ngay từ năm 1952, Dummer đã dự định chếtạo một mô hình các linh kiện điện tử, bao gồm nhiều lớp vật lý cách điện, dẫnxuất, điều chỉnh và khuếch đại âm thanh tốt. Cũng trong thập niên 50, một nhànghiên cứu tên là Jack Kilby 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ỏ mangnhiều transistor, nhưng nhà khoa học Bob Noyce đã chế tạo một loại sản phẩmtương tự, được gọi là mạch tích hợp (IC - Integrated Circuit). Sản phẩm này baogồm nhiều transistor trên mặt phẳng cực nhỏ (vài mm 2), có thể lưu trữ thông tin,thay đổi dữ liệu, thực hiện được các phép tính đại số: đó là 'con rệp'.3Sả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ụctransistor đắ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ốđưa con 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ải trang 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ích hợp đắt tiền nhưng cơ quan hàng không vũ trụ Mỹ và lầu 5 góc vẫnduyệt chi kinh phí. Còn 'con rệp' được sản xuất hàng loạt lên giá thành ngàycàng hạ. Ở Mountain Wiew, tám nhà khoa học trẻ của tập đoàn Fairchild ngàycàng giàu sụ. Dù vậy, năm 1968, hai nhà khoa học Gordon Moore và Bob Noycequyết định nghỉ 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à khoa học trẻ, phần lớn dưới 30 tuổi. Ngườithứ 12 gia nhập Intel tên là Marcian Ted Hoff, sinh tại Rochester (bang NewYork), tiến sĩ thuộc trường đại học Standford. Mới 31 tuổi nhưng Hoff đã có rấtnhiề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 đếnSilicon Valley. Cùng thời gian ấy, công ty Busicom của Nhật Bản dự định liênkết với Intel sản xuất mạch in của một loại máy tính mới. Bob Noyce chỉ địnhHoff làm việc với cá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ấtphức tạp. Thế là vài ngày sau, Hoff đề xuất với Busicom phương pháp sản xuấtmáy tính bằng cách tập hợp các mạch tích hợp có những chức năng cơ bản củamáy tính. Trên một diện tích có mỗi cạnh 0,5 cm là 2000 transistor mang nhiềuchức năng: bộ phần xử lý trung tâm, mạch bộ nhớ ROM (Read Only Memory)chứa chương trình cho sẵn để tính toán, một bộ nhớ RAM (Random AccessMemory) - 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ý. Đây quả là sáng kiến thiên tài: một máy điện toán trênmột 'con rệp' duy nhất. Chỉ còn thiế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 đượckí kết, dành độc quyền khai thác cho Busicom. Hai kỹ sư điện tử khác tên làMazor và Frederico Faggin cùng tham gia xây dựng dự án bộ vi xử ký. Vàotháng 1 năm 1971, bộ vi xử lí đầu tiên được ra đời, mang số hiệu 4004. Tháng11 năm 1971, tạp chí Tin tức điện tửcông bố chính thức sản phẩm 4004. Trongthời gian ấy, Intel mua lại bản quyền bộ vi xử lí của Busicom.4Sau 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ủasản phẩm ấy trong tương lai”. Riêng đối với Bob Noyce, ông đã nảy ra ý tưởngsẽ ứng dụng bộ vi xử lí vào một vài lĩnh vực hoạt động có tính chất phổ cập dễsinh lợi. Còn Gordon Moore đã phát biểu trong thập niên 60 câu nói nổi tiếngsau này được gọi là định luật Moore: “Cứ sau 18 tháng, tốc độ và sức mạnh củabộ tích hợp lại được tăng gấp đôi”. Năm 1971, bộ vi xử lí 4004 có 2300transistor. Năm 1993, bộ vi xử lí Pentium của Intel có 3,1 triệu transistor. Tháng8 năm 1999, Pentium III của Intel có 21 triệu transistor chạy ở tốc độ 600 MHz.Tháng 3 năm 2000 tốc độ của bộ vi xử lí đạt tớ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ớitốc độ 2 GHz được Intel giới thiệ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ăm1972 (lần thứ 2). Bob Noyce cũng đã qua đời vào năm 1990. Còn GordonMoore và Ted Hoff vẫn tiếp tục chỉ đạo Intel ở Silicon Valley, xây dựng Intel trởthành tập đoàn sả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ộ VXLVề cơ bản kiến trúc của một vi xử lý gồm những phần cứng sau:- Đơ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ể giaotiế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ínhiệ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ềukhiể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ốitừ 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ợpcác đường tín hiệu có cùng chức năng gọi là các bus. Như vậy ta có các bus địachỉ, bus dữ liệu và bus điều khiển.Sau đây là mô tả sơ bộ về các phần cứng bên trong một vi xử lý.1. Đơn vị xử lý trung tâm CPU: CPU có cấu tạo gồm có đơn vị xử lý số họcvà lôgic (ALU), các thanh ghi, các khối lôgic và các mạch giao tiếp. Chức năng5của CPU là tiến hành các thao tác tí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ện một nhiệm vụ nào đó do người lập trình đưara thông qua các lệnh (Instructions).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 CPUthực hiện một nhiệm vụ nào đó. Thông thường thì bộ nhớ chương trình là cácloại bộ nhớ “không bay hơi” (non-volatile), nghĩa là không bị mất nội dung chứabên trong khi ngừng cung cấp nguồn nuôi. Có thể kể ra một số bộ nhớ thuộc loạinà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ộcloại dữ liệu mà bộ nhớ loại nà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.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ếp vớ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 rahay đọc vào chỉ có thể được biểu diễ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ôgic0 ứ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 songthường gồm 08 đường vào/ra khác nhau và gọi là các cổng 08 bit. Các đường tínhiệu và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ừngchâ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áccổ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 đặc biệt liên quan đến các ngoại vi khác.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 bitdữ 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ùngmộ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ệubằng cổng nối tiếp phải tuân theo một cơ chế, một giao thức hay một nguyên tắcnhất định. Có thể kể ra một số giao 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ột xung 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ịpriê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đọc mứ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à6nhậ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 đó. Songcông: thiết bị có thể truyền và nhận dữ liệu đồng thời.5. Bộ đếm/Bộ định thời: Đây là các ngoại vi được thiết kế để thực hiện mộtnhiệm vụ đơn giản: đếm các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầuvào đếm thì giá trị của bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếmtiế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 trongIC. Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên trong IC và cáclinh kiện phụ bên ngoài nối với IC. Ta có thể ví đó là “nhịp tim” để toàn bộ cácphần cứ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ời gian một cách khá chính xác. Xung nhịp bên ngoài IC. Đó là các tínhiệ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ợp này người ta gọi là các bộ đếm (counters). Ứng dụng phổ biếncủ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ênbăng chuyền, đếm xe ra/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ễnvà quay 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áclà khối giao tiếp bus. Khối này có chức năng ghép nối giữa các bus bên trongchip và các châ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ều khiển ra ngoài là nhằm mở rộng khả năng phối ghép thêm của vixử lý với các ngoạ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ài chip, 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ợpcủa vi xử lý 8088, bus dữ liệu bên trong là 16 bit nhưng đưa ra ngoài chỉ có 8bit). 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ùng mộ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ợp này, tín hiệu địa chỉ sẽ xuấthiện trước, sau đó là tín hiệu dữ liệu trên cùng một tập hợ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ấp cho 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ựckhi tín hiệu dữ liệu xuất hiện trên bus. Các IC thích hợp với việc tách tín hiệuđịa chỉ và dữ liệu là các IC thuộc họ 74xx373/374 hoặc 74xx573/574.71.4.Nguyên lý hoạt động của bộ VXLTrướ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 vixử lý – “không gian địa chỉ”. Nó được hiểu là số lượng địa chỉ mà CPU có thểphân biệt được. Trong một bộ nhớ có rất nhiều ô nhớ và CPU thường phải truynhập (ghi hoặ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ày chỉ dành riêng cho ô nhớ đó, không trùng với địa chỉ của một ô nhớnào khác, khi truy 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ànhriêng cho nó như các thanh ghi điều khiển, các thanh ghi dữ liệu… Thường thìhầu như tất cả những phần cứng cần được truy nhập hay tác động đến đều phảiđược gắn với một hay nhiều địa chỉ. Lấy ví dụ, để có thể giao tiếp và điều khiểnmột bộ đếm (timer/counter), CPU cần phải tác động đến các thanh ghi quy địnhchế độ hoạt động, thanh ghi chứa số đếm của bộ đếm đó. Các thanh ghi này đềucó địa chỉ gán riêng cho chúng và nhờ các địa chỉ đó mà CPU có thể ghi/đọc giátrị của các thanh ghi, 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à đương nhiê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ộtcơ chế nào đó mà khi đọc nội dung của bộ nhớ hay đọc giá trị lôgic của mộtcổ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ống ngườ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 đó theoquy ước lôgic dương là điện áp cao (xấp xỉ +5VDC) cho giá trị 1 và điện áp thấ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 ragiá trị lôgic 1 tại chân cổng A!”, người ta mã hoá câu nói đó thành một chuỗi cácbit lôgic 0-1 (ví dụ 00001010 chẳng hạn) rồi đặt trong bộ nhớ chương trình củaIC. CPU khi cấp nguồn nuô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ện theo ý 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ả lờ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àolú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được thực hiện trước) bắt đầu từ địa chỉ reset. Địa chỉ reset là địa chỉ của bộ nhớchương trình mà tại đó, sau khi được cấp nguồn nuôi, CPU sẽ bắt đầu đọc và8thực hiện theo chỉ 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ươngtrì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ùngchứa mã lệnh trong CPU), giải mã lệnh (decode-giải mã giá trị đã lấy được vàđang đặt trong 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ầntự”, 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 3bước tiếp theo của lệ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ệncá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ước3 (thực hiệ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ệcgiả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ữatrong CPU tìm nạ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. - 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ươngtrình phụ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ạmthời. Ngăn xếp hoạt động theo cơ chế “vào sau ra trước” (LIFO-Last In FirstOut). 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ộtcách tự động. Ngăn xếp là phần cứng vô cùng quan trọng trong vi xử lý, nó thamgia vào các thao tác rẽ nhánh (trừ thao tác nhảy) của chương trình. Người lậptrình phải hết sức cẩn thận khi gán giá trị khởi tạo cho SP để tránh sự cố trànngăn xếp hoặc ngăn xếp trùng với các vùng nhớ lưu dữ liệu khác. Khi xảy ramộ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 vixử lý và có thể gây thiệt hại lớn đối với hệ thống. Giống như một trò chơi, khibạ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ữnggì 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ơi9khá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 địachỉ chứa trong PC, do vậy mà PC cần phải được nạp giá trị mới là địa chỉ củamã lệnh đầu tiên của chương trình con. Việc nạp giá trị mới cho PC được thựchiện một cách tự động khi bạn gọi một chương trình con, ngoài ra địa chỉ củalệnh tiếp sau lệ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ạithực hiện tiếp chươ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ơi lưu giữ một cách tự động địa chỉ trở về (địa chỉ của lệnhtiếp sau lệnh gọi chương trình con) ấy chính là ngăn xếp. Người ta thực hiệnviệc chia chương trình chính thành các chương trình con (là các đoạn chươngtrì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ạnsẽ dần có được kỹ năng chia nhỏ chương trình chính thành các chương trình conmột cách hợp lý trong quá trình lập trì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ủa việc thiết kế cơ chế ngắt trong vi xử lý là nhằm tiết kiệm thời gian choCPU. Trong hầ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 gian rất ngắn và liên tục. Để có thể đáp ứng kịp thời với các sự kiệncần xử lý, CPU có thể tiến hành thăm dò polling) liên tục các sự kiện để xem khinà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ấtnhiều thời gian của CPU trong khi còn có rất nhiều nhiệm vụ khác đang chờđược thực hiện, ngoài ra CPU khô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 để CPU không phải thăm dò liên tục một hay nhiềusự kiện đó. Bằng cách ghép các sự kiện cần đáp ứng với các cơ chế ngắt khácnhau, khi một sự kiện nào đó xảy ra, phần cứng phụ trách ngắt tích hợp trênCPU sẽ tự động báo cho CPU biết rằng sự kiện đã xảy ra. CPU sẽ dừng côngviệ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ớichỉ ở giai đoạn tìm nạp mã lệnh), và chuyển sang đáp ứng bằng cách thực hiệnchương trình phục vụ ngắt tương ứng. Đáp ứng xong, tức là xử lý xong sự kiệngây ra ngắt, CPU sẽ tiếp tục quay lại làm tiếp công việc đang dang dở (đươngnhiên là nhờ hoạt động của ngăn xếp). Nói đến ngắt không thể không nói đếnmức ưu tiên của các loại ngắt khác nhau. Có 02 loại mức ưu tiên ngắ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 đồng thời cùngmộ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ện chươngtrì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 ưutiên có thể thay đổi được linh hoạt hoặc cố định.- Khác với chương trình con, 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ìnhdo ngắt có thể xảy ra bất kỳ thời điểm nào, khi CPU đang thực hiện bất kỳ mộtlệnh nào trong chương trình chính. Vì thế cơ chế hoạt động một cách tự động10củ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ảixem xét kỹ lưỡng việc sử dụng các tài nguyên (thanh ghi, ô 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 để tránh tranh chấp vớichương trình chính. Thông thường thì khi vào đầu chương trì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ếtthúc chương trình phục vụ ngắt, các tài nguyên sẽ được khôi phục lại giá trị củachúng trước khi trở về chương trình chính. Thực hiện các thao tác lưu trữ 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ải thựchiệ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ươngtự 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 địachỉ 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ìnhphụ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ệnthời của CPU và của kết quả thực hiện các lệnh. Các cờ này thường được ghépvới nhau thà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 VXLSau 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ậc cao 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 cho từng loại vi xử lý và thường được gọi là hợp ngữ (Assembly). Ngônngữ 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 chonhiều loại vi xử lý. Mỗi loại ngôn ngữ đều có ưu và nhược điểm riêng. Vớinhững người mới bắt đầu nghiên cứu về kỹ thuật vi xử lý, theo kinh nghiệm củariêng bản thân, tôi cho rằ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ập trì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án hạ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ói chung là các đốitượng tham gia vào việc thực hiện lệnh. Thông thường thì một toán hạng (ví dụnhư một thanh ghi) có thể được trỏ đến bằng một vài chế độ địa chỉ 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 mà ta nênchọn chế độ thích hợp khi lập trình.- Sau đó bạn phải nắm bắt được tập lệ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 cungcấ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ện11các nhiệm vụ một cách lôgic và liền mạch. Viết lưu đồ thuật toán ngay cả chocác chươ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 cao thủ trong lập trình vi xử lý. Chỉ cần mất chút thời gian thực hiện côngviệ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ìnhmình định viết, nhờ đó mà bạn lập trình nhanh hơn, hiệu quả hơn và dễ dàngphá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ảiviế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ằng cá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ậttoá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 dòng lệnh mộtcách đúng đắn những gì đã lập ra mà thôi. Dần dần, kinh nghiệm tích lũy đượcsẽ chỉ cho bạn cách thể hiện đúng một lưu đồ bất kỳ thậm chí ngay ở lần đầutiên và theo như cách chúng tôi vẫn nói đùa trong chuyên môn, trình độ lập trìnhcủ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ứamã chương trình đã được chuyển sang dạng Hexa hay Binary) để có thể nạp vàotrong bộ nhớ chương trình của vi xử lý.- Trong 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ác phầnmề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ông phải là lệnh của vi xử lý, đương nhiên không được dịch ra mã máy, đó chỉlà các chỉ 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.12CHƯƠNG 2: Bộ vi xử lý 64 bit của Intel và các thế hệ VXL2.1.Tổng quan về bộ vi xử lý 64 bit của IntelHầ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ủadữ 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ềurộng của các đăng ký. Bắt đầu từ những năm 1960 với IBM System/360 (mà làmột ngoại lệ, ở chỗ nó sử dụng thứ tự thấp 24 bit của một từ cho các địa chỉ, kếtquả trong 16 MB [16×10242 byte] kích thước không gian địa chỉ), sau đó (giữanhiều người khác) tháng mười hai VAX má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ựctế phát triển là 32 bit là một kích thước đăng ký thuận tiện. A 32-bit địa chỉ đăngký có nghĩa là 232 địa chỉ, hoặc 4 GB bộ nhớ RAM, có thể được tham chiếu.Đồng thời nhữ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 (4 MB) trong cài đặt này được coi là đủ “khoảng không” để giảiquyết. 4,29 tỷ địa chỉ đã được coi là một kích thước thích hợp để làm việc vớimột lý do quan trọng khác: 4,29 tỷ số nguyên là đủ để giao tài liệu tham khảoduy nhất cho hầu hết các thực thể trong các ứng dụng như cơ sở dữ liệu.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 đầu lên đến đỉnh điểm (quá muộn phát hành năm 1989 cho WindowsNT). Tuy nhiên, 32 bit vẫn là chỉ tiêu cho đến đầu những năm 1990, khi giảmliê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ông gian 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ác vấn đề. Trong phản ứng, MIPS và DEC phát triển kiếntrúc bộ vi xử lý 64-bit, ban đầu cho máy trạm và máy chủ máy cao cấp. Đếngiữa những năm 1990, hệ thống máy tính HAL, Sun Microsystems, IBM,Silicon Graphics và Hewlett Packard đã phát triển kiến trúc 64-bit cho máy trạmvà hệ thống máy chủ. Một ngoại lệ đáng chú ý xu hướng này là máy tính lớn củaIBM, mà sau đó được sử dụng 32-bit dữ liệu và kích cỡ địa chỉ 31-bit, các máytính lớn của IBM đã không bao gồm bộ vi xử lý 64-bit cho đến năm 2000. Trongnhững năm 1990, bộ vi xử lý 64-bit một số chi phí thấp đã được sử dụng trongngành điện tử tiêu dùng và các ứng dụng nhúng. Đáng chú ý, Nintendo64 vàPlayStation 2 có bộ vi xử lý 64-bit trước khi giới thiệu của họ trong máytí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ượngtử R5000 . Tính toán 64-bit bắt đầu trôi dạ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 Macintoshcủ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ộng bus dữ liệungoài là 32-bit tạo môi trường phát triển phầm mềm 32-bit. Đến nay môi trườngtính toán 64-bit đang trở thành xu thế thay thế dần môi trường tính toán 32-bit.13Từ năm 2000 một thế hệ vi xử lý mới có cấu trúc 64-bit đã ra đời nhằm đáp ứngnhu cầu này. Đó là các vi xử lý IA-64 và EM-64T của INTEL. Hãng AMD cũngcó các vi xử lý 64-bit như Opteron và Arthlon 64 dựa trên kiến trúc x86-64. Cácbộ 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à đĩacứng lớn hơn, nhờ đó phần mềm có thể chạy nhanh hơn so với môi trường 32bit. Cấu trúc vi xử lý IA-64 ( INTEL Architecture) là một ví dụ được thiết kế vớibus địa chỉ 64-bit, cho phép định địa chỉ không gian bộ nhớ tuyến tính lên đến16 exabyte ( 264 =16x260 byte).Bus dữ liệu rộng 64-bit cho phép truy xuất 8 bytemột nhịp đồng hồ. Bộ tính dấu chấm động cũng có độ chính xác rất cao. Nhưtruyền thố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 IA-64 có nhiều đến 128 thanh ghi đa năng 64-bit dùng cho cácphé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 bit cho các phép tính dấu chấm dộng. Ngoài ra thanh ghi ứng dụngcá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ềnhê đ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 chậm 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 đẩynhờ 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 Microsoftcũng đã cho ra mắt phiên bản 64-bit của Windows gọi là Windows XPProfessional x64 Edition và Windows Server 2003 x64 Edition với ưu điểm sovới Windows 32-bit về tốc độ xử lý và khả năng quản lý bộ nhớ lớn hơn.2.2.Kiến trúc bộ vi xử lý 64 bitKiến trúc bộ vi xử lý 64-bit mà bộ vi xử lý hiện đang được sản xuất (tínhđến tháng 1 năm 2011) bao gồm:14- Phần mở rộng 64-bit được tạo ra bởi bộ xử lý AMD của x86 Intel kiếntrúc (sau này được cấp phép của Intel), thường được gọi là “x86-64”, “AMD64”hoặc “x64”:- 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ới hơ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ộ vixử 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 Microsoft Xbox 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, đượcsử dụng trong IBM eServer zSeries và System z má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úc MIPS TechnologiesHầu hết các kiến trúc bộ vi xử lý 64-bit được bắt nguồn từ kiến trúc bộ vixử lý 32-bit có thể thực thi mã cho phiên bản 32-bit của kiến trúc nguyên bảnmà không có bất kỳ hình phạt hiệu suất. Hình thức hỗ trợ thường được gọilà vòm hỗ trợ hai hoặc nhiều hơn nói chung đa vòm hỗ trợ. Intel đã rộng rãi tàiliệu các tập lệnh và kiến trúc Itanium ,và báo chí kỹ thuật đã cung cấp tổngquan.Kiến trúc đã được đổi tên nhiều lần trong lịch sử của nó. HP ban đầu đượcgọi là PA-WideWord. Intel sau này gọi là IA-64, sau đó xử lý Kiến trúcItanium (IPA), trước khi giải quyết trên Kiến trúc Intel Itanium, nhưng nó vẫncòn được gọi là IA-64.Nó là một kiến trúc 64-bit đăng ký giàu một cách rõ ràng song song. Từ cơsở dữ liệu là 64 bit, byte địa chỉ. Địa chỉ hợp lý không gian là 264 byte. Kiến trúcthực hiện sự thuyết pháp, đầu cơ và dự đoán rẽ nhánh. Nó sử dụng một phầncứng thay đổi tên đăng ký cơ chế chứ không phải là cửa sổ đăng ký đơn giản cho15việc đi qua tham số. Các cơ chế tương tự cũng được sử dụng để cho phép thựchiện song song của các vòng. Đầu cơ, dự đoán, sự thuyết pháp, và đổi tên làdưới sự kiểm soát của trình biên dịch: mỗi từ lệnh bao gồm các bit thêm chođiều này. Cách tiếp cận này là đặc tính phân biệt của kiến trúc.Kiến trúc thực hiện 128 số nguyên đăng ký, 128 điểm nổi đăng ký, 64-bitvị, và tám chi nhánh đăng ký. Sổ đăng ký dấu chấm động 82 bit dài để bảo vệ độchính xác cho kết quả trung gian.2.3.64 Bit dữ liệu mô hìnhTrong chương trình 32-bit, con trỏ và các kiểu dữ liệu như số nguyênthường có cùng độ dài; không nhất thiết phải đúng sự thật trên máy 64-bit. Trộncác loại dữ liệu trong các ngôn ngữ lập trình như C và con cháu như C++ và Objective-C do đó có thể hoạt động trên 32-bit triển khai thực hiện nhưngkhông phải trên 64-bit triển khai.Trong nhiều môi trường lập trình C và C++ có nguồn gốc từ ngôn ngữ trênmáy 64-bit, “int” biến vẫn còn rộng 32 bit, nhưng số nguyên dài và con trỏ là 64bit rộng. Chúng được mô tả là có 1 LP64 mô hình dữ liệu. Một lựa chọn khác làdữ liệu ILP64 mô hình trong đó cả ba kiểu dữ liệu rộng 64 bit, và thậmchí SILP64 nơi “ngắn” số nguyên 64 bit rộng. Tuy nhiên, trong nhiều trườnghợp các sửa đổi cần thiết là tương đối nhỏ và đơn giản, và nhiều chương trìnhbằng văn bản cũng có thể chỉ đơn giản được biên dịch lại cho các môi trườngmới mà không thay đổi. Một lựa chọn khác là mô hình LLP64, trong đó duy trìkhả năng tương thích với mã 32-bit bằng cách để lại cả int và dài 32-bit. “LL”dùng để chỉ “dài dài số nguyên” loại, đó là ít nhất 64 bit trên tất cả các nền tảng,bao gồm cả môi trường 32-bit.Bảng 1: Mô hình dữ liệu 64 bitMô hình Ngắn (sốDài (số Lâu Con trỏIntdữ liệu nguyên)nguyên) dài /size_tLLP64 /IL32P6416323264Hệ điều hành mẫu64Windows (X64/IA-64)LP64 /I32LP641632646464Hầu hết các hệthống Unix và Unix giống như,ví dụ như Solaris, Linux,và Mac OS X, z/OSILP641664646464HAL hệ thống máy tính cổngcủa Solaris để SPARC64SILP646464646464Unicos16Nhiều trình biên dịch 64-bit ngày nay sử dụng mô hình LP64 (bao gồmSolaris, AIX , HP-UX , Linux, Mac OS X , FreeBSD, và IBM z/OS trình biêndịch bản địa). Microsoft Visual C++, trình biên dịch sử dụng mô hình LLP64.Những bất lợi của mô hình LP64 là lưu trữ dài vào một tràn may int. Mặt khác,đúc một con trỏ đến một thời gian dài sẽ làm việc. Trong mô hình LLP, ngượclại là đúng sự thật. Đây không phải là vấn đề có ảnh hưởng đến đầy đủ mã phùhợp tiêu chuẩn, nhưng mã thường được viết với giả định ngầm về độ rộng củacác kiểu nguyên.Lưu ý rằng một mô hình lập trình là một sự lựa chọn thực hiện trên một cơsở cho mỗi trình biên dịch, và một số có thể cùng tồn tại trên cùng một hệ điềuhành. Tuy nhiên, mô hình lập trình được lựa chọn là mô hình chính cho các APIhệ điều hành thường chiếm ưu thế.Xem xét khác là mô hình dữ liệu được sử dụng cho trình điều khiển. Trìnhđiều khiển phần lớn các mã hệ điều hành trong các hệ thống điều hành hiện đạinhất (mặc dù nhiều người có thể được nạp khi hệ thống điều hành đangchạy). Nhiều lái xe sử dụng con trỏ mạnh để thao tác dữ liệu, và trong một sốtrường hợp có tải con trỏ của một kích thước nhất định vào các phần cứng hỗtrợ DMA . Ví dụ, 1 trình điều khiển cho 1 thiết bị PCI 32-bit yêu cầu các thiết bịdữ liệu DMA vào các khu vực trên bộ nhớ 1 máy 64-bit của không đáp ứng yêucầu từ hệ điều hành để tải dữ liệu từ thiết bị bộ nhớ cao hơn các rào cản gigabyte4, bởi vì các con trỏ cho những địa chỉ không phù hợp với các DMA đăng kýcủa thiết bị. Vấn đề này được giải quyết bằng cách có hệ điều hành các hạn chếbộ nhớ của thiết bị vào tài khoản khi tạo yêu cầu trình điều khiển cho DMA,hoặc bằng cách sử dụng một IOMMU.2.4. 64 Bit điều hành hệ thống thời gian1985: UNICOS Cray phát hành, 64-bit đầu tiên thực hiện các hệ thốngUnix điều hành.1993: Tháng mười hai phát hành 64-bit Tháng Mười Hai OSF/1 AXP Unixnhư hệ điều hành (sau này đổi tên Tru64 UNIX) cho hệ thống của mình dựa trênkiến trúc Alpha.1994: Hỗ trợ cho các bộ xử lý MIPS R8000 được thêm vào bởi SiliconGraphics IRIX hệ thống hoạt động trong 6,0 phát hành.1995: OpenVMS Tháng Mười Hai phiên bản 7.0, phiên bản 64-bit đầy đủđầu tiên của OpenVMS cho Alpha. Linux 64-bit đầu tiên phân phối cho kiếntrúc Alpha được phát hành.1996: Hỗ trợ cho các bộ xử lý MIPS R4000 được thêm vào bởi SiliconGraphics IRIX hệ thống điều hành trong phiên bản 6.2.1998: Sun phát hành Solaris 7, với đầy đủ 64-bit UltraSPARC hỗ trợ.172000: IBM phát hành z/OS, hệ điều hành 64-bit xuống từ MVS, mới 64-bitmáy tính lớn zSeries, Linux 64-bit trên zSeries sau việc phát hành CPU gần nhưngay lập tức.2001: Microsoft phát hành Windows XP 64-Bit Edition cho kiến trúc củaItanium 64 IA, mặc dù nó đã có thể chạy các ứng dụng 32-bit thông qua một lớpthực hiện.2001: Linux sẽ trở thành hạt nhân hệ điều hành đầu tiên hỗ trợ đầy đủ x8664 (trên một giả lập, như là không có bộ vi xử lý x86-64 đã được phát hành).2003: Apple phát hành Mac OS X 10.3 “Panther” hệ điều hành có thêm hỗtrợ cho số học có nguồn gốc số nguyên 64-bit trên bộ vi xử lý PowerPC 970.Một số Linux phân phối phát hành với sự hỗ trợ cho AMD64. Microsoft công bốkế hoạch tạo ra một phiên bản của nó điều hành Windows hệ thống để hỗ trợkiến trúc AMD64, với khả năng tương thích ngược với các ứng dụng 32-bit.FreeBSD phát hành với sự hỗ trợ cho AMD64.2005: Ngày 31 tháng 1, Sun phát hành Solaris 10 với sự hỗ trợ cho bộ vi xửlý AMD64 và EM64T. Ngày 29 Tháng 4, Apple phát hành Mac OS X10,4 “Tiger” cung cấp hỗ trợ giới hạn cho các ứng dụng 64-bit dòng lệnh trêncác máy tính với bộ vi xử lý PowerPC 970, sau đó phiên bản dành cho máy Macnền Intel hỗ trợ các ứng dụng dòng lệnh 64-bit trên máy tính Mac với EM64Tbộ vi xử lý. Ngày 30 tháng tư, Microsoft phát hành Windows XP Professionalx64 Edition cho bộ vi xử lý AMD64 và EM64T.2006: Microsoft phát hành Windows Vista, bao gồm cả một phiên bản 64bit cho các bộ vi xử lý AMD64/EM64T giữ lại 32-bit tương thích. Trong phiênbản 64-bit, tất cả các ứng dụng Windows và các thành phần là 64-bit, mặc dùnhiều cũng có phiên bản 32-bit bao gồm khả năng tương thích với các plugin.2007: Apple phát hành Mac OS X 10.5 “Leopard”, hỗ trợ đầy đủ các ứngdụng 64-bit trên máy PowerPC 970 hoặc các bộ vi xử lý EM64T.2009: Apple phát hành Mac OS X 10.6 “Snow Leopard”, mà đi kèm vớimột hạt nhân 64-bit cho AMD64/Intel64 bộ vi xử lý, mặc dù chỉ có một số môhình gần đây của máy tính của Apple sẽ chạy hạt nhân 64-bit theo mặc định.Hầu hết các ứng dụng đi kèm với hệ điều hành Mac OS X 10.6 bây giờ cũng 64bit.Microsoft phát hành Windows 7, trong đó, giống như Windows Vista, baogồm một phiên bản 64-bit đầy đủ cho AMD64/Intel 64 bộ xử lý, hầu hết cácmáy tính mới được nạp theo mặc định với một phiên bản 64-bit. Nó cũng pháthành Windows Server 2008 R2, là hệ thống 64-bit đầu tiên điều hành chỉ đượcphát hành bởi Microsoft.2011: Apple phát hành Mac OS X 10,7, “Sư tử”, chạy hạt nhân 64-bit theomặc định trên máy được hỗ trợ. Máy cũ không thể chạy hạt nhân 64-bit chạy hạtnhân 32-bit, nhưng, như với phiên bản trước đó, vẫn có thể chạy các ứng dụng64-bit, Lion không hỗ trợ các máy tính với bộ vi xử lý 32-bit. Gần như tất cả các18ứng dụng đi kèm với hệ điều hành Mac OS X 10,7 bây giờ cũng 64-bit, bao gồmcả iTunes.2.5.Kiến trúc Itanium (Merced): 2001Hình 2.1:Bộ vi xử lý ItaniumThời gian Itanium được phát hành vào tháng 6 năm 2001, hiệu quả của nólà không tốt hơn cạnh tranh RISC và CISC xử lý.Tốc độ 733Mhz đến 800Mhz,FSI tốc độ 266 MT/S, cache L2: 96kb, bộ nhớ cache L3: 2M hoặc 4M. Ổ cắmPAC418, tên lõi: Merced, Itanium cạnh tranh ở các cấp thấp (chủ yếu là 4-CPUvà hệ thống nhỏ hơn) với các máy chủ dựa trên x86 xử lý, và cao cấp với điệnkiến trúc của IBM và Sun Microsystems SPARC kiến trúc. Intel Itanium đổi vịtrí để tập trung vào kinh doanh cao cấp và HPC tính toán, cố gắng nhân bảnthành công của “ngang” x86 thị trường (tức là, kiến trúc duy nhất, các nhà cungcấp nhiều hệ thống). Sự thành công của phiên bản bộ xử lý này ban đầu đượcgiới hạn để thay thế PA-RISC trong các hệ thống HP, Alpha Compaq hệ thốngvà MIPS SGI hệ thống, mặc dù IBM cũng cung cấp một siêu máy tính dựa trênbộ vi xử lý này. POWER và SPARC vẫn mạnh mẽ, trong khi kiến trúc x86 32bit tiếp tục phát triển thành không gian doanh nghiệp, xây dựng nền kinh tế củaquy mô được thúc đẩy bởi cơ sở của nó cài đặt rất lớn.Chỉ có một vài ngàn hệ thống sử dụng bộ xử lý Itanium Merced ban đầuđược bán ra, do hiệu suất tương đối nghèo, chi phí cao và sẵn có phần mềm hạnchế.Nhận thức được rằng việc thiếu các phần mềm có thể là một vấn đề nghiêmtrọng cho tương lai, Intel đã thực hiện hàng ngàn những hệ thống đầu có sẵn chocác nhà cung cấp phần mềm độc lập (ISV) để kích thích phát triển. HP và Intelđã mang lại thế hệ tiếp theo của Itanium 2 bộ xử lý để thị trường một năm sauđó.2.6.Kiến trúc Intanium 2: 2002-201019Hình 2.2:Bộ xử lý Itanium tháng 2 năm 2003Bộ vi xử lý Itanium 2 được phát hành trong năm 2002, và được bán trênthị trường cho các máy chủ doanh nghiệp chứ không phải là âm giai toàn bộmáy tính cao cấp. Xử lý Itanium 2, tên mã là McKinley, được phối hợp pháttriển bởi HP và Intel. Nó nhẹ nhõm rất nhiều vấn đề hiệu suất của bộ vi xử lýItanium ban đầu, chủ yếu là gây ra bởi một hệ thống phụ bộ nhớ không hiệuquả. McKinley chứa 221 triệu bóng bán dẫn (trong đó 25 triệu là cho logic), đođược 19,5 mm 21,6 mm (421 mm 2) đã được chế tạo ở 180 nm, số lượng lớn quátrình CMOS với sáu lớp của metallization nhôm. Itanium được thiết kế bơi Intel,CPU đồng hồ tốc độ từ 900Mhz đến 1.73Ghz có bộ chỉ dẫn Itanium, lõi 1.2 đến1.4.Cache L2 256kb trên Itanium 2, 256kb (D) + 1Mib (I) hoặc 512kib(I)(Itanium 2 9x00 loạt). Bộ nhớ Cache từ 1.5MB đến 24MB. Ổ cắm: PAC611, FCLGA6 (LGA1248) (Itanium 9300 loạt).Năm 2003, AMD đã phát hành Opteron, thực hiện kiến trúc của riêng 64bit (x86-64). Opteron được chấp nhận nhanh chóng trong không gian máy chủdoanh nghiệp bởi vì nó cung cấp một bản nâng cấp dễ dàng từ x86. Intel phảnứng bằng cách thực hiện của nó Xeon bộ vi xử lý x86-64 trong năm 2004.Intel phát hành thành viên một gia đình mới Itanium 2, tên mãlà Madison, vào năm 2003. Madison sử dụng nm 130 và là cơ sở của tất cả cácbộ xử lý Itanium mới cho đến khi Montecito được phát hành vào tháng 6 năm2006.Trong tháng 3 năm 2005, Intel đã thông báo rằng nó đã được làm việc trênmột bộ xử lý Itanium mới có tên mã là Tukwila, sẽ được phát hành trong năm2007. Tukwila sẽ có bốn nhân xử lý và sẽ thay thế các xe buýt Itanium vớimột giao diện hệ thống thông thường, mà cũng sẽ được sử dụng bởi một bộ xửlý Xeon mới.Cuối năm đó, Intel đã điều chỉnh ngày giao hàng của Tukwila đếncuối năm 2008.Trong tháng 11 năm 2005, các Itanium nhà sản xuất máy chủ lớn tham giavới Intel và một số nhà cung cấp phần mềm để tạo thành các Itanium SolutionsAlliance để thúc đẩy kiến trúc và đẩy nhanh porting phần mềm. Liên minh đãthông báo rằng các thành viên sẽ đầu tư $ 10 tỷ trong các giải pháp Itanium bởicuối thập kỷ này.20