欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

指令和數據混合存儲與分開存儲的比較

系統 1768 0
<!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋體; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} -->

<!-- [endif]--><!-- [if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1030"/> </xml><![endif]--><!-- [if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]-->

指令和數據混合存儲與分開存儲的比較

劉愛貴

(高能物理研究所計算中心 北京 2003年)

摘要 存儲程序概念對計算機的發展影響深遠。本文從總線、指令系統、數據表示、指令相關、編譯對寄存器的管理等幾個相關方面對 . 諾依曼結構的指令和數據混合存儲與哈佛結構的指令和數據分開存儲進行了比較詳細的分析和比較。

關鍵詞 . 諾依曼結構 哈佛結構 總線 指令修改 數據表示 結構相關 數據相關 寄存器管理

<!-- [if gte vml 1]><v:line id="_x0000_s1026" style='position:absolute; left:0;text-align:left;z-index:251656192' from="0,7.8pt" to="477pt,7.8pt"/><![endif]--><!-- [if !vml]--><!-- [endif]-->

1946 Von Neumann 在“電子計算機邏輯設計的初步討論”一文中,首次提出了存儲程序概念( stored program concept ),這是馮 . 諾依曼設計思想的核心。馮 . 諾依曼結構中指令和數據是不加區別混合存儲在同一存儲器中的,程序執行時通過譯碼來識別指令和數據。這種思想在現代計算機中仍被廣泛應用。與馮 . 諾依曼結構混合存儲思想相對應的是一種稱為哈佛結構的設計思想,其指令和數據分開存儲的,即指令和數據分別存儲于不同的存儲器中。這種設計思想廣泛用于單片機的設計中。 眾所周知,計算機的工作體現為程序的執行,計算機功能的擴展在很大程度上體現為所存儲程序的擴展。 [1] . 諾依曼結構和哈佛結構的存儲器設計思想各有優缺點,本文將就幾個相關方面對兩者進行分析和比較。

. 諾依曼結構(如圖 1 所示)指令和數據是不加區別混合存儲的、共享數據總線,因而取指令和取操作數是不可以同時進行的。而哈佛結構(如圖 2 所示)指令和數據是完全分開的,存儲器分為固定大小的兩個部分,分別用來存放指令和數據。這樣取指令和取操作數可以同時進行。從圖 1 可以看到,馮 . 諾依曼結構中,數據和程序存儲器是共享數據總線的。數據總線共享有許多優點,它可以減少總線的開銷,這樣控制邏輯也相對簡單。哈佛結構中必須設置各自獨立的數據總線和地址總線用于訪問指令存儲器和數據存儲器,不僅總線開銷增大許多,控制邏輯更復雜。如果要和外部的程序和數據存儲器進行交互,對于兩部分存儲器來說,由于地址總線和數據總線的相互獨立,就需要額外增加大量的芯片管腳。共享數據總線的另一個優點在于能夠把 RAM 映射到程序空間,這樣設備也能訪問 EEPROM 中的內存。對于指令和數據存儲器采用獨立的地址和數據總線來說,映射是非常困難的。哈佛結構中指令和數據可以同時進行訪問,能夠在一個周期內同時同時取指令和取操作數,這相應減少了指令執行時間,從而提供了很高的并行度,提高了數據吞吐率。因此并行存儲指令和專用指令可以在這種結構上得到充分利用。馮 . 諾依曼結構中不能同時取指令和取操作數,由于存儲器存取速度遠遠低于 CPU 運算速度,從而使計算機運算速度受到很大限制, CPU 與共享存儲器間的數據交換成了影響高速計算和系統性能的“瓶頸”。


<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:300.75pt; height:75pt' o:ole=""> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.png" mce_src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]--><!-- [if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1025" DrawAspect="Content" ObjectID="_1319481136"> </o:OLEObject> </xml><![endif]-->

<!-- [if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:298.5pt;height:75pt' o:ole=""> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image004.png" mce_src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image004.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]--><!-- [if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1026" DrawAspect="Content" ObjectID="_1319481137"> </o:OLEObject> </xml><![endif]-->

存儲器在現代計算機中作為全機數據傳送的中心,不僅要向高速運行的 CPU 提供所需的指令的數據外,還需承擔同 CPU 并行工作的大量的外部設備和終端所輸入和輸出的數據的讀寫工作。 [1] 可見存儲器已經成為影響整個計算機系統運行速度的一個關鍵因素,尤其是在高性能的計算機系統中。存儲器的有效利用和可擴充性在體系結構中也是很重要的。馮 . 諾依曼結構中,共享數據總線,即取指令和取數據的帶寬是相同的,只要總線位數足夠多,存儲器的擴充是很容易的。哈佛結構中,指令存儲器和數據存儲器使用相互獨立的地址總線和數據總線,因而地址總線和數據總線可以采用不同的寬度。例如,指令存儲器的數據總線可以是 8 位、 16 位或 32 位的,而指令存儲器的數據總線是 12 位、 14 位或 16 位的。兩個存儲器數據總線寬度不相互制約,這樣可以通過增加數據存儲器和總線寬度來實現更大的存儲帶寬,從而縮小存儲器與 CPU 的速度差異。采用哈佛結構的單片機數據線和指令線分離,由于一般指令線寬于數據線,使其較之馮 . 諾依曼結構單片機指令包含更多的處理信息,執行效率更高、速度亦更快。同時這種單片機指令多為單字節, 指令存儲器的利用率大大提高,有利于實現超小型化。指令和數據集中存儲一個優點是存儲空間的利用率較高,哈佛結構的指令和數據分開存儲可能會導致存儲空間利用率比較低。實際的程序,指令和數據的比例一般不會為 1 1 ,甚至兩者相差很大,所以經常會出現一個存儲器放得很滿,另一個存儲器比較空的情況。現代計算機中的高速緩沖存儲器 Cache ,第一級 Cache 層次采用哈佛結構,把 Cache 分為指令 Cache 和數據 Cache 兩個部分,而主存儲器采用馮 . 諾依曼結構,只有一個,由指令的數據合用。如此將馮 . 諾依曼結構和哈佛結構結合起來,不僅可以提高主存儲器的利用率,而且可以提高程序執行的效率,縮短指令執行的時鐘周期。

指令和數據混合存儲,即一個存儲單元在解釋時期其性質是含混的。這個含混性只有當被取出或當成一條指令來執行或當成一個數據來操作時才暫時地能分辨出來。 [3] 對含混的開拓之一,產生了指令修改技術。即在計算機的運算器中作為某些操作的結果產生的數據,和其他的數據一樣放在存儲器中,但以后當作指令來取出和執行。迭代法的實現就是靠把指令當成數據取出,對它的地址段進行修改,然后把它存起來,并把它當成一條指令再取出和再執行。假設在哈佛結構中實現迭代法,可以想象是非常困難的。哈佛結構中,指令和數據是嚴格區分的,分別存儲在不同的存儲器中,從指令存儲器中取出來的 CPU 只會把它當成指令進行處理,而不會當作數據處理。所以指令的自我修改是很難實現的。指令自我修改技術在指令系統設計中的微程序設計中得到了非常成功的應用。機器語言的一條指令對應于一個微程序。 微程序從微程序入口開始執行。每條微指令執行完畢后,都要根據其順序控制字段的規定形成后續微地址,寫入微地址寄存器 uAR ,保證微程序的連續執行。 [2] 一些微指令的后續微地址不是按增量的方式形成的,在執行前是不確定的,例如條件轉移微指令,只能在當前微指令執行結束后根據測試條件確定后續微指令的地址,然后寫入微地址寄存器中,使后續微指令順利調入和執行。

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="0" Name="header"/> <w:LsdException Locked="false" Priority="0" Name="footer"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="0" Name="page number"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:"/@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --><!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋體; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} --> <!-- [endif]-->

指令與數據不加區別混合存儲,操作數本身沒有屬性標志,其類型要由指令的操作碼確定。 [1] 對于不同的數據類型,雖然進行同一種操作,也要設置不同的操作碼。例如,加法就要用定點加、浮點加、浮點雙字加、十進制加等不同的操作碼來區分不同操作數的數據類型。高級語言中用說明語句來指明數據類型,數據類型直接屬于數據本身,因而運算符對各種數據類型是通用的,運算符中并不需要有數據類型的含義。所以機器語言指令的數據表示方法同高級語言的對數據屬性的說明之間有很大的語義差距。究其原因,主要是指令和數據是無法區分造成的。因而馮 . 諾依曼結構中多采用 CISC 指令系統。哈佛結構中指令和數據是完全分開的,這種天然的屬性使我們可以采用一種帶標志的數據表示方法(如圖 3 所示)來縮小語義差距。這樣每種操作只要用一種操作碼,指令類型就較少,所需指令操作碼位數減少,可以簡化編譯器的設計。所以在哈佛結構中采用 RISC 指令系統是很自然的。當然,采用帶標志符的數據表示需要增加硬件來進行數據類型的判別和轉換,但這比馮 . 諾依曼結構中用軟件變換效率要高得多,且生成的目標代碼較短。


指令級并行是提高計算機性能的一個主要方向,其中一個重要技術是指令流水。但是流水線中會因為指令間的相關而造成流水線的停頓,使指令不能連續不斷地進入流水線,其結果是降低流水線的工作效率,使流水線達不到理想 CPI 1 的目標。流水線指令相關具體分為結構相關、數據相關和控制相關。 哈佛結構可以免除許多結構相關和因寄存器中數據相關引起的問題 [1]

結構相關是由流水線中的指令間爭用有限硬件資源引起的。解決結構相關可以采取把有沖突的資源配置多套的辦法。馮 . 諾依曼結構中存儲器沖突的結構相關在取指令( IF )和訪存( MEM )階段是經常發生的,即某指令需取指令的同時另一條指令在等待訪存取操作數。由于取指令和取操作數不可以同時進行,造成了流水線若干時鐘周期的延遲。這個問題在哈佛結構中被天然地解決了,其指令和數據是分開的, IF MEM 可以同時進行,根本不會產生 IF MEM 的結構相關問題。數據相關是由重疊執行的指令引用同一個存儲單元或同一個通用寄存器引起的。哈佛結構由于取指令和取操作數的同時進行,則很大部分的操作數不必事先取出放入寄存器中暫存,而是直接可以從數據存儲器中取出送入 ALU 部件進行運算。由于沒有引用寄存器,很多寄存器的數據相關問題在無形中得到了完美的解決。而在馮 . 諾依曼結構中就沒有這樣幸運了,需要通過設置旁路數據源、指令調度和寄存器改名等方法來盡量解決,如果實在無法解決就只好暫停流水線。

寄存器對應用程序是透明的,寄存器的分配和管理全部由編譯程序來負責。計算機系統中的寄存器數量是非常的限的,為了高效合理地分配和利用寄存器,編譯程序要運用復雜的策略進行分配。寄存器分配是一個 NP 完全問題,所以少引用寄存器將會給編譯程序減輕不小的工作量。哈佛結構由于減少了常用數據暫存寄存器的工作量,這樣寄存器的分配和管理就會簡單很多,從而簡化了編譯程序的設計。馮 . 諾依曼結構中必須事先將數據讀入寄存器中暫存,指令執行時再從寄存器送入 ALU 部件進行運算,這就需要大量的寄存器。可是寄存器數量是很有限的,這個矛盾要由編譯程序的合理分配來緩和,這加重了編譯程序的負擔,編譯程序的設計也將變得更復雜。

如果僅僅從存儲器的角度來看,哈佛結構的優越性更多一些。程序的執行最終需要明確區分指令和數據,假設馮 . 諾依曼結構存儲單元的含混性直到指令執行時仍沒有得以區分,程序是沒有辦法執行的。 Von Neumann IAS 體系結構設計中一個很重要的設計思想是設置了各種寄存器,其中有數據寄存器 DR 和指令寄存器 IR ,這與哈佛結構的設計思想是一致的。文章前面所提到的指令自我修改技術,哈佛結構實現起來比較困難,但并不是實現不了。完全可以設計一條專用地址修改指令用于修改指令的地址段,同樣可以達到指令修改的目的。由此可見,馮 . 諾依曼結構和哈佛結構并不是完全對立的,兩者也有著微妙的聯系。在計算機體系設計中,若能將兩者的優點有機結合起來可能會取得非常好的實際效果。文章前面所提到的存儲層次設計就是一個很好的例證, Cache 采用哈佛結構,而主存儲器采用馮 . 諾依曼結構,這樣不僅縮短了指令執行周期,而且提高了存儲器的利用率。

[ 參考文獻 ]

[1] 孫強南、孫昱東        計算機系統結構 2002.7 科學出版社

[2] 、俸遠禎、閻慧娟、羅克露    計算機組成原理 1996.4 電子工業出版社

[3] 張效強            計算機科學技術百科全書 1998.8 清華大學出版社

指令和數據混合存儲與分開存儲的比較


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 爱婷婷网站在线观看 | 国产一国产一有一级毛片 | 性色av免费在线观看 | 国产成人综合一区二区三区 | 天天碰夜夜 | 在线观看欧美三级 | 欧美一级片免费看 | 欧美黑人激情 | 国产精品毛片久久久久久久 | 久久草视频这里只精品 | 奇米影视第四色av首页 | 污污的网站在线观看 | 精品久久久久久久久久 | 成人国产欧美精品一区二区 | 欧美精品免费线视频观看视频 | 一级做a爰片欧美一区 | 亚洲精品免费在线 | 男女性刺激爽爽免费视频 | 欧美日韩一二三区 | 美美女高清毛片视频免费观看 | 亚洲一二三 | 久久精彩免费视频 | 香蕉久久久久久狠狠色 | 日日骚av| 日韩av影院在线观看 | 国产精品久久九九 | 在线视频 中文字幕 | 国精品日韩欧美一区二区三区 | 天堂网成人 | 99精品国产在热久久 | 国产福利视频一区 | 一级视频在线 | 亚州中文 | 国产1区在线观看 | 92精品国产自产在线 | 免费久久一级欧美特大黄 | 午夜激情视频在线 | 欧美成人精品一区二区男人看 | 嫩草影院观看 | 久久久一区二区三区视频 | 免费精品久久久久久中文字幕 |