Chuyển đến nội dung chính

Điện toán 64 bit - Wikipedia


Trong kiến ​​trúc máy tính, Điện toán 64 bit là việc sử dụng bộ xử lý có độ rộng datapath, kích thước nguyên và độ rộng địa chỉ bộ nhớ là 64 bit (tám quãng tám). Ngoài ra, kiến ​​trúc máy tính 64 bit cho các đơn vị xử lý trung tâm (CPU) và đơn vị logic số học (ALU) là các cấu trúc dựa trên các thanh ghi bộ xử lý, bus địa chỉ hoặc bus dữ liệu có kích thước đó. Từ góc độ phần mềm, điện toán 64 bit có nghĩa là việc sử dụng mã với các địa chỉ bộ nhớ ảo 64 bit. Tuy nhiên, không phải tất cả các bộ hướng dẫn 64 bit đều hỗ trợ các địa chỉ bộ nhớ ảo 64 bit đầy đủ; x86-64 và ARMv8, chẳng hạn, chỉ hỗ trợ 48 bit địa chỉ ảo, với 16 bit còn lại của địa chỉ ảo được yêu cầu là tất cả 0 hoặc tất cả 1 và một số bộ lệnh 64 bit hỗ trợ ít hơn 64 bit bộ nhớ vật lý địa chỉ nhà.

Thuật ngữ 64-bit mô tả một thế hệ máy tính trong đó bộ xử lý 64 bit là chuẩn. 64 bit là kích thước từ xác định một số lớp kiến ​​trúc máy tính, bus, bộ nhớ và CPU và bằng cách mở rộng phần mềm chạy trên chúng. CPU 64 bit đã được sử dụng trong các siêu máy tính từ những năm 1970 (Cray-1, 1975) và trong các máy trạm và máy chủ dựa trên bộ máy tính (RISC) giảm từ đầu những năm 1990, đáng chú ý là MIPS R4000, R8000 và R10000, DEC Alpha , Sun UltraSPARC và bộ vi xử lý IBM RS64 và POWER3 và sau này là bộ vi xử lý POWER. Vào năm 2003, CPU 64 bit đã được đưa vào thị trường máy tính cá nhân chính (trước đây là 32 bit) dưới dạng bộ xử lý x86-64 và PowerPC G5, và được đưa vào năm 2012 [1] vào kiến ​​trúc ARM nhắm vào điện thoại thông minh và máy tính bảng máy tính, được bán lần đầu tiên vào ngày 20 tháng 9 năm 2013, trong iPhone 5S được cung cấp bởi hệ thống ARMv8-A Apple A7 trên chip (SoC).

Một thanh ghi 64 bit có thể lưu trữ 2 64 (trên 18 triệu hoặc 1,8 × 10 19 ) các giá trị khác nhau. Phạm vi của các giá trị số nguyên có thể được lưu trữ trong 64 bit tùy thuộc vào biểu diễn số nguyên được sử dụng. Với hai biểu diễn phổ biến nhất, phạm vi là 0 đến 18,446,744,073,709,551,615 (2 64 - 1) để biểu diễn dưới dạng số nhị phân (không dấu) và −9,223,372,036,854,775,809 (19] [19] 9.223.372.036.854.775.807 (2 63 - 1) để biểu diễn dưới dạng bổ sung của hai. Do đó, bộ xử lý có địa chỉ bộ nhớ 64 bit có thể truy cập trực tiếp 2 64 byte (= 16 exabyte) của bộ nhớ có địa chỉ byte.

Không cần chứng nhận thêm, kiến ​​trúc máy tính 64 bit thường có các thanh ghi bộ xử lý số nguyên và địa chỉ rộng 64 bit, cho phép hỗ trợ trực tiếp cho các loại và địa chỉ dữ liệu 64 bit. Tuy nhiên, CPU có thể có các bus dữ liệu ngoài hoặc các bus địa chỉ với các kích thước khác nhau từ các thanh ghi, thậm chí còn lớn hơn (ví dụ như Pentium 32 bit có bus dữ liệu 64 bit [2]). Thuật ngữ này cũng có thể đề cập đến kích thước của các loại dữ liệu cấp thấp, chẳng hạn như số dấu phẩy động 64 bit.

Ý nghĩa kiến ​​trúc [ chỉnh sửa ]

Các thanh ghi bộ xử lý thường được chia thành nhiều nhóm: số nguyên dấu phẩy động lệnh đơn, nhiều dữ liệu (SIMD), điều khiển và thường là các thanh ghi đặc biệt cho số học địa chỉ có thể có nhiều cách sử dụng và tên khác nhau như địa chỉ ]hoặc thanh ghi cơ sở . Tuy nhiên, trong các thiết kế hiện đại, các chức năng này thường được thực hiện bằng các thanh ghi mục đích chung . Trong hầu hết các bộ xử lý, chỉ có các số nguyên hoặc thanh ghi địa chỉ có thể được sử dụng để giải quyết dữ liệu trong bộ nhớ; các loại thanh ghi khác không thể. Do đó, kích thước của các thanh ghi này thường giới hạn số lượng bộ nhớ có thể định địa chỉ trực tiếp, ngay cả khi có các thanh ghi, chẳng hạn như các thanh ghi dấu phẩy động, rộng hơn.

