<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > X86,你了解多少?

X86,你了解多少?

發(fā)布人:電巢 時(shí)間:2022-12-05 來(lái)源:工程師 發(fā)布文章
image.png


8008功能列表中最突出的新增功能之一是提供了具有直接尋址存儲器位置的間接尋址,到一條指令,然后在該指令中獲取該地址的數據內容間接尋址該引用存儲器的內容的位置,location實(shí)際上是指向數據實(shí)際所在的另一個(gè)位置的指針。

在直接尋址中允許使用一些強大的軟件技術(shù)說(shuō)我們在內存中存儲了五個(gè)句子,代表該句子中的每個(gè)字符一個(gè)字節并以句點(diǎn)終止,我們的程序會(huì )將句點(diǎn)視為句子的結尾,這就是我們的程序工作要到的數據字符串。隨機選擇五個(gè)句子中的一個(gè),并傳遞第一個(gè)的地址所選句子在程序另一部分的特征,我們知道有五個(gè)句子,所以我們的程序首先選擇一個(gè)隨機一到五之間的數字,但是我們如何轉換之間的這個(gè)隨機數。如果我們創(chuàng )建一個(gè)列表,則為列表中句子的地址的一到五包含五行的表格,并在每一行中填入每個(gè)句子的地址,我們分別創(chuàng )建了一個(gè)所謂的向量表,該向量表現在可以通過(guò)指向句子地址來(lái)映射一到五之間的數字如果我們的程序隨機選擇了三個(gè),則存儲在表格規則中存儲在表中第三行的地址,該地址指向我們的程序現在將在向量表上傳遞的第三句話(huà)很常見(jiàn),但在8008軟件中強大地使用間接尋址還實(shí)現了一種稱(chēng)為中斷的機制,允許硬件中斷信號和內部CPU事件以暫停程序執行并跳到很小的位置。

中斷事件的代碼示例的高優(yōu)先級區域可能是實(shí)時(shí)時(shí)鐘信號觸發(fā)外部硬件,例如鍵盤(pán)或CPU內部狀態(tài)的更改,甚至程序代碼也可以。在執行中斷服務(wù)代碼后觸發(fā)一個(gè)中斷,原始程序將恢復中斷以允許快速響應并降低開(kāi)銷(xiāo)。例如在鼠標移動(dòng)時(shí)要在主程序之外執行的代碼,硬件發(fā)出信號通知CPU暫停其當前代碼執行并跳轉至專(zhuān)門(mén)用于處理鼠標事件的代碼,此代碼的位置是通常由中斷向量表指向,該代碼可能會(huì )執行一些數學(xué)運算以更新當前的鼠標光標位置并單擊狀態(tài),然后觸發(fā)對光標位置的更新屏幕最終將CPU傳回觸發(fā)中斷之前運行的代碼。


機制是將外部硬件連接到CPU的關(guān)鍵部分,并且在我們今天所謂的設備驅動(dòng)程序中大量使用的另一個(gè)副作用是能夠暫停程序并控制CPU的能力是中斷代碼可以將對CPU的控制權返回到完全不同的狀態(tài)。

8008為現代臺式機奠定了基礎在當今的處理器中可以找到其DNA的CPU,這是CPU的快速步伐。1974年,隨著(zhù)第一個(gè)真人版的推出,進(jìn)化達到了另一個(gè)里程碑現代臺式機CPU的前身Intel 8080。8080以n大規模半導體技術(shù)為基礎而制造最高可達三分之一兆赫茲,比硅片有顯著(zhù)改善以前的CPU的門(mén)技術(shù)可以處理16位內存,允許使用多達64 KB。盡管它是8位處理器,但它也可以執行有限的16位。8080的運作是英特爾產(chǎn)品線(xiàn)中第一個(gè)利用外部總線(xiàn)控制器,該支持芯片負責接口通過(guò)RAM和其他系統硬件組件,這些通信是通常稱(chēng)為輸入/輸出或IO,它允許CPU進(jìn)行接口具有較慢的內存和IO,且它們以較慢的系統時(shí)鐘速度運行

比CPU的時(shí)鐘速度還增強了整體電氣噪聲抗干擾8080被許多人認為是第一個(gè)真正可用的微處理器。然而,競爭的處理器架構在此期間不斷涌現。


