TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA :KHOA HỌC MÁY TÍNH
*
* *
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
Nhóm thực hiện: Nhóm 4
Lớp: ĐH KHMT1 – K6
Thành viên trong nhóm:
1. Lê Văn Hiệu
2. Trần Trung Hiếu
3. Nguyễn Duy Hồi
4. Đào Nguyên Hiếu
Hà Nội, Năm 2012
2
Mục lục
Chương 1:Tổng quan về bộ VXL của Intel 4
1.1.Khái niệm 4
1.2.Lịch sử ra đời của bộ VXL 5
1.3.Cấu trúc phần cứng của bộ VXL 7
1.4.Nguyên lý hoạt động của bộ VXL 10
1.5.Lập trình cho một VXL 14
Chương 2:Bộ vi xử lý 64 bit của Intel và các thế hệ bộ VXL 17
2.1.Tổng quan về bộ vi xử lý 64 bit của Intel 17
2.2.Kiến trúc bộ vi xử lý 64 bit 18
2.3.64 bit dữ liệu mô hình 22
2.4.64 bit điều hành hệ thống thời gian 24
2.5.Itanium (Merced):2001 27
Hình 3.2: Bộ nhớ Cache L1 34
Hình 3.3: Cách bản đồ hóa trực tiếp các làm việc của Cache L2 36
Hình 3.6: Minh họa về tốc độ xử lý (speed CPU) và tốc độ Bus (FSB) của CPU 40
Hình 3.8: Bộ tính toán ALU 42
Hình 3.9: Quy trình xử lý thông tin 43
Hình 3.10: Con trỏ ngăn xếp SP 44
Hình 3.11: Khối điều khiển CU 45
Tài liệu tham khảo 47
4
Chươ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ột
con 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ới
hàng trăm con chip khác. CPU là một mạch xử lý dữ liệu theo 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ồ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ếu
như CPU cùng các mạch giao tiếp giữa CPU và các phần cứng khác. Trong giai
đ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ích hợ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ào trong
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ối bên
nhiều nhàkhoa học nổi tiếng thời ấy. Nhưng dưới quyền chỉ đạo của Shockley, các
nhà khoahọc trẻ rất khó phát triển. Năm 1957, cuộc xung đột bùng nổ: tám nhà khoa
học(đứng đầu là Bob Noyce 27 tuổi - tiến sĩ khoa học thuộc viện cô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ọcngười Anh
6
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à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ỏ mang nhiều transistor, nhưng nhà khoa họ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ềutransistor trên mặt phẳng cực nhỏ (vài mm2),
có thể lưu trữ thôngtin, thay đổi dữ liệu, thực hiện được các phép tính đại số: đó là
'con rệp'.
Sản phẩm mới của Bob Noyce đã làmcho thế giới điện tử bàng hoàng. Cho đến thời
gian ấy, máy tính bao gồm hàngnghìn transistor được liên kết với nhau bằ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áy tí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ạiduy 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íchhợp lại chính là nhà du hành vũ trụ Yuri Gararin 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ámhiểm mặt trăng bắt đầu và như thế, phải trang bị cho
tàu không gian những máytí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àngkhông vũ trụ Mỹ và lầu 5 góc vẫn duyệt chi kinh phí. 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à
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òn Gordon 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ậtMoore:
'Cứ sau 18 tháng, tốc độ và sức mạnh của bộ tích hợp lại được tăng gấp đôi'. Năm
1971, bộ vixử 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 đâynhấ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ạtgiải Nobel: Wiliam Shockley, John Pardeen, Walter
Brattain đã qua đời. JohnPardeen 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à 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 đầuthế 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: - Đơn vị xử lý
trung tâm CPU (Central Processing Unit). - Các bộ nhớ (Memories). - Các cổng
8
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ần cứng khác
như bộ biến đổi tương tự-số ADC, bộ biến đổi số-tương tự DAC, các mạ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 đường tín hiệu có cùng
(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 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ân theo 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ố 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ị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 đọ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à 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.
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: đếm cá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 linh kiệ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ầ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ín hiệu lôgic thay đổi liên
10
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
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ành riê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
11
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ể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á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 khi nà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ộ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ố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 đó theo quy ướ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 ra giá 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á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ồ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
chỉ trở về của trong các trường hợp chương trình con hoặc chương trì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ạ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 thao tá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ẩn thậ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ếp trù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ại lớ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ác lệ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ện chương trình con đó.
Đoạn mã lệnh của chương trình con thường nằm ở một nơi khá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ọi chươ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ệnh tiếp sau lệnh gọi chương
13
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ột cá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 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ại thự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ệnh tiế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ện việc chia chương trình chính thà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à
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 (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ới chươ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ết thú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ủa chú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ự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ện bằ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 đi bao 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ủ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ép vớ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 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ậ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ô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 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 đối tượ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
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ý. - Trong khi lập trình, hãy đặc biệt
lưu ý đến các tình huống rẽ nhánh của chươ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ệnh nhả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ầ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ông phải là lệnh của vi xử lý, đương nhiên không được dịch ra
16
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.
17
CHƯƠ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ộ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ết quả trong 16 MB [16 × 1024
2
byte] kích thước không gian địa chỉ), sau đó
( giữa nhiều người khác) tháng mười hai VAXmá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át triể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
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ệu ngoà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ường tí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.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 AMD cũ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 16 exabyte ( 2
64
=16x2
60
byte).Bus dữ liệu rộng 64-bit cho phép truy xuất 8 byte mộ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-
19
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
bit cho 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).
-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ảy hay tám Synergistic Processing Elements.
-IBM " Xenon "bộ vi xử lý được sử dụng trong Microsoft Xbox 360 bao
gồm 64-bit PowerPC lõi.
21
-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 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 Technologies
Hầ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ộ vi
xử 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ản mà không có bất kỳ hình phạt hiệu suất.Hình thức hỗ trợ thường
được gọi là 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ài liệu các tập lệnh và kiến trúc Itanium ,và báo chí kỹ thuật
đã cung cấp tổng quan.Kiến trúc đã được đổi tên nhiều lần trong lịch sử
của nó. HP ban đầu được gọi là PA-WideWord. Intel sau này gọi là IA-
64, sau đó xử lý Kiến trúc Itanium (IPA),trước khi giải quyết trên Kiến
trúc Intel Itanium, nhưng nó vẫn cò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à
2
64
byte. Kiến trúc thực hiện sự thuyết pháp , đầu cơ , và dự đoán rẽ
nhánh . Nó sử dụng một phần cứng thay đổi tên đăng ký cơ chế chứ
không phải là cửa sổ đăng ký đơn giản cho việc đi qua tham số. Các cơ
chế tương tự cũng được sử dụng để cho phép thực hiện song song của các
int
dài (số
nguyên)
lâu
dài
con trỏ
/ size_t
Hệ điều hành mẫu
LLP64 /
IL32P64
16 32 32 64 64 Windows (X64/IA-64)
LP64 /
I32LP64
16 32 64 64 64 Hầu hết các hệ
thống Unix và Unix giống
như , ví dụ
23
như Solaris , Linux , và Mac
OS X , z / OS
ILP64 16 64 64 64 64
HAL hệ thống máy
tính cổng của Solaris
để SPARC64
SILP64 64 64 64 64 64 Unicos
Nhiều trình biên dịch 64-bit ngày nay sử dụng mô hình LP64 (bao gồm
Solaris, AIX , HP-UX , Linux, Mac OS X , FreeBSD , và IBM z / OS
trình biên dị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ược lại là đúng sự thật. Đây không phải là
kiến trú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 Silicon
Graphics 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ợ.
2000: IBM phát hành z / OS , hệ điều hành 64-bit xuống từ MVS , mới
64-bit má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ủa Itanium 64 IA, mặc dù nó đã có thể chạy các ứng dụng 32-bit thông
qua một lớp thực hiện.
25