Hầu hết các bộ xử lý 32 bit và 64 bit hiệu suất cao (một số ngoại lệ đáng chú ý là kiến ​​trúc ARM cũ hoặc nhúng (ARM) và CPU kiến ​​trúc MIPS 32 bit (MIPS) có tích hợp phần cứng dấu phẩy động, thường, nhưng không luôn luôn, dựa trên các đơn vị dữ liệu 64 bit. Ví dụ: mặc dù kiến ​​trúc x86 / x87 có các hướng dẫn có thể tải và lưu trữ các giá trị dấu phẩy động 64 bit (và 32 bit) trong bộ nhớ, nhưng định dạng thanh ghi và dữ liệu dấu phẩy động bên trong rộng 80 bit, trong khi mục đích chung thanh ghi rộng 32 bit. Ngược lại, họ Alpha 64 bit sử dụng định dạng thanh ghi và dữ liệu dấu phẩy động 64 bit và các thanh ghi số nguyên 64 bit.

Lịch sử [ chỉnh sửa ]

Nhiều bộ hướng dẫn máy tính được thiết kế sao cho một thanh ghi số nguyên có thể lưu địa chỉ bộ nhớ vào bất kỳ vị trí nào trong bộ nhớ vật lý hoặc ảo của máy tính. Do đó, tổng số địa chỉ vào bộ nhớ thường được xác định bởi độ rộng của các thanh ghi này. Hệ thống IBM / 360 của những năm 1960 là một máy tính 32 bit đầu tiên; nó có các thanh ghi số nguyên 32 bit, mặc dù nó chỉ sử dụng thứ tự 24 bit của một từ cho các địa chỉ, dẫn đến không gian địa chỉ 16 MiB [ 16 × 1024 2 byte ]. Các siêu máy tính 32 bit, chẳng hạn như DEC VAX, đã trở nên phổ biến vào những năm 1970 và các bộ vi xử lý 32 bit, như gia đình Motorola 68000 và các thành viên 32 bit của gia đình x86 bắt đầu với Intel 80386, xuất hiện vào giữa Những năm 1980, tạo ra 32 bit một cái gì đó của sự đồng thuận trên thực tế như một kích thước đăng ký thuận tiện.

Một thanh ghi địa chỉ 32 bit có nghĩa là có thể tham chiếu 2 địa chỉ 32 hoặc 4 GiB của bộ nhớ truy cập ngẫu nhiên (RAM). Khi các kiến ​​trúc này được phát minh, bộ nhớ 4 GB vượt xa số lượng thông thường (4 MB) trong cài đặt, rằng điều này được coi là đủ headroom để giải quyết. 4,29 tỷ địa chỉ được coi là một kích thước phù hợp để làm việc vì một lý do quan trọng khác: 4,29 tỷ số nguyên là đủ để gán các tham chiếu duy 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ố kiến ​​trúc siêu máy tính của những năm 1970 và 1980, như Cray-1, [3] đã sử dụng các thanh ghi rộng tới 64 bit và hỗ trợ số học 64 bit, mặc dù chúng không hỗ trợ địa chỉ 64 bit. Vào giữa những năm 1980, sự phát triển của Intel i860 [4] đã bắt đầu lên đến đỉnh điểm trong một phiên bản (quá muộn [5] cho Windows NT) năm 1989; i860 có các thanh ghi số nguyên 32 bit và địa chỉ 32 bit, do đó, nó không phải là bộ xử lý 64 bit hoàn toàn, mặc dù đơn vị đồ họa của nó hỗ trợ số học số nguyên 64 bit. [6] Tuy nhiên, 32 bit vẫn là chuẩn cho đến đầu những năm 1990 , khi việc giảm chi phí bộ nhớ liên tục dẫn đến việc cài đặt với dung lượng RAM lên tới 4 GB và việc sử dụng không gian bộ nhớ ảo vượt trần 4 GB trở nên mong muốn để xử lý một số loại sự cố. Để đáp ứng, MIPS và DEC đã phát triển kiến ​​trúc vi xử lý 64 bit, ban đầu cho các máy trạm và máy chủ cao cấp. Vào giữa những năm 1990, HAL Computer Systems, Sun microsystems, IBM, Silicon Graphics và Hewlett Packard đã phát triển kiến ​​trúc 64 bit cho hệ thống máy trạm và máy chủ của họ. Một ngoại lệ đáng chú ý cho xu hướng này là các máy tính lớn của IBM, sau đó sử dụng dữ liệu 32 bit và kích thước địa chỉ 31 bit; các máy tính lớn của IBM không bao gồm bộ xử lý 64 bit cho đến năm 2000. Trong những năm 1990, một số bộ vi xử lý 64 bit giá rẻ đã được sử dụng trong các ứng dụng điện tử tiêu dùng và nhúng. Đáng chú ý, Nintendo 64 [7] và PlayStation 2 có bộ vi xử lý 64 bit trước khi được giới thiệu trên máy tính cá nhân. Máy in cao cấp, thiết bị mạng và máy tính công nghiệp cũng sử dụng bộ vi xử lý 64 bit, chẳng hạn như Thiết bị hiệu ứng lượng tử R5000. [ cần trích dẫn ] Điện toán 64 bit bắt đầu trôi xuống máy tính để bàn cá nhân từ năm 2003 trở đi, khi một số model trong dòng Macintosh của Apple chuyển sang bộ xử lý PowerPC 970 (được gọi là G5 của Apple) và AMD đã phát hành bộ xử lý 64 bit x86-64 đầu tiên.

Giới hạn của bộ xử lý [ chỉnh sửa ]

Về nguyên tắc, bộ vi xử lý 64 bit có thể xử lý 16 EiB ( 16 × 1024 6 = 2 64 = 18,446,744,073,709,551,616 byte hoặc khoảng 18,4 exabyte) bộ nhớ. Tuy nhiên, không phải tất cả các bộ hướng dẫn và không phải tất cả các bộ xử lý thực hiện các bộ hướng dẫn đó đều hỗ trợ không gian địa chỉ ảo hoặc vật lý 64 bit đầy đủ.

Kiến trúc x86-64 (tính đến năm 2016 ) cho phép 48 bit cho bộ nhớ ảo và, đối với bất kỳ bộ xử lý đã cho nào, tối đa 52 bit cho bộ nhớ vật lý. [8][9] Các giới hạn này cho phép kích thước bộ nhớ 256 TiB ( 256 × 1024 4 byte ) và 4 PiB ( 4 × 1024 5 byte ), tương ứng. Một PC hiện không thể chứa 4 pebibyte bộ nhớ (do kích thước vật lý của chip bộ nhớ), nhưng AMD đã hình dung ra các máy chủ lớn, cụm bộ nhớ dùng chung và các cách sử dụng không gian địa chỉ vật lý khác có thể tiếp cận điều này trong tương lai gần. Do đó, địa chỉ vật lý 52 bit cung cấp nhiều chỗ để mở rộng trong khi không phát sinh chi phí thực hiện các địa chỉ vật lý 64 bit đầy đủ. Tương tự, không gian địa chỉ ảo 48 bit được thiết kế để cung cấp hơn 65.000 (2 16 ) nhân với giới hạn 32 bit của 4 GiB ( 4 × 1024 3 byte ), cho phép không gian mở rộng sau này và không phát sinh chi phí dịch địa chỉ 64 bit đầy đủ.

Power ISA v3.0 cho phép 64 bit cho một địa chỉ hiệu quả, được ánh xạ tới một địa chỉ được phân đoạn có từ 65 đến 78 bit được phép, cho bộ nhớ ảo và, đối với bất kỳ bộ xử lý cụ thể nào, tối đa 60 bit cho bộ nhớ vật lý. [10]

Kiến trúc Oracle SPARC 2015 cho phép 64 bit cho bộ nhớ ảo và, đối với bất kỳ bộ xử lý nào, từ 40 đến 56 bit cho bộ nhớ vật lý. [11]

Kiến trúc hệ thống bộ nhớ ảo ARM AArch64 cho phép 48 bit cho bộ nhớ ảo và, đối với bất kỳ bộ xử lý nào, từ 32 đến 48 bit cho bộ nhớ vật lý. [12]

Dòng thời gian dữ liệu 64 bit [ chỉnh sửa ] [19659035] 1961
IBM cung cấp siêu máy tính IBM 7030 Stretch, sử dụng các từ dữ liệu 64 bit và các từ chỉ dẫn 32 hoặc 64 bit.
1974
Tập đoàn dữ liệu điều khiển ra mắt siêu máy tính vector CDC Star-100, trong đó sử dụng kiến ​​trúc từ 64 bit (các hệ thống CDC trước đó dựa trên kiến ​​trúc 60 bit). [19659039] International Computer Limited ra mắt ICL 2900 Series với các số nguyên bổ sung hai bit 32 bit, 64 bit và 128 bit; Điểm nổi 64 bit và 128 bit; Số thập phân đóng gói 32 bit, 64 bit và 128 bit và thanh ghi tích lũy 128 bit. Kiến trúc đã tồn tại thông qua sự kế thừa của máy ICL và Fujitsu. Mới nhất là Fujitsu Supernova, mô phỏng môi trường ban đầu trên bộ xử lý Intel 64 bit.
1976
Cray Research cung cấp siêu máy tính Cray-1 đầu tiên, dựa trên kiến ​​trúc từ 64 bit và sẽ tạo thành cơ sở cho các siêu máy tính vector Cray sau này.
1983
Elxsi ra mắt máy tính siêu nhỏ song song Elxsi 6400. Kiến trúc Elxsi có các thanh ghi dữ liệu 64 bit nhưng không gian địa chỉ 32 bit.
1989
Intel giới thiệu bộ xử lý điện toán tập lệnh (RISC) giảm Intel i860. Được bán trên thị trường dưới dạng "Bộ vi xử lý 64 bit", về cơ bản nó có kiến ​​trúc 32 bit, được cải tiến với một đơn vị đồ họa 3D có khả năng hoạt động số nguyên 64 bit. [13]
1993
Atari giới thiệu bảng điều khiển trò chơi video Atari Jaguar, bao gồm một số đường dẫn dữ liệu rộng 64 bit trong kiến ​​trúc của nó. [14]

Dòng thời gian địa chỉ 64 bit [ chỉnh sửa ]

1991
Máy tính MIPS Các hệ thống tạo ra bộ vi xử lý 64 bit đầu tiên, R4000, thực hiện kiến ​​trúc MIPS III, phiên bản thứ ba của kiến ​​trúc MIPS của nó. [15] CPU được sử dụng trong các máy trạm đồ họa SGI bắt đầu với IRIS Crimson. Kendall Square Research cung cấp siêu máy tính KSR1 đầu tiên của họ, dựa trên kiến ​​trúc bộ xử lý RISC 64 bit độc quyền chạy OSF / 1.
1992
Corporation Thiết bị kỹ thuật số (DEC) giới thiệu kiến ​​trúc Alpha 64 bit thuần túy được sinh ra từ Dự án lăng kính. [16]
1994
Intel công bố kế hoạch cho kiến ​​trúc IA-64 64 bit (cùng phát triển với Hewlett-Packard) với tư cách là người kế thừa cho IA-32 32 bit của nó bộ xử lý. Ngày ra mắt từ năm 1998 đến 1999 đã được nhắm mục tiêu.
1995
Sun ra mắt bộ xử lý SPARC 64 bit, UltraSPARC. [17] Hệ thống máy tính HAL thuộc sở hữu của Fujitsu ra mắt các máy trạm dựa trên CPU 64 bit, HAL được thiết kế độc lập SPARC64 thế hệ đầu tiên. IBM phát hành bộ vi xử lý A10 và A30, bộ xử lý PowerPC AS 64 bit đầu tiên. [18] IBM cũng phát hành bản nâng cấp hệ thống AS / 400 64 bit, có thể chuyển đổi hệ điều hành, cơ sở dữ liệu và ứng dụng.
1996
] Nintendo giới thiệu máy chơi trò chơi điện tử Nintendo 64, được xây dựng xung quanh một biến thể giá rẻ của MIPS R4000. HP phát hành bản triển khai đầu tiên của kiến ​​trúc PA-RISC 2.0 64 bit, PA-8000. [19]
1998
IBM phát hành dòng POWER3 của PowerPC 64 bit đầy đủ / Bộ xử lý POWER. [20]
1999
Intel phát hành bộ hướng dẫn cho kiến ​​trúc IA-64. AMD công khai bộ công cụ mở rộng 64 bit của mình cho IA-32, được gọi là x86-64 (sau này mang nhãn hiệu AMD64).
2000
IBM gửi máy tính lớn z / Architecture 64 bit đầu tiên, zSeries z900. z / Architecture là phiên bản 64 bit của kiến ​​trúc ESA / 390 32 bit, hậu duệ của kiến ​​trúc System / 360 32 bit.
2001
Intel xuất xưởng dòng bộ xử lý IA-64 của mình, sau nhiều lần trì hoãn trong việc tiếp cận thị trường. Hiện đã gắn nhãn hiệu Itanium và nhắm mục tiêu các máy chủ cao cấp, doanh số không đạt được kỳ vọng.
2003
AMD giới thiệu các dòng bộ xử lý Opteron và Athlon 64, dựa trên kiến ​​trúc AMD64, kiến ​​trúc bộ xử lý 64 bit dựa trên x86 đầu tiên . Apple cũng xuất xưởng CPU PowerPC 970 64-bit "G5" do IBM sản xuất. Intel duy trì rằng các chip Itanium của họ sẽ vẫn là bộ xử lý 64 bit duy nhất của họ.
2004
Intel, phản ứng với thành công trên thị trường của AMD, thừa nhận họ đã phát triển một bản sao của các phần mở rộng AMD64 có tên IA-32e (sau đổi tên EM64T, sau đó lại được đổi tên thành Intel 64). Intel cung cấp các phiên bản cập nhật của các họ bộ xử lý Xeon và Pentium 4 hỗ trợ bộ hướng dẫn 64 bit mới.
VIA Technologies công bố bộ xử lý Isaiah 64 bit. [21]
2006
Sony, IBM và Toshiba bắt đầu sản xuất bộ xử lý Cell 64 bit để sử dụng trong PlayStation 3, máy chủ, máy trạm và các thiết bị khác. Intel đã phát hành Core 2 Duo là bộ xử lý x86-64 chính đầu tiên cho dòng máy di động, máy tính để bàn và máy trạm. Các dòng bộ xử lý mở rộng 64 bit trước đây không có sẵn rộng rãi trên thị trường bán lẻ tiêu dùng (hầu hết Pentium 4 / D 64 bit là OEM), Pentium 4 bit, Pentium D và Celeron không được sản xuất hàng loạt cho đến cuối năm 2006 do vấn đề năng suất kém (hầu hết các tấm wafer năng suất tốt được nhắm mục tiêu vào máy chủ và máy tính lớn trong khi dòng chính vẫn là dòng vi xử lý 130-bit 130nm cho đến năm 2006) và sớm trở thành cấp thấp sau khi Core 2 ra mắt. AMD đã phát hành bộ xử lý di động 64 bit đầu tiên của họ và được sản xuất trong 90nm.
2011
ARM Holdings công bố ARMv8-A, phiên bản 64 bit đầu tiên của kiến ​​trúc ARM. [22] 19659037] 2012
ARM Holdings đã công bố lõi Cortex-A53 và Cortex-A57, lõi đầu tiên của họ dựa trên kiến ​​trúc 64 bit của họ, vào ngày 30 tháng 10 năm 2012. [1] [23]
2013
Apple công bố iPhone 5S, điện thoại thông minh 64 bit đầu tiên, sử dụng chip dựa trên hệ thống dựa trên A7 ARMv8-A của họ.
2014
Google công bố Nexus 9, thiết bị Android đầu tiên chạy trên bộ xử lý Tegra K1 64 bit.