未來(lái)幾年,桌面計算的興起將由具有競爭性的zilog z80 CPU,具有諷刺意味的是,它是Intel自己增強的擴展,8080是由前英特爾工程師federico fuji intel設計的。這是一個(gè)非常先進(jìn)的32位CPU,稱(chēng)為8800,該項目被證明是雄心勃勃,最終在商業(yè)上失敗了在ia px 432于80年代初發(fā)布時(shí),需要對z80威脅日益嚴重,這導致了始于1976年的更現實(shí)的項目。三個(gè)月之內,只剩下四名工程師,并且沒(méi)有CAD工具,他們的回應的第一次修訂是在兩年之內創(chuàng )建的,將設計精煉成最終產(chǎn)品,以保持與以下代碼的代碼兼容性:流行的基于8080的產(chǎn)品線(xiàn)是CPU演進(jìn)的下一個(gè)重要里程碑。

1978年6月8日,著(zhù)名的英特爾8086的發(fā)布確保了其在x86即時(shí)可識別的綽號,計算歷史。8086架構造就了Intel最成功的產(chǎn)品線(xiàn),處理器采用ae86提供的更多以軟件為中心的方法,旗艦處理器系列中前所未有的功能設計為全16位CPU,它提供了8個(gè)通用16位具有四個(gè)流寄存器的寄存器,能夠用作雙精度寄存器,在n Mo技術(shù)中實(shí)現的8位寄存器通過(guò)冒險遷移實(shí)現到英特爾的H mas工藝,它的時(shí)鐘頻率最高可達到10兆赫茲與這項新性能相結合,可以更好地管理內存,添加了8086托管內存也是其最著(zhù)名的方式之一,具有20位地址容量的特性利用完整的兆字節內存來(lái)利用更大的地址空間,在16位系統中使用,直到在將哪些存儲位置分配給了一個(gè)存儲段地址,以及相對于網(wǎng)段本身的地址,可以認為是為系統內存的一部分分配一個(gè)16位查看窗口。

8086的管理機制允許四個(gè)同時(shí)段專(zhuān)門(mén)為可執行代碼1分配的定義1為數據1的定義一個(gè)額外的多用途段中的堆棧被認為是麻煩的。一些程序員編寫(xiě)的系統,但對于當時(shí)的普通用戶(hù)來(lái)說(shuō)也是一種方便較小的程序,因為它提供了一個(gè)16位內存片的偽沙箱,如果您曾經(jīng)在80年代或90年代末運行過(guò)dos comp程序文件,其中的該文件是設計使然的內存段的實(shí)際二進(jìn)制轉儲,由處理器執行,并與以軟件為中心的精神保持一致,通過(guò)增加對高級編程語(yǔ)言的支持,軟件設計中常用的更強大的堆棧指令集,代碼被組織成稱(chēng)為子例程的塊,有時(shí)也可以稱(chēng)為功能過(guò)程或子程序。

image.png


為了說(shuō)明這一點(diǎn),假設我們制作了一個(gè)程序,該程序可以找到成千上萬(wàn)的數字對有效執行此操作,我們編寫(xiě)了一段代碼取兩個(gè)數字即可計算出它們的平均值,然后將其返回給我們的程序現在遍歷調用子例程以執行的數字對列表計算并在以下情況下將結果返回到主程序序列,程序跳轉到需要存儲其當前內存的子例程位置,以便它可以在子例程后返回到主程序完成它還需要一個(gè)地方來(lái)存儲要發(fā)送到子例程的數據,這可以通過(guò)一種稱(chēng)為堆棧的內存機制來(lái)解決,該機制用于存儲內存臨時(shí)信息,內存堆棧直接從自助餐廳取名彈簧式托盤(pán)分配器,當您將新托盤(pán)推入堆棧時(shí)當下一個(gè)人從堆疊頂部彈出托盤(pán)時(shí),他們得到了頂部最后一個(gè)被推入的正是存儲器堆棧操作數據的方式被推入,然后彈出處理堆棧的CPU指令操作實(shí)際上稱(chēng)為push和pop數據的某些變體,可以是反復推送,但是當彈出時(shí),您總是會(huì )獲得最新的數據將這種行為推入堆棧時(shí),這種行為稱(chēng)為“先進(jìn)先出”程序調用子程序的數據并將返回地址壓入堆棧,子例程然后將數據從堆棧中復制出來(lái)而不彈出它,這是稱(chēng)為堆棧偷看,然后執行其工作,結果通常是完成后寫(xiě)入寄存器,然后彈出并返回地址,將發(fā)送的數據從堆棧中移出并返回到主程序,當調用子例程時(shí),必須明確定義其數據要求,以便如果存在錯誤,則可以將正確數量的數據推入堆棧,該代碼可以將不正確的數據量壓入堆棧將在子例程調用中彈出,這可能導致堆棧改變,大小意外地轉移到其分配的內存之外或循環(huán)本身就稱(chēng)為堆棧溢出,可能會(huì )導致程序,崩潰基于堆棧的崩潰的其他來(lái)源正在彈出錯誤的數據作為,返回地址并使子例程返回到內存中的隨機位置。


