新聞中心
地址空間是一個(gè)操作系統(tǒng)中的重要概念。在操作系統(tǒng)內(nèi)核中,地址空間是用來區(qū)分不同進(jìn)程內(nèi)存空間的一個(gè)概念。對(duì)于不同的進(jìn)程來說,它們的地址空間應(yīng)該是分離的。這樣才能保證進(jìn)程之間的內(nèi)存不會(huì)發(fā)生沖突,從而保證系統(tǒng)的穩(wěn)定性和可靠性。

創(chuàng)新互聯(lián)公司是一家專業(yè)從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)公司依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
在本文中,我們將探究Linux MIPS64平臺(tái)下的地址空間。我們將會(huì)討論MIPS64體系結(jié)構(gòu)下的地址空間特點(diǎn),以及Linux內(nèi)核如何管理這些地址空間。
MIPS64地址空間的特點(diǎn)
MIPS64架構(gòu)是基于32位地址空間的,但它支持使用64位物理地址。這意味著MIPS64架構(gòu)可以尋址的內(nèi)存空間非常大。在Linux MIPS64平臺(tái)下,進(jìn)程的地址空間大小為48位,其中高16位被保留,并且實(shí)際上只有44位被用于尋址。這使得MIPS64架構(gòu)可以訪問高達(dá)16EB的內(nèi)存空間。
與任何其他架構(gòu)一樣,MIPS64體系結(jié)構(gòu)也為每個(gè)進(jìn)程保留了地址空間。在Linux中,每個(gè)進(jìn)程都有自己的地址空間,這個(gè)地址空間在進(jìn)程被創(chuàng)建時(shí)就被初始化和分配。這些地址空間包括用戶空間、內(nèi)核空間和??臻g。
用戶空間是進(jìn)程的主要內(nèi)存區(qū)域。它包括了各種用戶代碼和數(shù)據(jù)段,以及堆空間和共享庫(kù)的映射。內(nèi)核空間是內(nèi)核代碼和數(shù)據(jù)段的區(qū)域。內(nèi)核可以在進(jìn)程的上下文中訪問該空間,從而進(jìn)行系統(tǒng)級(jí)別的操作。??臻g是用于保存局部變量、函數(shù)調(diào)用堆棧以及其他相關(guān)數(shù)據(jù)的內(nèi)存區(qū)域。
Linux內(nèi)核對(duì)地址空間的管理
Linux內(nèi)核在MIPS64平臺(tái)下通過使用頁(yè)表來管理地址空間。頁(yè)表是一張數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)虛擬地址和物理地址之間的映射關(guān)系。它將虛擬地址映射到物理地址,從而讓程序可以訪問內(nèi)存。在MIPS64平臺(tái)下,內(nèi)存被分成固定大小的頁(yè)面。每個(gè)頁(yè)面的大小通常為4KB。
Linux內(nèi)核將進(jìn)程的地址空間劃分成多個(gè)區(qū)域,每個(gè)區(qū)域都有一定的保護(hù)屬性。例如,代碼段通常是只讀的,而數(shù)據(jù)段則可以被讀寫。內(nèi)核可以通過設(shè)置頁(yè)面保護(hù)屬性來實(shí)現(xiàn)這些限制。在進(jìn)程執(zhí)行的不同階段,內(nèi)核可以動(dòng)態(tài)地改變頁(yè)面保護(hù)屬性,以確保進(jìn)程可以訪問其需要的內(nèi)存。
在Linux MIPS64平臺(tái)下,內(nèi)核還可以使用可重定位的代碼,以便在不同進(jìn)程之間共享代碼段。共享代碼可以節(jié)省內(nèi)存,但同時(shí)也增加了代碼修改時(shí)的復(fù)雜度。
Linux MIPS64平臺(tái)下的地址空間是一個(gè)極其重要的概念。Linux內(nèi)核通過使用頁(yè)表和保護(hù)屬性來管理各個(gè)進(jìn)程的地址空間。每個(gè)進(jìn)程都有自己獨(dú)立的地址空間,這確保了不同進(jìn)程之間的內(nèi)存空間分離,從而提高了Linux系統(tǒng)的穩(wěn)定性和可靠性。了解地址空間的工作原理對(duì)于理解操作系統(tǒng)內(nèi)部運(yùn)作十分重要,希望本文能夠幫助你更好地理解這個(gè)概念。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
64位簡(jiǎn)介及詳細(xì)資料
概述
一個(gè) 64 位的 CPU,內(nèi)部可能有外部數(shù)據(jù)匯流排或不同大小的地址匯流排,可能比較大或比較小;術(shù)語”64位”也常用于描述這些匯流排的大小。例如,目前有許多機(jī)器有著使用 64 位匯流排的 32 位處理器(如最初的 Pentium 和之后的 CPU),因此有時(shí)會(huì)被稱作”64位”。同樣的,某些 16 位處理器(如 MC68000,摩托羅拉公司生產(chǎn)的一款16位處理器,因集成約68000個(gè)電晶體而得名)指的是 16/32 位處理器具有 16 位的匯流排,不過內(nèi)部也有一些 32 位的性能。這一術(shù)語也可能指計(jì)算機(jī)指令集的指令長(zhǎng)度,或其它的數(shù)據(jù)項(xiàng)(如常見的 64 位雙精度浮點(diǎn)數(shù))。去掉進(jìn)一步的條件,”64位”計(jì)算機(jī)架構(gòu)一般具有 64 位寬的整數(shù)型暫存器,它可支持(內(nèi)部和外部?jī)烧? 64 位”區(qū)塊”(chunk)的整數(shù)型數(shù)據(jù)。
架構(gòu)影響
處理器中的暫存器通??煞譃槿N︰整數(shù)、浮點(diǎn)數(shù)、其它。在所有常見的主流處理器中,只有整數(shù)暫存器(integer register)才可存放指針值(記憶體數(shù)據(jù)的地址)。非整數(shù)暫存器不能存放指針來讀寫記憶體,因此不能用來避開任何受到整數(shù)暫存器大小所影響的記憶體限制。
幾乎所有常見的主流處理器(大部分的 ARM 和 32 位 MIPS 實(shí)作是明顯的例外)集成了浮點(diǎn)數(shù)硬體,它有可能使用 64 位暫存器保存數(shù)據(jù),以供處理。例如,x86 架構(gòu)包含了 x87 浮點(diǎn)數(shù)指令,并使用 8 個(gè) 80 位暫存器構(gòu)成堆疊結(jié)構(gòu)。后來的 x86 修改版和 x86-64 架構(gòu),又加入 SSE 指令,它使用 8 個(gè) 128 位寬的暫存器(在 x86-64 中有 16 個(gè)暫存器)。與之相較,64 位 Alpha 系列處理器,除了 32 個(gè) 64 位寬整數(shù)暫存器以外,也定義了 32 個(gè) 64 位寬型戚的浮點(diǎn)數(shù)暫存器。
記憶體限制
截至2023 年,大部分的 CPU,其單個(gè)暫存器可存放虛擬記憶體中任意數(shù)據(jù)的記憶體地址(本機(jī))。因此,虛擬記憶體(計(jì)算機(jī)在程式的工作區(qū)域中所能保留的數(shù)據(jù)總量)中可用的地址取決于暫存器的寬度。自 1960 年的 IBM System/360 起,然后1970年的 DEC VAX微型計(jì)算機(jī),以及1980年中期的 Intel 80386,在事實(shí)上一致開發(fā)合用的 32 位大小的暫存器。32 位暫存器意味著 2^32 的地址,或可使用 4 GB 的記憶體。當(dāng)時(shí)在設(shè)計(jì)這些架構(gòu)時(shí),4 GB 的記憶體遠(yuǎn)遠(yuǎn)超過一般所安裝的可用量,而認(rèn)為已足夠用于定址。認(rèn)為 4 GB 地址為合適的大小,還有其它重要的理由︰在應(yīng)用程式中,如資料庫(kù),42 億多的整數(shù)已足夠?qū)Υ蟛糠挚捎?jì)算的實(shí)例分配唯一的參考引用。
然而在 1990年初,成本不斷降低的記憶體,使安裝的記憶體數(shù)量逼近 4 GB,且在處理某些類型的問題時(shí),可以想像虛擬記憶體的使用空間將超過 4 GB 上限。為此,一些公司開始釋出新的 64 位架構(gòu)晶片家族,最初是提供給超級(jí)計(jì)算機(jī)、頂級(jí)工作站和伺服器機(jī)器。64位運(yùn)算逐漸流向個(gè)人計(jì)算機(jī)則出現(xiàn)在 2023 年,某些型號(hào)的 Apple Macintosh 生產(chǎn)線轉(zhuǎn)向 PowerPC 970 處理器(Apple 稱為”G5″),并在 2023 年,轉(zhuǎn)向 EM64T 處理器,且 x86-64 處理器在頂級(jí)的 PC 中遂漸普及。64 位架構(gòu)的出現(xiàn),有效的將記憶體上限提升至 2^64 地址,16 EB 的記憶體。從這個(gè)角度來看,在 4 MB 主記憶體很普遍時(shí),更大的記憶體上限 2^32 的地址大約是一般安裝記憶體的 1000 倍。如今,當(dāng) 16 GB 的主記憶體很普遍時(shí),2^64 的地址上限大約是 10億倍。
今天市面上大部分的消費(fèi)遲源級(jí) PC 存在著人為的記憶體限制,因受限于實(shí)例上的限制,而幾乎不太可能需要完整支持 16 GB 容量。舉例來說,Apple的 Mac Pro 最多可安裝實(shí)例記憶體至 16 GB,而無必要支持超過的大小。最新的Linux核心(版本 2.6.16)可編譯成更高支持 64 GB 的記憶體,Windows VistaUltimate支持超過128G記憶體。
32位比較
從32位到64位架構(gòu)的改變是一個(gè)根本的改變,因?yàn)榇蠖鄶?shù)作業(yè)系統(tǒng)必須進(jìn)行全面性修改,以取得新架構(gòu)的優(yōu)點(diǎn)。其它軟體也必須進(jìn)行移植,以使用新的性能;較舊的軟卜旦陵體一般可借由硬體兼容模式(新的處理器支持較舊的 32 位版本指令集)或軟體模擬進(jìn)行支持。或者直接在 64 位處理器里面實(shí)作 32 位處理器核心(如同 Intel 的 Itanium 處理器,其內(nèi)含有 x86 處理器核心,用來執(zhí)行 32 位 x86 應(yīng)用程式)。支持 64 位架構(gòu)的作業(yè)系統(tǒng),一般同時(shí)支持 32 位和 64 位的應(yīng)用程式。
明顯的例外是 AS/400,其軟體執(zhí)行在虛擬的指令集架構(gòu),稱為 TIMI(技術(shù)獨(dú)立機(jī)器界面),它會(huì)在執(zhí)行之前,以低階軟體轉(zhuǎn)換成本地機(jī)器碼。低階軟體必須全部重寫,以搬移整個(gè) OS 以及所有的軟體到新的平臺(tái)。例如,當(dāng) IBM 轉(zhuǎn)移較舊的 32/48 位”IMPI”指令集到 64 位 PowerPC(IMPI 完全不像 32 位 PowerPC,所以這比從 32 位版本的指令集轉(zhuǎn)移到相同指令集的 64 位版本的規(guī)模還要龐大)。
64 位架構(gòu)無疑可套用在需要處理大量數(shù)據(jù)的應(yīng)用程式,如數(shù)碼視頻、科學(xué)運(yùn)算、和早期的大型資料庫(kù)。在其它工作方面,其 32 位兼容模式是否會(huì)快過同等級(jí)的 32 位系統(tǒng),這部分已有很多爭(zhēng)論。在 x86-64 架構(gòu)(AMD64 和 Intel 64)中,主要的 32 位作業(yè)系統(tǒng)和應(yīng)用程式,可平滑的執(zhí)行于 64 位硬體上。
Sun 的 64 位 Java虛擬機(jī)的啟動(dòng)速度比 32 位虛擬機(jī)還慢,因?yàn)?Sun 仍假定所有的 64 位機(jī)器都是伺服器,而且只有為 64 位平臺(tái)實(shí)作”伺服器”編譯器(C2)。”客戶端”編譯器(C1)產(chǎn)生較慢的代碼,不過編譯較快速。所以盡管在 64 位 JVM 的 Java 程式在一段很長(zhǎng)的周期會(huì)執(zhí)行的較好(一般為長(zhǎng)時(shí)間運(yùn)作的”伺服器”應(yīng)用程式),它的啟動(dòng)時(shí)間可能更久。對(duì)于短生命期的應(yīng)用程式(如 Java 編譯器 javac) 增加啟動(dòng)時(shí)間可控制執(zhí)行時(shí)間,使 64 位的 JVM 整體變慢。
應(yīng)當(dāng)指出,在 32 位和 64 位處理器時(shí),速度并不是唯一的考量因素。應(yīng)用程式,如多任務(wù)、壓力測(cè)試(stress testing)、叢集(clustering)(用于HPC)可能更適合 64 位架構(gòu)以正確部署。為了以上原因,64 位叢集已廣泛部署于大型組織,如 IBM、Vodafone、HP、微軟。
優(yōu)缺點(diǎn)
一個(gè)常見的誤解是:除非計(jì)算機(jī)安裝的記憶體大于 4 GB,否則 64 位架構(gòu)不會(huì)比 32 位架構(gòu)好。這不完全正確。
部分作業(yè)系統(tǒng)保留了一部分進(jìn)程地址空間供作業(yè)系統(tǒng)使用,造成使用者程式可用于映射記憶體的地址空間減少。例如,Windows XP DLL 以及 userland OS 組件映射到每一個(gè)進(jìn)程的地址空間,即使計(jì)算機(jī)裝有 4 GB 的記憶體,也僅留下 2 至 3.8 GB(端視其設(shè)定)的可用地址空間。這個(gè)限制在 64 位 Windows 中并不會(huì)出現(xiàn)。
檔案的記憶體映射對(duì) 32 位的架構(gòu)而言不再合用,尤其是相對(duì)便宜的 DVD 燒錄技術(shù)的引入。大于 4 GB 的檔案不再罕見,且如此大的檔案無法簡(jiǎn)單的映射到 32 位架構(gòu)的記憶體;只能映射檔案的一部分范圍到地址空間上,并以記憶體映射存取檔案,當(dāng)有需要時(shí),就必須將這些范圍映射進(jìn)或映射出地址空間。這是一個(gè)問題,因?yàn)槌湓5挠洃涹w映射仍是從磁碟至記憶體最有效率的存取方法,如果作業(yè)系統(tǒng)能適當(dāng)實(shí)行的話。
64 位架構(gòu)主要的缺點(diǎn)是,相對(duì)于 32 位架構(gòu),占用相同的數(shù)據(jù)會(huì)消秏更多的記憶體空間(由于腫脹的指針,以及其它型態(tài)和對(duì)齊補(bǔ)白等可能)。這會(huì)增加進(jìn)程對(duì)記憶體的需求,且可能會(huì)影響高效能處理器高速快取的使用。維持一部分的 32 位模型是一個(gè)處理方法,且大致合理有效。實(shí)際上,高效能導(dǎo)向的 z/OS 作業(yè)系統(tǒng)便采取這個(gè)方法,要求程式代碼存放在 32 位地址空間的任一數(shù)字,數(shù)據(jù)對(duì)象則可(選擇性)存放在 64 位區(qū)域。
目前主要的商業(yè)軟體是建立在 32 位代碼,而非 64 位代碼,所以不能取得在 64 位處理器上較大的 64 位地址空間,或較寬的 64 位暫存器和數(shù)據(jù)路徑的優(yōu)點(diǎn)。然而,免費(fèi)或自由軟體作業(yè)系統(tǒng)的使用者已經(jīng)可以使用專有的 64 位運(yùn)算環(huán)境。并非所有的應(yīng)用程式都需要大量的地址空間或操作 64 位數(shù)據(jù)項(xiàng),所以這些程式不會(huì)享受到較大的地址空間或較寬的暫存器和數(shù)據(jù)路徑的好處;主要受益于 64 位版本的應(yīng)用程式,并不會(huì)享受到使用 x86 的版本,會(huì)有更多的暫存器可以使用。
可用性
64位系統(tǒng)有時(shí)缺乏對(duì)應(yīng)的軟體,那些軟體是寫給 32 位架構(gòu)。最嚴(yán)重的問題是不兼容的驅(qū)動(dòng)程式。盡管大部分軟體可執(zhí)行于 32 位兼容模式(又稱作模擬模式,即微軟 WoW64(Windows 32 bit on Windows 64 bit) 技術(shù)),其通常無法執(zhí)行驅(qū)動(dòng)程式(或類似軟體),因?yàn)槌淌酵ǔ?zhí)行于作業(yè)系統(tǒng)和硬體之間,在此直接模擬無法使用。許多開放源始碼軟體封包可簡(jiǎn)單的從源始碼編譯為可執(zhí)行于 64 位環(huán)境作業(yè)系統(tǒng),如 Linux。所需的條件是供給 64 位機(jī)器的編譯器(通常是 g)。目前 64 位版本的驅(qū)動(dòng)程式還不能用,由于缺少可用的驅(qū)動(dòng)程式,所以使用 64 位作業(yè)系統(tǒng)會(huì)有挫折,推薦使用預(yù)裝64位版本的windows 7的電腦,一般會(huì)解決驅(qū)動(dòng)問題。
因?yàn)樵O(shè)備的驅(qū)動(dòng)程式通常執(zhí)行于作業(yè)系統(tǒng)核心(kernel)的內(nèi)部,有可能以 32 位進(jìn)程執(zhí)行核心,同時(shí)支持 64 位的使用者進(jìn)程。以在核心里的額外消耗為代價(jià),如此可為使用者提供受益于 64 位的記憶體和效能,且不破壞現(xiàn)存 32 位驅(qū)動(dòng)程式的二進(jìn)制兼容性。這個(gè)機(jī)制源于 Mac OS X 啟用 64 位進(jìn)程,同時(shí)支持 32 位的驅(qū)動(dòng)程式。
數(shù)據(jù)模型
以高階語言編寫的套用軟體,從 32 位架構(gòu)轉(zhuǎn)換到 64 位架構(gòu)的各種困難。一個(gè)共同的問題是,部分程式設(shè)計(jì)師假定指針如同其它數(shù)據(jù)型態(tài)一樣有相同的長(zhǎng)度。程式設(shè)計(jì)師假定他們可以在數(shù)據(jù)型態(tài)之間傳送數(shù)量而不遺失信息。這些假定只在一部分 32 位機(jī)器上如此(甚至是一部分 16 位機(jī)器),不過在 64 位機(jī)器上就不再如此。C 語言及其后代 C++ 尤其容易產(chǎn)生這種錯(cuò)誤。
要在 C 和 C++ 中避免這種錯(cuò)誤,如果確定原始類型的大小為所需的基礎(chǔ),sizeof 操作符可用來確定原始類型的大小,無論是在編譯以及執(zhí)行時(shí)期。此外,在 C99 標(biāo)準(zhǔn)中的 表頭,以及在 C++ 標(biāo)準(zhǔn)中的 表頭的 numeric_limits 類,可提供更多有用的信息;sizeof 只返回字元大小。這個(gè)用法使人產(chǎn)生誤解,因?yàn)橐粋€(gè)字元(CHAR_BITS)的大小是由自身決定,在所有的 C 或 C++ 實(shí)作中并未以相同方式定義。然而,除了這些編譯器目標(biāo) DSP 以外,”64 位 = 8 字元(每一字元有 8 位)”已成標(biāo)準(zhǔn)。
必須謹(jǐn)慎使用 ptrdiff_t 型態(tài)(在標(biāo)準(zhǔn)表頭 中)兩個(gè)指針相減的結(jié)果;太多代碼寧可不正確的使用”int”或”long”。表示一個(gè)指針(而不是指針差異)為一個(gè)整數(shù),在此可以使用 uintptr_t(它只定義在 C99 中,不過某些編譯器另外集成較早版本的標(biāo)準(zhǔn)以提供之,作為一個(gè)擴(kuò)充)。
C 和 C++ 并未定義指針、整數(shù)型(int)、長(zhǎng)型(long)為特定的位數(shù)目。
在主要的 32 位機(jī)器程式設(shè)計(jì)環(huán)境中,指針、”int”變數(shù)、”long”變數(shù)全部都是 32 位長(zhǎng)。
然而,在 64 位機(jī)器下的許多程式設(shè)計(jì)環(huán)境,”int”變數(shù)仍然是 32 位寬,不過”long”和指針是 64 位寬,上述內(nèi)容稱為 LP64 數(shù)據(jù)模型。另一個(gè)選擇是 ILP64 數(shù)據(jù)模型,三種數(shù)據(jù)型態(tài)都是 64 位寬,甚至 SILP64 連”short”變數(shù)也是 64 位寬。然而,大多數(shù)情況下所需的修改是相對(duì)次要且簡(jiǎn)單,而且許多編寫良好的程式可以簡(jiǎn)單的重新編譯給新的環(huán)境,而無須修改。另一個(gè)選擇是 LLP64 模型,其維持 32 位代碼的兼容性,使 int 和 long 為 32 位?!盠L”指”long long”型態(tài),其在所有平臺(tái)下至少是 64 位,包括 32 位環(huán)境。
今天有許多 64 位編譯器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 本地編譯器)。微軟的 VC++ 編譯器使用 LLP64 模型。其缺點(diǎn)是在 LP64 模型中將 long 存放到 int 可能會(huì)溢出。另一方面,還會(huì)使強(qiáng)制轉(zhuǎn)型一個(gè)指針為 long 可以作用;在 LLP 模型下,情況則剛好相反。兩者皆不應(yīng)該出現(xiàn)在合乎 C99 的代碼中。
注意,程式設(shè)計(jì)模型是在預(yù)編譯器底層選擇的,且數(shù)個(gè)模型可共存于同一作業(yè)系統(tǒng)。然而一般由 OS API 選擇程式設(shè)計(jì)模型作為原始模型。
另一個(gè)考量是用于驅(qū)動(dòng)程式的數(shù)據(jù)模式。在現(xiàn)代的作業(yè)系統(tǒng)中,驅(qū)動(dòng)程式彌補(bǔ)了大多數(shù)的作業(yè)系統(tǒng)代碼(盡管許多代碼可能不會(huì)載入,當(dāng)作業(yè)系統(tǒng)執(zhí)行時(shí))。許多驅(qū)動(dòng)程式大量使用指針操控?cái)?shù)據(jù),且在某些情況下必須讀入一定大小的指針進(jìn)入支持 DMA 的硬體。舉個(gè)例子,提供給 32 位 PCI 設(shè)備的驅(qū)動(dòng)程式,請(qǐng)求設(shè)備的 DMA 數(shù)據(jù)進(jìn)入 64 位機(jī)器記憶體的較高區(qū)域,可能無法滿足來自作業(yè)系統(tǒng)從設(shè)備到大于 4 GB 記憶體讀入數(shù)據(jù)的要求。因?yàn)閷?duì)于這些地址的指針,將不適合設(shè)備的 DMA 暫存器。這個(gè)問題可如下解決,當(dāng)向設(shè)備發(fā)出 DMA 請(qǐng)求時(shí),OS 采用與設(shè)備相符的記憶體限制,或者使用 IOMMU。
發(fā)展歷程
1961︰IBM 發(fā)表 IBM 7030 Stretch 超級(jí)計(jì)算機(jī)。它使用 64 位數(shù)據(jù)字組,以及 32 或 64 位的指令字組。
1974︰Control Data Corporation 推出 CDC Star-100 向量超級(jí)計(jì)算機(jī),它使用 64 位字組架構(gòu)(先前的 CDC 系統(tǒng)是以 60 位架構(gòu)為基礎(chǔ))。
1976︰Cray Research 發(fā)表之一臺(tái) Cray-1 超級(jí)計(jì)算機(jī)。它以 64 位字組架構(gòu)為基礎(chǔ),它成為后來的 Cray 向量超級(jí)計(jì)算機(jī)的基礎(chǔ)。
1983︰Elxsi 推出 Elxsi 6400 平行微型超級(jí)計(jì)算機(jī)。Elxsi 架構(gòu)具有 64 位數(shù)據(jù)暫存器,不過地址空間仍是 32 位。
1991︰MIPS科技公司生產(chǎn)之一臺(tái) 64 位微處理器,作為 MIPS RISC 架構(gòu) R4000 的第三次修訂版本。該款 CPU 使用于以 IRIS Crimson 啟動(dòng)的 SGI 圖形工作站。然而,IRIX 作業(yè)系統(tǒng)并未包含對(duì) R4000 的 64 位支持,直到 1996 年釋出 IRIX 6.2 為止。Kendall Square Research 發(fā)表他們的之一臺(tái) KSR1 超級(jí)計(jì)算機(jī),以專有的執(zhí)行于 OSF/1 的 64 位 RISC 處理器架構(gòu)為基礎(chǔ)。
1992︰Digital Equipment Corporation(DEC)引入純 64 位 Alpha 架構(gòu),其誕生自 PRI 項(xiàng)目。
1993︰DEC 釋出 64 位 OSF/1 AXP 類Unix 作業(yè)系統(tǒng)(后來改名為 Tru64 UNIX)和 OpenVMS 作業(yè)系統(tǒng)給 Alpha 系統(tǒng)。
1994︰Intel 宣布 64 位 IA-64 架構(gòu)的進(jìn)度表(與 HP 共同開發(fā))作為其 32 位 IA-32 處理器的繼承者。以 1998–1999 推出時(shí)間為目標(biāo)。SGI 釋出 IRIX 6.0,即支持 64 位的 R8000 CPU。
1995︰Sun 推出 64 位 SPARC 處理器 UltraSPARC。富士通所有的 HAL 計(jì)算機(jī)系統(tǒng)推出以 64 位 CPU 為基礎(chǔ)的工作站,HAL 獨(dú)立設(shè)計(jì)的之一代 SPARC64。IBM 釋出 64 位 AS/400 系統(tǒng),能夠轉(zhuǎn)換作業(yè)系統(tǒng)、資料庫(kù)、應(yīng)用程式的升級(jí)。DEC 釋出 OpenVMS Alpha 7.0,之一個(gè)全 64 位版本的 OpenVMS for Alpha。
1996︰HP 釋出 PA-RISC 處理器架構(gòu)的 64 位 2.0 版本的實(shí)作 PA-8000。 任天堂引入 Nintendo 64 電視游戲主機(jī),以低成本的 MIPS R4000 變體所打造。
1997︰IBM 釋出 RS64 全 64 位 PowerPC 處理器。
1998︰IBM 釋出 POWER3 全 64 位 PowerPC/POWER 處理器。Sun 釋出 Solaris 7,以完整支持 64 位 UltraSPARC。
1999︰Intel 釋出 IA-64 架構(gòu)的指令集。AMD 首次公開 64 位集以擴(kuò)充給 IA-32,稱為 x86-64(后來改名為 AMD64)。
2023︰IBM 推出他自己的之一個(gè)兼容 ESA/390 的 64 位大型計(jì)算機(jī) zSeries z900,以及新的 z/OS 作業(yè)系統(tǒng)。緊接著是 64 位 Linux on zSeries。
2023︰Intel 終于推出他的 64 位處理器產(chǎn)品線,標(biāo)記為 Itanium,主打頂級(jí)伺服器。它無法滿足人們的期待,因一再拖延 IA-64 市場(chǎng)而導(dǎo)致失敗。Linux 是之一個(gè)可執(zhí)行于該處理器的作業(yè)系統(tǒng)。
2023︰Intel 引入 Itanium 2 作為 Itanium 的繼承者。
2023︰AMD 產(chǎn)出他的 AMD64 架構(gòu) Opteron 以及 Athlon 64 處理器產(chǎn)品線。Apple 也推出 64 位”G5″PowerPC 970 CPU courtesy of IBM,并連同升級(jí)他的 Mac OS X 作業(yè)系統(tǒng),其增加對(duì) 64 位模式的部分支持。若干 Linux 發(fā)行版本釋出對(duì) AMD64 的支持。微軟宣布將為 AMD 晶片建立新的 Windows 作業(yè)系統(tǒng)。Intel 堅(jiān)持 Itanium 晶片仍維持只有 64 位的處理器。
2023︰Intel 承認(rèn) AMD 在市場(chǎng)上的成功,并著手開發(fā) AMD64 延伸的替代品,稱為 IA-32e,稍后改名為 EM64T。升級(jí)版本的 Xeon 和 Pentium 4 處理器家族支持了新推出的指令。Freescale 宣布 64 位 e700 core,以繼承 PowerPC G4 系列。VIA Technologies 宣布 Isaiah 64 位處理器。
2023︰Sun 于 1 月 31 日釋出支持 AMD64 和 EM64T 處理器的 Solaris 10。3 月,Intel 宣布其之一個(gè)雙核心 EM64T 處理器 Pentium Extreme Edition 840 和新的 Pentium D 晶片將于 2023 第二季推出。4 月 30 日,微軟公開釋出提供給 AMD64 和 EM64T 處理器的 Windows XP Professional x64 Edition。5 月,AMD 引入他的之一個(gè)雙核心 AMD64 Opteron 伺服器 CPU,并宣布其桌上型版本,稱為 Athlon 64 X2。將原本的 Athlon 64 X2 (Toledo) 處理器改為兩個(gè)核心,并為每個(gè)核心的 L2 配上 1 MB 高速快取記憶體,以大約 2.332 億個(gè)電晶體組成。它有 199 mm2 那么大。7 月,IBM 宣布他最新的雙核心 64 位 PowerPC 970MP (codenamed Antares),由 IBM 和 Apple 使用。微軟釋出 Xbox 360 游戲主機(jī),其使用由 IBM 生產(chǎn)的 64 位、三核心 Xenon PowerPC 處理器。
2023︰雙核心 Montecito Itanium 2 處理器進(jìn)入生產(chǎn)。Sony、IBM、Toshiba 開始生產(chǎn)用于 PlayStation 3、伺服器、工作站以及其它套用的 64 位 Cell 處理器。蘋果公司在新的 Mac Pro 和 Intel Xserve 計(jì)算機(jī)中采用 64 位 EM64T Xeon 處理器,稍后更新 iMac、MacBook、MacBook Pro 使用 EM64T Core 2 處理器。
當(dāng)前架構(gòu)
屬于 64 位的微處理器架構(gòu)(2023年)有︰
DEC Alpha 架構(gòu)(查看 Digital Alpha timeline)
Intel 的 IA-64 架構(gòu)(用于 Intel 的 Itanium CPU)
x86-64 架構(gòu),64 位版本的 x86 架構(gòu)(又稱作”x64″)
AMD 的 AMD64(用于 AMD 的 Athlon 64、Opteron、Sempron、Turion 64 CPU)
Intel 的 Intel64(用于 Intel 的新型 Pentium 4、Xeon、Core 2 CPU)
SPARC 架構(gòu)(從 SPARC V9 開始的 64 位)
Sun 的 UltraSPARC 架構(gòu)
Fujitsu 的 SPARC64 架構(gòu)
IBM 的 POWER 架構(gòu)(從 POWER3 和 RS64 變體開始的 64 位)
IBM/Motorola 的 PowerPC 架構(gòu)(從 PowerPC 620 和 PowerPC 970 變體開始的 64 位)
IBM 的 z/Architecture,used by IBM zSeries 和 System z9 大型計(jì)算機(jī),ESA/390 架構(gòu)的 64 位版本
MIPS 科技公司的 MIPS IV、MIPS V、MIPS64 架構(gòu)
HP 的 PA-RISC family(從 PA-RISC 2.0 開始的 64 位)
大部分 64 位處理器架構(gòu)可本地執(zhí)行 32 位版本架構(gòu)的代碼,而無任何效能損失。這種支持通常稱為雙架構(gòu)支持或更普遍的多架構(gòu)支持。
超越
直至 2023年,64位字組似乎已滿足大部分的運(yùn)用。不過仍應(yīng)提到,IBM 的 System/370 及后繼者使用 128 位浮點(diǎn)數(shù),且許多現(xiàn)代處理器也內(nèi)含 128 位浮點(diǎn)數(shù)暫存器。System/370 及后繼者尤其顯著,在這方面,他們也使用多達(dá)16位元組的可變長(zhǎng)度十進(jìn)制數(shù)(即128位)。
圖像
在數(shù)碼圖像中,64 位為附有 16 位 Alpha 通道的 48 點(diǎn)陣圖像。
處理器
這里的64位技術(shù)是相對(duì)于32位而言的,這個(gè)位數(shù)指的是CPU GPRs(General-Purpose Registers,通用暫存器)的數(shù)據(jù)寬度為64位,64位指令集就是運(yùn)行64位數(shù)據(jù)的指令,也就是說處理器一次可以運(yùn)行64bit數(shù)據(jù)。64bit處理器并非現(xiàn)在才有的,在高端的RISC(Reduced Instruction Set Computing,精簡(jiǎn)指令集計(jì)算機(jī))很早就有64bit處理器了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等。
64bit計(jì)算主要有兩大優(yōu)點(diǎn):可以進(jìn)行更大范圍的整數(shù)運(yùn)算;可以支持更大的記憶體。不能因?yàn)閿?shù)字上的變化,而簡(jiǎn)單的認(rèn)為64bit處理器的性能是32bit處理器性能的兩倍。實(shí)際上在32bit套用下,32bit處理器的性能甚至?xí)鼜?qiáng),即使是64bit處理器,目前情況下也是在32bit套用下性能更強(qiáng)。所以要認(rèn)清64bit處理器的優(yōu)勢(shì),不可迷信64bit。
目前主流CPU使用的64位技術(shù)主要有AMD公司的AMD64位技術(shù)、Intel公司的EM64T技術(shù)、和Intel公司的IA-64技術(shù)。其中IA-64是Intel獨(dú)立開發(fā),不兼容現(xiàn)在的傳統(tǒng)的32位計(jì)算機(jī),僅用于Itanium(安騰)以及后續(xù)產(chǎn)品Itanium 2,一般用戶不會(huì)涉及到,因此這里僅對(duì)AMD64位技術(shù)和Intel的EM64T技術(shù)做一下簡(jiǎn)單介紹。
AMD64位技術(shù)
AMD64的位技術(shù)是在原始32位X86指令集的基礎(chǔ)上加入了X86-64擴(kuò)展64位X86指令集,使這款晶片在硬體上兼容原來的32位X86軟體,并同時(shí)支持X86-64的擴(kuò)展64位計(jì)算,使得這款晶片成為真正的64位X86晶片。這是一個(gè)真正的64位的標(biāo)準(zhǔn),X86-64具有64位的定址能力。
X86-64新增的幾組CPU暫存器將提供更快的執(zhí)行效率。暫存器是CPU內(nèi)部用來創(chuàng)建和儲(chǔ)存CPU運(yùn)算結(jié)果和其它運(yùn)算結(jié)果的地方。標(biāo)準(zhǔn)的32-bit x86架構(gòu)包括8個(gè)通用暫存器(GPR),AMD在X86-64中又增加了8組(R8-R15),將暫存器的數(shù)目提高到了16組。X86-64暫存器默認(rèn)位64-bit。還增加了8組128-bit XMM暫存器(也叫SSE暫存器,XMM8-XMM15),將能給單指令多數(shù)據(jù)流技術(shù)(SIMD)運(yùn)算提供更多的空間,這些128位的暫存器將提供在矢量和標(biāo)量計(jì)算模式下進(jìn)行128位雙精度處理,為3D建模、矢量分析和虛擬現(xiàn)實(shí)的實(shí)現(xiàn)提供了硬體基礎(chǔ)。通過提供了更多的暫存器,按照X86-64標(biāo)準(zhǔn)生產(chǎn)的CPU可以更有效的處理數(shù)據(jù),可以在一個(gè)時(shí)鐘周期中傳輸更多的信息。
EM64T技術(shù)
Intel官方是給EM64T這樣定義的:EM64T全稱Extended Memory 64 Technology,即擴(kuò)展64bit記憶體技術(shù)。EM64T是Intel IA-32架構(gòu)的擴(kuò)展,即IA-32e(Intel Architectur-32 extension)。IA-32處理器通過附加EM64T技術(shù),便可在兼容IA-32軟體的情況下,允許軟體利用更多的記憶體地址空間,并且允許軟體進(jìn)行32 bit線性地址寫入。EM64T特別強(qiáng)調(diào)的是對(duì)32 bit和64 bit的兼容性。Intel為新核心增加了8個(gè)64 bit GPRs(R8-R15),并且把原有GRPs全部擴(kuò)展為64 bit,如前文所述這樣可以提高整數(shù)運(yùn)算能力。增加8個(gè)128bit SSE暫存器(XMM8-XMM15),是為了增強(qiáng)多媒體性能,包括對(duì)SSE、SSE2和SSE3的支持。
Intel為支持EM64T技術(shù)的處理器設(shè)計(jì)了兩大模式:傳統(tǒng)IA-32模式(legacy IA-32 mode)和IA-32e擴(kuò)展模式(IA-32e mode)。在支持EM64T技術(shù)的處理器內(nèi)有一個(gè)稱之為擴(kuò)展功能激活暫存器(extended feature enable register,IA32_EFER)的部件,其中的Bit10控制著EM64T是否激活。Bit10被稱作IA-32e模式有效(IA-32e mode active)或長(zhǎng)模式有效(long mode active,LMA)。當(dāng)LMA=0時(shí),處理器便作為一顆標(biāo)準(zhǔn)的32 bit(IA32)處理器運(yùn)行在傳統(tǒng)IA-32模式;當(dāng)LMA=1時(shí),EM64T便被激活,處理器會(huì)運(yùn)行在IA-32e擴(kuò)展模式下。
目前AMD方面支持64位技術(shù)的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技術(shù)的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。
linux mips64 地址空間的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux mips64 地址空間,Linux MIPS64:探究地址空間,64位簡(jiǎn)介及詳細(xì)資料的信息別忘了在本站進(jìn)行查找喔。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長(zhǎng),共創(chuàng)價(jià)值。
文章題目:LinuxMIPS64:探究地址空間(linuxmips64地址空間)
當(dāng)前鏈接:http://fisionsoft.com.cn/article/dhsgpsi.html


咨詢
建站咨詢