Dòng thời gian của hệ điều hành 64 bit [ chỉnh sửa ]

1985
Cray phát hành UNICOS, Bản triển khai 64-bit đầu tiên của hệ điều hành Unix. [24]
1993
DEC phát hành hệ điều hành tương tự 64-bit DEC OSF / 1 AXP (sau này là rena med Tru64 UNIX) cho các hệ thống của mình dựa trên kiến ​​trúc Alpha.
1994
Hỗ trợ cho bộ xử lý R8000 được Silicon Graphics thêm vào hệ điều hành IRIX trong phiên bản 6.0.
1995
DEC phát hành OpenVMS 7.0 , phiên bản 64 bit đầy đủ đầu tiên của OpenVMS cho Alpha. Bản phân phối Linux 64 bit đầu tiên cho kiến ​​trúc Alpha được phát hành. [25]
1996
Hỗ trợ cho bộ xử lý R4x00 ở chế độ 64 bit được thêm vào bởi hệ điều hành IRIX trong hệ điều hành IRIX. phát hành 6.2.
1998
Sun phát hành Solaris 7, với sự hỗ trợ UltraSPARC 64 bit đầy đủ.
2000
IBM phát hành z / OS, hệ điều hành 64 bit xuống từ MVS, cho zSeries mới Máy tính lớn 64 bit; Linux 64-bit trên z Các hệ thống tuân theo việc phát hành CPU gần như ngay lập tức.
2001
Linux trở thành hạt nhân hệ điều hành đầu tiên hỗ trợ đầy đủ x86-64 (trên trình giả lập, vì chưa có bộ xử lý x86-64 nào được phát hành). [26]
2001
Microsoft phát hành Windows XP 64-Bit Edition cho kiến ​​trúc IA-64 của Itanium, mặc dù nó có thể chạy các ứng dụng 32 bit thông qua lớp thực thi.
2003
Apple phát hành hệ điều hành Mac OS X 10.3 "Panther" bổ sung hỗ trợ cho số học nguyên 64 bit trên bộ xử lý PowerPC 970. [27] Một số bản phân phối Linux phát hành có hỗ trợ AMD64. FreeBSD phát hành với sự hỗ trợ cho AMD64.
2005
Vào ngày 4 tháng 1, Microsoft ngừng Windows XP 64-Bit Edition, vì không có PC nào có bộ xử lý IA-64 có sẵn từ tháng 9 trước đó và thông báo rằng nó đang phát triển x86 -64 phiên bản Windows để thay thế nó. [28] Vào ngày 31 tháng 1, Sun phát hành Solaris 10 với sự hỗ trợ cho bộ xử lý AMD64 và EM64T. Vào ngày 29 tháng 4, Apple phát hành Mac OS X 10.4 "Tiger" cung cấp hỗ trợ hạn chế cho các ứng dụng dòng lệnh 64 bit trên các máy có bộ xử lý PowerPC 970; các phiên bản mới hơn cho máy Mac dựa trên Intel hỗ trợ các ứng dụng dòng lệnh 64 bit trên máy Mac có bộ xử lý EM64T. Vào ngày 30 tháng 4, Microsoft phát hành Windows XP Professional x64 Edition và Windows Server 2003 x64 Edition cho bộ xử lý AMD64 và EM64T. [29]
2006
Microsoft phát hành Windows Vista, bao gồm cả phiên bản 64 bit đối với bộ xử lý AMD64 / EM64T vẫn giữ được khả năng tương thích 32 bit. Trong phiên bản 64 bit, tất cả các ứng dụng và thành phần của Windows đều là 64 bit, mặc dù nhiều phiên bản cũng có phiên bản 32 bit để tương thích với các trình cắm.
2007
Apple phát hành Mac OS X 10.5 "Leopard" , hỗ trợ đầy đủ các ứng dụng 64 bit trên các máy có bộ xử lý PowerPC 970 hoặc EM64T.
2009
Microsoft phát hành Windows 7, giống như Windows Vista, bao gồm phiên bản 64 bit đầy đủ cho bộ xử lý AMD64 / Intel 64; hầu hết các máy tính mới được tải theo mặc định với phiên bản 64 bit. Nó cũng phát hành Windows Server 2008 R2, đây là hệ điều hành 64 bit đầu tiên do Microsoft phát hành. Apple phát hành Mac OS X 10.6, "Snow Leopard", đi kèm với nhân 64 bit cho bộ xử lý AMD64 / Intel64, mặc dù chỉ một số mẫu máy tính Apple gần đây sẽ chạy kernel 64 bit theo mặc định. Hầu hết các ứng dụng đi kèm với Mac OS X 10.6 hiện tại cũng là 64 bit. [27]
2011
Apple phát hành Mac OS X 10.7, "Lion", chạy kernel 64 bit mặc định trên các máy được hỗ trợ. Các máy cũ hơn không thể chạy kernel 64 bit chạy kernel 32 bit, nhưng, như với các bản phát hành trước đó, vẫn có thể chạy các ứng dụng 64 bit; Lion không hỗ trợ máy có bộ xử lý 32 bit. Gần như tất cả các ứng dụng đi kèm với Mac OS X 10.7 hiện tại cũng là 64 bit, bao gồm cả iTunes.
2013
Apple phát hành iOS 7, trên các máy có bộ xử lý AArch64, có kernel 64 bit hỗ trợ 64 bit ứng dụng.
2014
Google phát hành Android Lollipop, phiên bản đầu tiên của hệ điều hành Android có hỗ trợ bộ xử lý 64 bit.
2017
Apple phát hành iOS 11, chỉ hỗ trợ các máy có bộ xử lý AArch64. Nó có kernel 64 bit chỉ hỗ trợ các ứng dụng 64 bit. Các ứng dụng 32 bit không còn tương thích.