CPU跳到意外地址并開(kāi)始執行時(shí)發(fā)生崩潰,不是程序代碼的數據,因為它可以有效地以編程方式執行機器變得毫無(wú)用處,使機器變得毫無(wú)反應。8086及其成功鞏固了英特爾對密鑰的承諾,結構體系或復雜指令集計算機的特征,盡管8080使用了輔助架構,并且其模型得到了增強。

80-85的繼任者8086標志著(zhù)英特爾向全面發(fā)展的過(guò)渡,采用Sisk體系結構,其健壯的指令集僅包含一個(gè)少數使用sisk架構的cpus是一個(gè)相對罕見(jiàn)的設計與主要風(fēng)險或減少指令集的計算機相比時(shí)的選擇。即使在今天,x86 cpus體系結構仍然是唯一的主線(xiàn)處理器。使用輔助指令設置RISC CPU和Sisk之間的差異,CPU位于各自的指令集中以及它們的執行方式,在RISC CPU中,指令盡可能保持簡(jiǎn)單和原始。

整個(gè)指令集通常很小,結構緊湊解碼非常簡(jiǎn)單,執行迅速,一般來(lái)說(shuō),指令每個(gè)時(shí)鐘周期處理一次。但是,在RISC中,復雜性的負擔由軟件承擔必須以編程方式綜合復雜的操作,這是一個(gè)很好的例子。實(shí)際上,許多早期的RISC處理器缺乏以下能力:將數字相乘就需要幾條指令來(lái)執行簡(jiǎn)單的操作軟件中的乘法運算,因為RISC使用密集的程序代碼執行復雜的操作基于風(fēng)險的程序需要更多的內存,早期的計算內存非常昂貴,價(jià)格超過(guò)50,000美元每兆字節此外,每次獲取新內存時(shí)訪(fǎng)問(wèn)內存的速度都很慢,指令附帶了內存訪(fǎng)問(wèn)瓶頸的性能損失

。Sisk體系結構是Sisk設計中針對這些問(wèn)題的解決方案,指令集功能強大,并支持以下硬件的許多復雜功能:使用更少的指令和更少的操作,可以使cpu復雜程序更容易,使用內存我們的風(fēng)險乘法代碼需要幾條指令,現在可以用一條乘法指令代替執行,因為軟件需要較少的指令來(lái)執行任務(wù),因此減少了訪(fǎng)問(wèn)內存減輕了一些內存裝瓶壓力。Sisk設計的優(yōu)勢在于它使用了正交指令集,當指令集可以在所有指令中運行時(shí),該指令集被認為是正交的。

CPU支持的尋址形式,例如指令是否可以在內存中的任何寄存器以及任何直接或間接地址正交,它的操作數沒(méi)有限制。通過(guò)消除執行改組數據的需求來(lái)降低代碼復雜度在程序中權衡Sisk體系結構是因為指令的復雜性使得指令執行的整體性能較低,它們需要幾個(gè)時(shí)鐘周期才能解碼和執行。娘娘腔的P中的指令您設計起來(lái)非常復雜且棘手進(jìn)一步優(yōu)化RISC吞吐量的技術(shù)處理器很難轉換為Sisk處理器,因為我們將隨著(zhù)時(shí)間的推移探索該系列的后續部分,內存成本最終下降和Sisk提供的優(yōu)勢在今天迅速減少,并且Sisk設計唯一真正支持的是當代,8086的后繼產(chǎn)品主要是因為它需要向后兼容過(guò)去這種痕跡的支持僅是外觀(guān)深厚的現代CPU的模糊界限通過(guò)在其核心處使用RISC設計并包裝,在風(fēng)險和風(fēng)險之間進(jìn)行區分使用兩種體系結構中的技術(shù)將它們放在Sisk外層中,除了采用Sisk架構之外,它的性能也會(huì )降低自從執行以來(lái),在8086中還以新的方式對訪(fǎng)問(wèn)內存進(jìn)行了打擊。一條指令,通常很慢,需要更多的時(shí)鐘周期才能達到完成空閑時(shí)間的時(shí)間是在CPU的提取區域(稱(chēng)為pre)中進(jìn)行的。提取下一條指令,內存將被加載到CPU中,而最后一條指令仍在執行此改進(jìn)的處理吞吐量特別是對于不需要記憶的指令訪(fǎng)問(wèn),因為它減少了CPU處理預取的瓶頸稱(chēng)為流水線(xiàn)技術(shù)的簡(jiǎn)單形式流水線(xiàn)是安排處理周期中的哪些步驟以減少處理。