Các ứng dụng 64 bit [ chỉnh sửa ]

32-bit so với 64-bit [ chỉnh sửa ]

Thay đổi từ kiến ​​trúc 32 bit sang kiến ​​trúc 64 bit là một thay đổi cơ bản, vì hầu hết các hệ điều hành phải được sửa đổi rộng rãi để tận dụng kiến ​​trúc mới, bởi vì phần mềm đó phải quản lý phần cứng xử lý bộ nhớ thực tế. [19659131] Phần mềm khác cũng phải được chuyển sang sử dụng các khả năng mới; Phần mềm 32 bit cũ hơn có thể được hỗ trợ nhờ tập lệnh 64 bit là siêu bộ của tập lệnh 32 bit, để các bộ xử lý hỗ trợ tập lệnh 64 bit cũng có thể chạy mã cho lệnh 32 bit được đặt hoặc thông qua mô phỏng phần mềm hoặc bằng cách triển khai thực tế lõi xử lý 32 bit trong bộ xử lý 64 bit, như với một số bộ xử lý Itanium của Intel, bao gồm lõi xử lý IA-32 để chạy các ứng dụng x86 32 bit. Các hệ điều hành cho các kiến ​​trúc 64 bit này thường hỗ trợ cả ứng dụng 32 bit và 64 bit. [31]

Một ngoại lệ quan trọng đối với điều này là AS / 400, phần mềm được biên dịch thành một kiến ​​trúc tập lệnh ảo (ISA) được gọi là Giao diện máy độc lập công nghệ (TIMI); Mã TIMI sau đó được dịch sang mã máy gốc bằng phần mềm cấp thấp trước khi được thực thi. Phần mềm dịch thuật là tất cả những gì phải viết lại để chuyển toàn bộ HĐH và tất cả phần mềm sang nền tảng mới, khi IBM chuyển bộ lệnh gốc cho AS / 400 từ 32/48-bit cũ IMPI sang 64-bit mới hơn PowerPC-AS có tên mã Amazon . Tập lệnh của IMPI khá khác so với PowerPC 32 bit, do đó, quá trình chuyển đổi này thậm chí còn lớn hơn so với việc di chuyển một tập lệnh đã cho từ 32 đến 64 bit.

Trên phần cứng 64 bit có kiến ​​trúc x86-64 (AMD64), hầu hết các hệ điều hành và ứng dụng 32 bit có thể chạy mà không gặp sự cố tương thích. Mặc dù không gian địa chỉ lớn hơn của kiến ​​trúc 64 bit giúp làm việc với các tập dữ liệu lớn trong các ứng dụng như video kỹ thuật số, máy tính khoa học và cơ sở dữ liệu lớn dễ dàng hơn, đã có tranh luận đáng kể về việc chế độ tương thích 32 bit của chúng có nhanh hơn không hệ thống 32-bit có giá tương đương cho các nhiệm vụ khác.

Một chương trình Java được biên dịch có thể chạy trên máy ảo Java 32 hoặc 64 bit mà không cần sửa đổi. Độ dài và độ chính xác của tất cả các loại tích hợp, chẳng hạn như char ngắn int dài nhân đôi và các loại có thể được sử dụng làm chỉ số mảng, được chỉ định bởi tiêu chuẩn và không phụ thuộc vào kiến ​​trúc cơ bản. Các chương trình Java chạy trên máy ảo Java 64 bit có quyền truy cập vào không gian địa chỉ lớn hơn. [32]

Tốc độ không phải là yếu tố duy nhất cần xem xét khi so sánh bộ xử lý 32 bit và 64 bit . Các ứng dụng như đa tác vụ, kiểm tra căng thẳng và phân cụm - cho điện toán hiệu năng cao (HPC) - có thể phù hợp hơn với kiến ​​trúc 64 bit khi được triển khai phù hợp. Vì lý do này, các cụm 64 bit đã được triển khai rộng rãi trong các tổ chức lớn, như IBM, HP và Microsoft.

Tóm tắt:

  • Bộ xử lý 64 bit hoạt động tốt nhất với phần mềm 64 bit.
  • Bộ xử lý 64 bit có khả năng tương thích ngược và sẽ xử lý hầu hết các phần mềm 32 bit.
  • A 32- bộ xử lý bit không tương thích với phần mềm 64 bit.

Ưu và nhược điểm [ chỉnh sửa ]

Một quan niệm sai lầm phổ biến là kiến ​​trúc 64 bit không tốt hơn kiến ​​trúc 32 bit trừ khi máy tính có hơn 4 GiB bộ nhớ truy cập ngẫu nhiên. [33] Điều này không hoàn toàn đúng:

  • Một số hệ điều hành và cấu hình phần cứng nhất định giới hạn không gian bộ nhớ vật lý ở mức 3 GiB trên các hệ thống IA-32, do phần lớn khu vực 3 Gi4 được dành riêng cho địa chỉ phần cứng; thấy rào cản 3 GB; Kiến trúc 64 bit có thể giải quyết hơn 4 GiB. Tuy nhiên, bộ xử lý IA-32 từ Pentium Pro trở đi cho phép không gian địa chỉ bộ nhớ vật lý sử dụng Tiện ích mở rộng địa chỉ vật lý (PAE), cung cấp dải địa chỉ vật lý 64 GiB, trong đó lên tới 62 GiB có thể được sử dụng bởi bộ nhớ chính; hệ điều hành hỗ trợ PAE có thể không bị giới hạn ở 4 GiB bộ nhớ vật lý, ngay cả trên bộ xử lý IA-32. Tuy nhiên, trình điều khiển và phần mềm chế độ nhân khác, nhiều phiên bản cũ hơn, có thể không tương thích với PAE; điều này đã được trích dẫn là lý do khiến các phiên bản Microsoft Windows 32 bit bị giới hạn ở 4 GiB RAM vật lý [34] (mặc dù tính hợp lệ của lời giải thích này đã bị tranh chấp [35]).
  • Một số phần của hệ điều hành dự trữ xử lý không gian địa chỉ để sử dụng HĐH, giảm hiệu quả tổng không gian địa chỉ có sẵn để ánh xạ bộ nhớ cho các chương trình người dùng. Chẳng hạn, Windows 32 bit dành 1 hoặc 2 GiB (tùy thuộc vào cài đặt) của tổng không gian địa chỉ cho kernel, chỉ để lại 3 hoặc 2 GiB (tương ứng) không gian địa chỉ có sẵn cho chế độ người dùng. Giới hạn này cao hơn nhiều trên các hệ điều hành 64 bit.
  • Các tệp ánh xạ bộ nhớ trở nên khó thực hiện hơn trong các kiến ​​trúc 32 bit khi các tệp trên 4 GiB trở nên phổ biến hơn; các tệp lớn như vậy không thể được ánh xạ bộ nhớ dễ dàng thành các kiến ​​trúc 32 bit, vì chỉ một phần của tệp có thể được ánh xạ vào không gian địa chỉ tại một thời điểm và để truy cập vào tệp đó bằng ánh xạ bộ nhớ, các phần được ánh xạ phải được hoán đổi vào và ra khỏi không gian địa chỉ khi cần thiết Đây là một vấn đề, vì ánh xạ bộ nhớ, nếu được HĐH triển khai đúng cách, là một trong những phương pháp ghi đĩa hiệu quả nhất.
  • Một số chương trình 64 bit, như bộ mã hóa, giải mã và phần mềm mã hóa, có thể mang lại lợi ích rất lớn từ các thanh ghi 64 bit, [ cần trích dẫn ] trong khi hiệu suất của các chương trình khác, chẳng hạn như các chương trình định hướng đồ họa 3D, vẫn không bị ảnh hưởng khi chuyển từ 32 bit sang 64- môi trường bit. [ cần trích dẫn ]
  • Một số kiến ​​trúc 64 bit, như x86-64, hỗ trợ nhiều thanh ghi mục đích chung hơn so với các đối tác 32 bit của chúng (mặc dù điều này là không đặc biệt do độ dài từ). Điều này dẫn đến việc tăng tốc độ đáng kể cho các vòng lặp chặt chẽ do bộ xử lý không phải tìm nạp dữ liệu từ bộ đệm hoặc bộ nhớ chính nếu dữ liệu có thể vừa với các thanh ghi có sẵn.