隨著(zhù)進(jìn)一步發(fā)展,瓶頸和增加吞吐量將探索流水線(xiàn),8086的性能得到了進(jìn)一步的提高,使用8087的專(zhuān)用協(xié)處理器的能力,浮點(diǎn)運算傳統的沃德二進(jìn)制數據表示整數值。CPU輕松處理它們并通過(guò)其算術(shù)邏輯執行算術(shù)單位,但是它的局限性在于執行包含小數點(diǎn)浮點(diǎn)數的更高級的數學(xué)通過(guò)在單詞的位之間編碼十進(jìn)制數來(lái)解決此問(wèn)題,因為浮點(diǎn)數從根本上與CPU算法不兼容在它們上執行數學(xué)運算的硬件必須在軟件中以低效率完成專(zhuān)為浮點(diǎn)數設計的代碼,突破了技術(shù)的局限性。創(chuàng )建8087浮點(diǎn)協(xié)處理器之前的時(shí)間,浮點(diǎn)處理進(jìn)入硬件室,8087設計用于與8086直接截取指令,從總線(xiàn)上為其本身進(jìn)行處理并對其進(jìn)行處理獨立于cpu在需要時(shí)自行獲取內存執行基于浮點(diǎn)的加法減法的能力,乘法除法和平方根也可以計算出先驗指數對數或觸發(fā)指標等功能,計算8087可以執行50,000個(gè)浮點(diǎn)運算,其次,由于它獨立于CPU運行,因此可以進(jìn)行設置,在CPU執行時(shí)同時(shí)執行數學(xué)運算,其他程序指令可協(xié)同使用8086處理器的成功

與1970年代后期在計算歷史上的另一次大獲成功有關(guān)新的個(gè)人計算機行業(yè)被Commodore之類(lèi)的公司所主導Atari Apple和Tandy公司的年度預計增長(cháng)超過(guò)在80年代初期,有40%的個(gè)人計算機市場(chǎng)引起了人們的關(guān)注大型機巨頭IBM的謠言開(kāi)始傳播IBM進(jìn)入市場(chǎng)。在1981年8月12日僅12個(gè)月的快速發(fā)展階段之后個(gè)人計算機或PC首次由8086的變體提供支持。

8088立刻獲得了成功,PC體積小巧輕便且易于使用被定位為個(gè)人計算機,任何人都不得宣布超過(guò)40,000個(gè)單位的大型公司后,第一年就賣(mài)出了十萬(wàn)輛,它很快超過(guò)了Apple 2,成為最暢銷(xiāo)的個(gè)人計算機。在這段時(shí)間里,來(lái)自truffaut數據的兩位年輕企業(yè)家沒(méi)有合作微軟獲得了為IBM開(kāi)發(fā)操作系統的合同PC被稱(chēng)為PC DOS,他們的第一個(gè)主要產(chǎn)品鞏固了Microsoft的統治地位,在行業(yè)中,并直接導致它成為最大的公司之一。PC的成功成就了使IBM創(chuàng )建兼容IBM的公司機器的硬件和軟件包開(kāi)始大量涌入市場(chǎng),以支持這個(gè)新平臺使PC迅速成為個(gè)人計算機的標準,它已經(jīng)超越了最初的IBM根基而發(fā)展了幾十年,但仍然保持著(zhù),如今在個(gè)人計算機市場(chǎng)上的主導地位使這種流行成為可能當今個(gè)人計算機和服務(wù)器中PC架構的持久性8086的遺產(chǎn)。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: x86

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>