Ví dụ trong C:
 int   a   b   c   d   e ;   cho   ] =  0 ;   a  < 100 ;   a  ++ )   {    =   a ;     c   =   b ;     d   =   c ;     19659157] d ;  }  
Nếu bộ xử lý chỉ có khả năng giữ hai hoặc ba giá trị hoặc biến trong các thanh ghi, nó sẽ cần di chuyển một số giá trị giữa bộ nhớ và thanh ghi để có thể xử lý các biến d và e cũng vậy; đây là một quá trình mất nhiều chu kỳ CPU. Một bộ xử lý có thể giữ tất cả các giá trị và biến trong các thanh ghi có thể lặp qua chúng mà không cần phải di chuyển dữ liệu giữa các thanh ghi và bộ nhớ cho mỗi lần lặp. Hành vi này có thể dễ dàng được so sánh với bộ nhớ ảo, mặc dù bất kỳ hiệu ứng nào phụ thuộc vào trình biên dịch.

Nhược điểm chính của kiến ​​trúc 64 bit là, so với kiến ​​trúc 32 bit, cùng một dữ liệu chiếm nhiều không gian hơn trong bộ nhớ (do để con trỏ dài hơn và có thể các loại khác, và đệm căn chỉnh). Điều này làm tăng yêu cầu bộ nhớ của một quy trình nhất định và có thể có ý nghĩa đối với việc sử dụng bộ đệm của bộ xử lý hiệu quả. Duy trì mô hình 32 bit một phần là một cách để xử lý việc này và nói chung có hiệu quả hợp lý. Ví dụ, hệ điều hành z / OS thực hiện phương pháp này, yêu cầu mã chương trình cư trú trong không gian địa chỉ 31 bit (bit thứ tự cao không được sử dụng trong tính toán địa chỉ trên nền tảng phần cứng cơ bản) trong khi các đối tượng dữ liệu có thể tùy ý cư trú trong 64- vùng bit. Không phải tất cả các ứng dụng như vậy đều yêu cầu không gian địa chỉ lớn hoặc thao tác các mục dữ liệu 64 bit, vì vậy các ứng dụng này không được hưởng lợi từ các tính năng này.

Tính khả dụng của phần mềm [ chỉnh sửa ]

hệ thống 64 bit dựa trên x86 đôi khi thiếu phần mềm tương đương được viết cho kiến ​​trúc 32 bit. Vấn đề nghiêm trọng nhất trong Microsoft Windows là trình điều khiển thiết bị không tương thích với phần cứng lỗi thời. Hầu hết các phần mềm ứng dụng 32 bit có thể chạy trên hệ điều hành 64 bit ở chế độ tương thích, cũng được gọi là chế độ mô phỏng, ví dụ: Công nghệ Microsoft WoW64 cho IA-64 và AMD64. Môi trường trình điều khiển Windows 64 Chế độ bản địa [36] chạy trên NTDLL.DLL 64 bit, không thể gọi mã hệ thống con Win32 32 bit (thường là các thiết bị có chức năng phần cứng thực tế được mô phỏng trong phần mềm chế độ người dùng, như Winprinters). Vì trình điều khiển 64 bit cho hầu hết các thiết bị không có sẵn cho đến đầu năm 2007 (Vista x64), sử dụng phiên bản Windows 64 bit được coi là một thách thức. Tuy nhiên, xu hướng đã chuyển sang điện toán 64 bit, do đó giá bộ nhớ giảm và việc sử dụng hơn 4 GB RAM tăng lên. Hầu hết các nhà sản xuất bắt đầu cung cấp cả trình điều khiển 32 bit và 64 bit cho các thiết bị mới, do đó, trình điều khiển 64 bit không còn tồn tại là một vấn đề. Trình điều khiển 64 bit không được cung cấp cho nhiều thiết bị cũ hơn, do đó có thể không được sử dụng trong các hệ thống 64 bit.

Khả năng tương thích trình điều khiển ít gặp sự cố với trình điều khiển nguồn mở, vì các trình điều khiển 32 bit có thể được sửa đổi để sử dụng 64 bit. Hỗ trợ cho phần cứng được thực hiện trước đầu năm 2007, là vấn đề đối với các nền tảng nguồn mở, [ cần trích dẫn ] do số lượng người dùng tương đối ít.

Các phiên bản Windows 64 bit không thể chạy phần mềm 16 bit. However, most 32-bit applications will work well. 64-bit users are forced to install a virtual machine of a 16- or 32-bit operating system to run 16-bit applications.[37]

Mac OS X 10.4 "Tiger" and Mac OS X 10.5 "Leopard" only had a 32-bit kernel, but they can run 64-bit user-mode code on 64-bit processors. Mac OS X 10.6 "Snow Leopard" had both 32- and 64-bit kernels, and, on most Macs, used the 32-bit kernel even on 64-bit processors. This allowed those Macs to support 64-bit processes while still supporting 32-bit device drivers; although not 64-bit drivers and performance advantages that can come with them. Mac OS X 10.7 "Lion" ran with a 64-bit kernel on more Macs, and OS X 10.8 "Mountain Lion" and later macOS releases only have a 64-bit kernel. On systems with 64-bit processors, both the 32- and 64-bit macOS kernels can run 32-bit user-mode code, and all versions of macOS include 32-bit versions of libraries that 32-bit applications would use, so 32-bit user-mode software for macOS will run on those systems.

Linux and most other Unix-like operating systems, and the C and C++ toolchains for them, have supported 64-bit processors for many years. Many applications and libraries for those platforms are open-source software, written in C and C++, so that if they are 64-bit-safe, they can be compiled into 64-bit versions. This source-based distribution model, with an emphasis on frequent releases, makes availability of application software for those operating systems less of an issue.

64-bit data models[edit]

In 32-bit programs, pointers and data types such as integers generally have the same length. This is not necessarily true on 64-bit machines.[38][39][40] Mixing data types in programming languages such as C and its descendants such as C++ and Objective-C may thus work on 32-bit implementations but not on 64-bit implementations.

In many programming environments for C and C-derived languages on 64-bit machines, int variables are still 32 bits wide, but long integers and pointers are 64 bits wide. These are described as having an LP64 data model. Another alternative is the ILP64 data model in which all three data types are 64 bits wide, and even SILP64 where short integers are also 64 bits wide.[41] However, in most cases the modifications required are relatively minor and straightforward, and many well-written programs can simply be recompiled for the new environment with no changes. Another alternative is the LLP64 model, which maintains compatibility with 32-bit code by leaving both int and long as 32-bit. LL refers to the long long integer type, which is at least 64 bits on all platforms, including 32-bit environments.

Many 64-bit platforms today use an LP64 model (including Solaris, AIX, HP-UX, Linux, macOS, BSD, and IBM z/OS). Microsoft Windows uses an LLP64 model. The disadvantage of the LP64 model is that storing a long into an int may overflow. On the other hand, converting a pointer to a long will “work” in LP64. In the LLP64 model, the reverse is true. These are not problems which affect fully standard-compliant code, but code is often written with implicit assumptions about the widths of data types. C code should prefer (u)intptr_t instead of long when casting pointers into integer objects.

A programming model is a choice made to suit a given compiler, and several can coexist on the same OS. However, the programming model chosen as the primary model for the OS application programming interface (API) typically dominates.

Another consideration is the data model used for device drivers. Drivers make up the majority of the operating system code in most modern operating systems[citation needed] (although many may not be loaded when the operating system is running). Many drivers use pointers heavily to manipulate data, and in some cases have to load pointers of a certain size into the hardware they support for direct memory access (DMA). As an example, a driver for a 32-bit PCI device asking the device to DMA data into upper areas of a 64-bit machine's memory could not satisfy requests from the operating system to load data from the device to memory above the 4 gibibyte barrier, because the pointers for those addresses would not fit into the DMA registers of the device. This problem is solved by having the OS take the memory restrictions of the device into account when generating requests to drivers for DMA, or by using an input–output memory management unit (IOMMU).

Current 64-bit architectures[edit]

As of May 201864-bit architectures for which processors are being manufactured include:

  • The 64-bit extension created by AMD to Intel's x86 architecture (later licensed by Intel); commonly termed x86-64AMD64or x64:
    • AMD's AMD64 extensions (used in Athlon 64, Opteron, Sempron, Turion 64, Phenom, Athlon II, Phenom II, FX, Ryzen, and Epyc processors)
    • Intel's Intel 64 extensions, used in Intel Core 2-i3-i5-i7-i9, some Atom, and newer Celeron, Pentium, and Xeon processors
      • Intel's K1OM architecture, a variant of Intel 64 with no CMOV, MMX, and SSE instructions, used in Xeon Phi coprocessors, binary incompatible with x86-64 programs
    • VIA Technologies' 64-bit extensions, used in the VIA Nano processors
  • IBM's Power Architecture:
  • SPARC V9 architecture:
  • IBM's z/Architecture, a 64-bit version of the ESA/390 architecture, used in IBM's eServer zSeries and System z mainframes:
  • HP-Intel's IA-64 architecture:
  • MIPS Technologies' MIPS64 architecture
  • ARM Holdings' AArch64 architecture
  • Elbrus architecture:
  • NEC SX architecture
  • RISC-V

Most architectures of 64 bits that are derived from the same architecture of 32 bits can execute code written for the 32-bit versions natively, with no performance penalty.[citation needed] This kind of support is commonly called bi-arch support or more generally multi-arch support.

See also[edit]

References[edit]

  1. ^ a b "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). ARM Holdings. Retrieved 2012-10-31.
  2. ^ Pentium Processor User's Manual Volume 1: Pentium Processor Data Book (PDF). Intel. 1993.
  3. ^ "Cray-1 Computer System Hardware Reference Manual" (PDF). Cray Research. 1977. Retrieved October 8, 2013.
  4. ^ Grimes, Jack; Kohn, Les; Bharadhwaj, Rajeev (July–August 1989). "The Intel i860 64-Bit Processor: A General-Purpose CPU with 3D Graphics Capabilities". IEEE Computer Graphics and Applications. 9 (4): 85–94. doi:10.1109/38.31467. Retrieved 2010-11-19.
  5. ^ Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. Warner Books. ISBN 0-02-935671-7.
  6. ^ "i860 Processor Family Programmer's Reference Manual" (PDF). Intel. 1991. Retrieved October 7, 2013.
  7. ^ "NEC Offers Two High Cost Performance 64-bit RISC Microprocessors" (Press release). NEC. 1998-01-20. Retrieved 2011-01-09. Versions of the VR4300 processor are widely used in consumer and office automation applications, including the popular Nintendo 64TM video game and advanced laser printers such as the recently announced, award-winning Hewlett-Packard LaserJet 4000 printer family.
  8. ^ "AMD64 Programmer's Manual Volume 2: System Programming" (PDF). Advanced Micro Devices. December 2016. p. 120.
  9. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide, Part 1" (PDF). Intel. September 2016. p. 4-2.
  10. ^ "Power ISA Version 3.0". IBM. November 30, 2015. p. 983.
  11. ^ "Oracle SPARC Architecture 2015 Draft D1.0.9". Oracle. tr. 475.
  12. ^ "ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile". pp. D4-1723, D4-1724, D4-1731.
  13. ^ "i860 64-Bit Microprocessor". Intel. 1989. Retrieved 30 November 2010.
  14. ^ Atari Jaguar History. AtariAge. Retrieved 9 August 2010.
  15. ^ Joe Heinrich: "MIPS R4000 Microprocessor User's Manual, Second Edition", 1994, MIPS Technologies, Inc.
  16. ^ Richard L. Sites: "Alpha AXP Architecture", Digital Technical Journal, Volume 4, Number 4, 1992, Digital Equipment Corporation.
  17. ^ Linley Gwennap: "UltraSparc Unleashes SPARC Performance", Microprocessor Report, Volume 8, Number 13, 3 October 1994, MicroDesign Resources.
  18. ^ J. W. Bishop, et al.: "PowerPC AS A10 64-bit RISC microprocessor", IBM Journal of Research and Development, Volume 40, Number 4, July 1996, IBM Corporation.
  19. ^ Linley Gwennap: "PA-8000 Combines Complexity and Speed", Microprocessor Report, Volume 8, Number 15, 14 November 1994, MicroDesign Resources
  20. ^ F. P. O'Connell and S. W. White: "POWER3: The next generation of PowerPC processors", IBM Journal of Research and Development, Volume 44, Number 6, November 2000, IBM Corporation.
  21. ^ "VIA Unveils Details of Next-Generation Isaiah Processor Core". VIA Technologies, Inc. Archived from the original on 2007-10-11. Retrieved 2007-07-18.
  22. ^ "ARMv8 Technology Preview" (PDF). October 31, 2011. Retrieved November 15, 2012.
  23. ^ ARM Keynote: ARM Cortex-A53 and ARM Cortex-A57 64bit ARMv8 processors launched on armdevices.net
  24. ^ Stefan Berka. "Unicos Operating System". www.operating-system.org. Archived from the original on 26 November 2010. Retrieved 2010-11-19.
  25. ^ Jon "maddog" Hall (Jun 1, 2000). "My Life and Free Software". Linux Journal.
  26. ^ Andi Kleen. Porting Linux to x86-64 (PDF). Ottawa Linux Symposium 2001. Status: The kernel, compiler, tool chain work. The kernel boots and work on simulator and is used for porting of userland and running programs
  27. ^ a b John Siracusa. "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica. tr. 5. Archived from the original on 9 October 2009. Retrieved 2009-09-06.
  28. ^ Joris Evers (5 January 2005). "Microsoft nixes Windows XP for Itanium". Computerworld. Archived from the original on 18 June 2013. Retrieved 17 October 2017.
  29. ^ "Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional" (Press release). Microsoft. April 25, 2005. Retrieved September 10, 2015.
  30. ^ Mashey, John (October 2006). "The Long Road to 64 Bits". ACM Queue. 4 (8): 85–94. Retrieved 2011-02-19.
  31. ^ "Windows 7: 64 bit vs 32 bit?". W7 Forums. Archived from the original on 5 April 2009. Retrieved 2009-04-05.
  32. ^ "Frequently Asked Questions About the Java HotSpot VM". Sun Microsystems, Inc. Archived from the original on 10 May 2007. Retrieved 2007-05-03.
  33. ^ "A description of the differences between 32-bit versions of Windows Vista and 64-bit versions of Windows Vista". Retrieved 2011-10-14.
  34. ^ Mark Russinovich (2008-07-21). "Pushing the Limits of Windows: Physical Memory". Retrieved 2017-03-09.
  35. ^ Chappell, Geoff (2009-01-27). "Licensed Memory in 32-Bit Windows Vista". geoffchappell.com. WP:SPS. Retrieved 9 March 2017.
  36. ^ "Inside Native Applications". Technet.microsoft.com. 2006-11-01. Archived from the original on 23 October 2010. Retrieved 2010-11-19.
  37. ^ Lincoln Spector (August 12, 2013). "Run an old program on a new PC".
  38. ^ "Exploring 64-bit development on POWER5: How portable is your code, really?" by Peter Seebach 2006
  39. ^ "The Ten Commandments for C Programmers" by Henry Spencer
  40. ^ "The Story of Thud and Blunder". Datacenterworks.com. Retrieved 2010-11-19.
  41. ^ a b "Cray C/C++ Reference Manual". August 1998. Table 9-1. Cray Research systems data type mapping. Retrieved October 15, 2013.

External links[edit]


visit site
site

Nhận xét

Bài đăng phổ biến từ blog này

Đề cương của Đài Loan - Wikipedia

Một bản đồ cứu trợ mở rộng của Đài Loan. Một bản đồ cơ bản có thể mở rộng của Đài Loan. Một bản đồ địa hình mở rộng của Đài Loan. Phác thảo sau đây được cung cấp dưới dạng tổng quan và hướng dẫn chuyên đề về Đài Loan: Đài Loan - nhà nước ở Đông Á, được đặt tên chính thức là Cộng hòa Trung Hoa ( ROC ). Có trụ sở tại Trung Quốc đại lục, Trung Hoa Dân Quốc hiện đang cai trị đảo Đài Loan, nơi chiếm hơn 99% lãnh thổ, cũng như Bành Hồ, Kinmen, Matsu và các đảo nhỏ khác. Đài Bắc là trụ sở của chính quyền trung ương. Sau cuộc nội chiến Trung Quốc, Đảng Cộng sản Trung Quốc đã kiểm soát hoàn toàn Trung Quốc đại lục và thành lập Cộng hòa Nhân dân Trung Hoa (PRC) vào năm 1949. Trung Hoa Dân Quốc chuyển chính phủ sang Đài Loan, và quyền tài phán của nó bị giới hạn ở Đài Loan và các đảo xung quanh. Năm 1971, PRC đảm nhận vị trí của Trung Quốc tại Liên Hợp Quốc, mà ROC ban đầu chiếm giữ. Trong nửa sau của thế kỷ 20, Đài Loan đã trải qua sự tăng trưởng kinh tế và công nghiệp hóa

Ford Zephyr - Wikipedia

Ford Zephyr là một chiếc xe được sản xuất bởi Ford của Anh từ năm 1950 đến năm 1972. Ban đầu, phiên bản bốn xi-lanh được đặt tên là Ford Consul nhưng từ năm 1962, cả hai phiên bản bốn và sáu xi-lanh đều được đặt tên Zephyr, tên lãnh sự đã bị ngừng sản xuất trên dòng xe này. Zephyr, và các biến thể sang trọng của nó, Ford Zodiac và Ford Executive là những chiếc xe chở khách lớn nhất trong dòng Ford của Anh từ năm 1950 cho đến khi được thay thế bởi Lãnh sự và Granada mô hình năm 1972. Lịch sử [ chỉnh sửa ] Các mẫu Mark I Ford Consul và Zephyr lần đầu tiên được trưng bày tại Earls Court Motor Show năm 1950. Chúng là những chiếc xe đầu tiên của Anh được sử dụng trong sản xuất hàng loạt hệ thống treo trước độc lập MacPherson Strut được sử dụng rộng rãi ngày nay. Việc sản xuất bắt đầu với Lãnh sự vào ngày 1 tháng 1 năm 1951. Mô hình Mark I hoạt động cho đến năm 1956. Từ tháng 4 năm 1956, Lãnh sự Mark II, Zephyr và Zodiac đã được bán và được gọi là Three Graces. Dòng sản phẩ

Danh sách các nhân vật Saiyuki - Wikipedia

Bài viết này liệt kê các nhân vật chính từ Saiyuki . Saiyuki là một bộ truyện tranh được viết bởi Kazuya Minekura và xuất bản từ năm 1997 đến 2002. Bộ truyện đã xem một bộ phim hoạt hình truyền hình hoạt hình kéo dài từ năm 2000 đến 2001 và có tổng cộng 50 tập. Một bộ phim dựa trên manga đã được sản xuất và phát hành vào năm 2001. Bộ này cũng lấy cảm hứng từ một vở nhạc kịch hành động trực tiếp và một trò chơi video. Các nhân vật chính là Genjyo Sanzo, Goku, Gojyo và Hakkai, những người phải đối mặt với một số nhân vật phản diện khác nhau trong suốt bộ truyện tranh. Nhân vật chính [ chỉnh sửa ] Genjyo Sanzo [ chỉnh sửa ] Một trong những nhân vật chính và một linh mục, anh ta là một trong những nhân vật chính người đã đưa cả nhóm cùng nhau đi đến phương tây dưới sự chỉ huy của Sanbutsushin và từ Kanzeon Botatsu, Nữ thần của Lòng thương xót. Anh ta cũng là người đã thả Goku ra khỏi nhà tù 500 năm của mình và hiện đang chăm sóc anh ta như một người cha. Anh ta mang theo k