




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機體系結構周學海xhzhou@.c國科學技術大學計算機體系結構03/06-review-性能性能度量響應時間(responsetime)吞吐率(Throughput)CPU執行時間=IC×CPI×TCPI(CyclesperInstruction)MIPS=MillionsofInstructionsPerSecondLatencyversusBandwidthLatency指單個任務的執行時間,Bandwidth指單位時間完成的任務量(rate)Latency的提升滯后于帶寬的提升(在過去的30年)Amdahl’sLaw用來度量加速比(speedup)性能提升受限于任務中可加速部分所占的比例應用于多處理器系統的基本假設:在給定的問題規模下,研究隨著處理器數目的增加性能的變化Benchmarks:指一組用于測試的程序比較計算機系統的性能SPECbenchmark:針對一組應用綜合性能值采用SPECratios的幾何平均2022/12/22203/06-review-性能性能度量2022/12/16203/06-review-能耗/功耗給定負載情況下能耗越少,能效越高,特別是對電池供電的移動設備。功耗已經成為系統設計的重要約束條件之一Achipmightbelimitedto120watts(cooling+powersupply)PowerConsumed=DynamicPower+StaticPower晶體管開和關的切換導致的功耗為動態功耗由于晶體管靜態漏電流導致的功耗稱為靜態功耗通過降低頻率可節省功耗降低電壓可降低功耗和能耗2022/12/22303/06-review-能耗/功耗給定負載情況下能耗越少,Recap:指令集架構軟件子系統與硬件子系統的關鍵界面一組直接由硬件執行的指令,包括程序員可見的機器狀態程序員可見的指令集合(操作機器狀態的指令)應具備的特性成本簡潔性架構和具體實現分離:可持續多代,以保持向后(backward)兼容可擴展空間:可用于不同應用領域(desktops,servers,embeddedapplications)易于編程/編譯/鏈接:為高層軟件的設計與開發提供方便的功能性能:方便低層硬件子系統高效實現IBM360是第一個將ISA與其實現分離的系列機給定一個ISA,可以有不同的實現方式;例如AMD/IntelCPU都是X86-64指令集。ARMISA也有不同的實現方式2022/12/224instructionsetsoftwarehardwareRecap:指令集架構軟件子系統與硬件子系統的關鍵界面202用戶級ISA和特權級ISA重要的系統界面(SystemInterface)ISA界面(InstructionSetArchitecture)ABI界面(ApplicationBinaryInterface)ISA:用戶級ISA+特權級ISA用戶級ISA適用于操作系統和應用程序特權級ISA適用于硬件資源的管理(操作系統)2022/12/225用戶級ISA和特權級ISA重要的系統界面(SystemInISA的實現ISA通常設計時會考慮特定的微體系結構(實現)方式。Accumulatorhardwired,unpipelined(硬布線、非流水)CISC microcoded(微程序)RISC hardwired,pipelined(硬布線、流水線)VLIW fixed-latencyin-orderparallelpipelines(固定延時、順序執行、多條流水線并行)JVM softwareinterpretation(軟件解釋)ISA理論上可以用任何微體系結構(實現)方式IntelIvyBridge:hardwiredpipelinedCISC(x86)machine(withsomemicrocodesupport)(硬布線流水化(部分微程序支持))Spike:Software-interpretedRISC-Vmachine(模擬器)ARMJazelle:AhardwareJVMprocessor2022/12/226ISA的實現ISA通常設計時會考慮特定的微體系結構(實現)Recap:ISA的演進2022/12/227Recap:ISA的演進2022/12/167Recap:ISA必須說明哪些東西?指令格式或編碼方式。即如何編碼?操作數和操作結果的存放位置存放位置?多少個顯式操作數?存儲器操作數如何定位?哪些操作數可以或不可以放到存儲器中?尋址方式數據類型和大小支持哪些操作下一條指令地址jumps,conditions,branchesfetch-decode-executeisimplicit!2022/12/228InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionRecap:ISA必須說明哪些東西?指令格式或編碼方式。即如Recap:有關ISA的若干問題存儲器尋址操作數的類型與大小所支持的操作控制轉移類指令指令格式2022/12/229Recap:有關ISA的若干問題存儲器尋址2022/12/Recap:存儲器尋址80年以來幾乎所有機器的存儲器都是按字節編址一個存儲器地址可以訪問:一個字節、2個字節、4個字節、更多字節…..不同體系結構對字的定義是不同的16位字(IntelX86)32位字(MIPS)如何讀32位字,兩種方案每次一個字節,四次完成;每次一個字,一次完成問題:(1)如何將字節地址映射到字地址(尾端問題)(2)一個字是否可以存放在任何字節邊界上(對齊問題)2022/12/2210Recap:存儲器尋址80年以來幾乎所有機器的存儲器都是按Recap:尾端問題littleendian,bigendian,在一個字內部的字節順序問題如地址xxx00指定了一個字(int),存儲器中從xxx00處連續存放ffff0000,則有兩種方式:Littleendian方式下xxx00位置是字的最低字節,整數值為0000ffff,Intel80x86,DECVax,DECAlpha(WindowsNT)Bigendian方式下xxx00位置是字的最高字節,整數值為ffff0000,IBM360/370,Motorola68k,MIPS,Sparc,HPPA2022/12/2211Recap:尾端問題littleendian,bigRecap:對齊問題對s字節的對象訪問地址為A,如果Amods=0稱為邊界對齊。邊界對齊的原因是存儲器本身讀寫的要求,存儲器本身讀寫通常就是邊界對齊的,對于不是邊界對齊的對象的訪問可能要導致存儲器的兩次訪問,然后再拼接出所需要的數。(或發生異常)2022/12/2212Recap:對齊問題對s字節的對象訪問地址為A,如果AmRecap:尋址方式尋址方式:如何說明要訪問的對象地址有效地址:由尋址方式說明的某一存儲單元的實際存儲器地址。有效地址vs.物理地址2022/12/2213Recap:尋址方式尋址方式:如何說明要訪問的對象地址20各種尋址方式的使用情況?(忽略寄存器直接尋址)2022/12/2214三個SPEC89程序在VAX結構上的測試結果:
立即尋址,偏移尋址使用較多各種尋址方式的使用情況?(忽略寄存器直接尋址)2022/1偏移尋址主要問題:偏移的范圍(偏移量的大小)2022/12/2215AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)偏移尋址主要問題:偏移的范圍(偏移量的大小)2022/12/立即數尋址2022/12/2216AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)立即數尋址2022/12/1616AlphaArchite立即數的大小2022/12/2217Thedistributionofimmediatevalues.About20%werenegativeforCINT2000andabout30%werenegativeforCFP2000.ThesemeasurementsweretakenonaAlpha,wherethemaximumimmediateis16bits,forthespeccpu2000programs.AsimilarmeasurementontheVAX,whichsupported32-bitimmediates,showedthatabout20%to25%ofimmediateswerelongerthan16bits.立即數的大小2022/12/1617Thedistribu尋址方式小結重要的尋址方式:偏移尋址方式,立即數尋址方式,寄存器間址方式SPEC測試表明,使用頻度達到75%--99%
偏移字段的大小應該在12-16bits可滿足75%-99%的需求
立即數字段的大小應該在8-16bits可滿足50%-80%的需求2022/12/2218尋址方式小結重要的尋址方式:2022/12/1618操作數的類型、表示和大小操作數類型和操作數表示是軟硬件的主要界面之一。操作數類型:是面向應用、面向軟件系統所處理的各種數據類型。整型、浮點型、字符、字符串、向量類型等類型由操作碼確定或數據附加硬件解釋的標記,一般采用由操作碼確定數據附加硬件解釋的標記,現在已經不采用操作數的表示:操作數在機器中的表示,硬件結構能夠識別,指令系統可以直接使用的表示格式整型:原碼、反碼、補碼浮點:IEEE754標準十進制:BCD碼/二進制十進制表示2022/12/2219操作數的類型、表示和大小操作數類型和操作數表示是軟硬件的主要常用操作數類型ASCIIcharacter=1byte(64-bitregistercanstore8charactersUnicodecharacterorShortinteger=2bytes=16bits(halfword)Integer=4bytes=32bits(wordsizeonmanyRISCProcessors)Single-precisionfloat=4bytes=32bits(wordsize)Longinteger=8bytes=64bits(doubleword)Double-precisionfloat=8bytes=64bits(doubleword)Extended-precisionfloat=10bytes=80bits(Intelarchitecture)Quad-precisionfloat=16bytes=128bits2022/12/2220常用操作數類型ASCIIcharacter=1byt操作數的大小2022/12/2221基準測試的結論:(1)對單字、雙字的數據訪問具有較高的頻率(2)支持64位雙字操作,更具有一般性操作數的大小2022/12/1621基準測試的結論:(1)對小結:指令集架構ISA需考慮的問題ClassofISAMemoryaddressingTypesandsizesofoperandsOperationsControlflowinstructionsEncodinganISA……ISA的類型通用寄存器型占主導地位尋址方式重要的尋址方式:偏移尋址方式,立即數尋址方式,寄存器間址方式SPEC測試表明,使用頻度達到75%--99%偏移字段的大小應該在12-16bits,可滿足75%-99%的需求立即數字段的大小應該在8-16bits,可滿足50%-80%的需求操作數的類型和大小對單字、雙字的數據訪問具有較高的頻率支持64位雙字操作,更具有一般性2022/12/2222小結:指令集架構ISA需考慮的問題2022/12/1622MIPSMIPS是最典型的RISC指令集架構Stanford,1980年提出,主要受到IBM801小型機的影響第一個商業實現是R2000(1986)最初的設計中,其整數指令集僅有58條指令,直接實現單發射、順序流水線30年來,逐步增加到約400條指令。主要特征:Load/Store型結構,專門的指令完成存儲器與寄存器之間的傳送ALU類指令的操作數來源于寄存器或立即數(指令中的特定區域)降低了指令集和硬件的復雜性,依賴于優化編譯技術,方便了簡單流水線的實現2022/12/2223MIPSMIPS是最典型的RISC指令集架構2022/12主要缺陷:針對特定的微體系架構的實現方式(5級流水、單發射、順序流水線)進行過度的優化設計延遲轉移問題導致超標量等復雜流水線的實現難度,當無法有效填充延遲槽時會導致代碼尺寸變大MIPS-I中暴露出其他流水線沖突(load、乘除引起的沖突)采用簡單的Interlocking簡單又高效,但為了保持兼容性,仍然保留了延遲轉移ISA對位置無關的代碼(position-independentcode,PIC)支持不足。直接跳轉沒有提供PC相對尋址,需要通過間接跳轉方式實現PIC,增加了代碼尺寸,降低了性能2014年MIPS的修訂,改進了PC-相對尋址(針對數據),但仍然要多條指令才能完成16位位寬立即數消耗了大量編碼空間,只有少量的編碼空間可供擴展指令2014修訂版,保存有1/64的編碼空間供擴展架構師如果想采用壓縮指令編碼來降低代碼空間,就不得不采用新的指令編碼乘除指令使用了特殊的寄存器(HI,LO),導致上下文切換內容、指令條數、代碼尺寸增加,微架構實現復雜2022/12/2224主要缺陷:2022/12/1624ISA假設浮點操作部件是一個獨立的協處理器,使得單芯片實現無法最優例如,整型數與浮點數的轉換結果寫到浮點數寄存器,使用結果時,需要額外的mov指令,更糟糕的是浮點數寄存器文件與整型數寄存器文件之間的傳輸,需要有顯式的延遲槽在標準的ABI中,保留兩個整型寄存器用于內核程序,減少了用戶程序可用的寄存器數使用特殊指令處理未對齊的load和store會消耗大量的操作碼空間,并使除了最簡單的實現之外的其他實現復雜化。時鐘速率/CPI的權衡使得架構師省略了整數大小比較和分支指令。隨著分支預測和靜態CMOS邏輯的出現,這種權衡在今天已經不太合適了。除了技術方面,MIPS是非開放的專屬指令集,不能自由使用2022/12/2225ISA假設浮點操作部件是一個獨立的協處理器,使得單芯片實現無SPARCSunMicrosystems的專屬指令集可追溯到BerkeleyRISC-I和RISC-II項目;最近的32位版本的ISA
SPARC
V8SPARCV8主要特征用戶級整型ISA90條指令;硬件支持IEEE754-1985標準的浮點數(50條);特權級指令20條主要問題SPARC使用了寄存器窗口來加速函數調用當函數調用所需的棧空間超過了窗口的寄存器數,性能會急劇下降。對于所有的實現來說,寄存器窗口都消耗很大的面積和功耗分支使用條件碼這些條件碼由于在一些指令之間創建了額外的依賴關系,增加了體系結構狀態并使實現復雜化load和store相鄰寄存器對的指令對于簡單的微體系結構很有吸引力,可以在很少增加硬件復雜性的情況下提高吞吐量。遺憾的是當使用寄存器重命名使實現復雜化,因為在寄存器文件中數據在物理上可能不再相鄰浮點寄存器文件和整數寄存器文件之間的移動必須使用內存系統作為中介,限制了系統性能2022/12/2226SPARCSunMicrosystems的專屬指令集202SPARCISA通過體系結構公開的延遲陷阱隊列支持非精確浮點異常,該隊列向系統監控程序提供信息,以恢復此類異常上的處理器狀態唯一的原子內存操作是fetch-and-store,這對于實現許多無等待的數據結構是不夠的SPARC與其他80年代RISC結構的許多有缺陷的特性ISA設計面向單發射、順序、五級流水線的微體系架構;SPARC具有分支延遲插槽和許多顯式的數據和控制沖突,這些沖突使代碼生成復雜化,無助于更積極的實現;缺乏位置無關的尋址方式(相對尋址)由于SPARC缺乏足夠的自由編碼空間,因此不能方便地對其進行改進以支持壓縮ISA擴展2022/12/2227SPARCISA通過體系結構公開的延遲陷阱隊列支持非精確浮點Alpha(DEC)DEC公司的架構師在20世紀90年代初定義了他們的RISCISA,Alpha摒棄了當時非常吸引人的特性,如分支延遲、條件碼、寄存器窗口等創建了64位尋址空間、設計簡潔、實現簡單、高性能的ISAAlpha架構師仔細地將特權體系結構和硬件平臺的大部分細節隔離在抽象接口(特權體系結構庫)后面(PALcode)主要問題:盡管如此,DEC對順序微架構的Alpha進行了過度優化,并添加了一些不太適合現代實現的特性為了追求高時鐘頻率,ISA的原始版本避免了8位和16位的加載和存儲,實際上創建了一個字尋址的內存系統。為了在廣泛使用這些操作的應用程序上性能,添加了特殊的未對齊的加載和存儲指令以及一些整數指令,以加速重新組合過程。為了方便長延遲浮點指令的亂序完成,Alpha
有一個非精確的浮點陷阱模型。這個決定可能是可以單獨接受的,但是ISA還定義了異常標記和默認值(如果需要的話)必須由軟件例程提供。Alpha缺少整數除法指令,建議使用軟件牛頓迭代法實現,導致浮點除法速度高于整數除法2022/12/2228Alpha(DEC)DEC公司的架構師在20世紀90年代初與它的前輩RISC一樣,沒有預先考慮可能的壓縮指令集擴展,因此沒有足夠的操作碼空間來進行更新ISA包含有條件的移動,這使得微架構與寄存器重命名復雜化如果移動條件不滿足,指令仍然必須將舊值復制到新的物理目標寄存器中。這實際上使條件移動成為ISA中惟一讀取三個源操作數的指令。實際上,DEC的第一個亂序執行的實現使用了一些技巧來避免該指令的額外數據路徑。Alpha21264通過將條件移動指令分解為兩個微操作來執行,第一個微操作評估移動條件,第二個微操作執行移動。這種方法還要求物理寄存器文件加寬一位以保存中間結果使用商業AlphaISAs的一個重要風險:它們可能會被摒棄。康柏在上世紀90年代末收購了搖搖欲墜的DEC后不久,他們選擇逐步淘汰Alpha,轉而采用英特爾的安騰架構。康柏將Alpha的知識產權出售給了英特爾,此后不久,惠普收購了康柏,并在2004年完成了Alpha的最終實現2022/12/2229與它的前輩RISC一樣,沒有預先考慮可能的壓縮指令集擴展,因ARMv732位RISCISA目前世界上使用最廣的體系結構。當我們權衡是否要設計自己的指令集時,ARMv7是一個自然的選擇,大量的軟件已經被移植到該ISA上,而且它在嵌入式和移動設備中無處不在。是一個封閉的標準,剪裁或擴充是不允許的,即使是微架構的創新也僅限于那些能夠獲得ARM所稱的架構許可的人ARMv7十分龐大復雜。整型類指令600+條即使知識產權不是問題,它仍然存在一些技術缺陷不支持64位地址,ISA缺乏硬件支持IEEE754-2008標準(ARMv8糾正了這些缺陷)特權體系結構的細節滲透到用戶級體系結構的定義中2022/12/2230ARMv732位RISCISA2022/12/1630ARMv7附帶一個壓縮ISA,具有固定寬度的16位指令,稱為Thumb。Thumb雖然提供了有競爭力的代碼尺寸,但性能較差Thumb-2雖然提供了較高的性能,但32位的Thumb-2編碼方式與基本的ISA編碼方式不同,16位的Thumb-2的編碼方式與基本的16位編碼方式也不同。導致譯碼器需要理解三種編碼格式,使得能耗、延遲以及設計成本增加ISA中包含了許多實現復雜的特性。程序計數器是可尋址寄存器之一,這意味著幾乎任何指令都可以改變控制流。更糟糕的是,程序計數器的最低有效位反映ISA當前正在執行(ARM或Thumb)哪個ISA——簡單的ADD指令可以更改ISA當前在處理器上執行的指令!分支使用條件碼以及謂詞指令進一步使高性能實現復雜化。2022/12/2231ARMv7附帶一個壓縮ISA,具有固定寬度的16位指令,稱為ARMv82011年,ARM發布新的ISA
ARMv8
64位地址;擴展了整型寄存器組。摒棄了ARMv7中實現復雜的一些特性PC不再是整形寄存器組的成員;不再有謂詞指令刪除了load-multiple和store-multiple指令指令編碼歸一化主要問題使用條件碼存在許多特殊的寄存器2022/12/2232ARMv82011年,ARM發布新的ISAARMv820增加了一些缺陷,包括大量的subword-SIMD架構指令集更加厚重:1070條指令,53種格式,8種尋址方式。說明文檔達到了5778頁與其他大多數ISA一樣,通常以暴露底層實現的方式將用戶和特權架構緊密地結合在一起此外,隨著ARMv8的引入,ARM不再支持壓縮指令編碼最后,和它的以前版本一樣,ARMv8也是一個封閉的標準2022/12/2233增加了一些缺陷,包括大量的subword-SIMD架構202OpenRISCOpenRISC項目是一個開放源碼處理器設計項目來源于Hennessy和Patterson的體系結構教科書。適用于教學、科研和工業界的實現。主要問題OpenRISC項目主要是開源處理器設計項目,而不是開源的ISA規格說明,ISA和實現是緊密耦合的固定的32位編碼與16位立即數阻礙了壓縮ISA擴展硬件不支持IEEE754-2008標準用于分支和條件轉移的條件碼使高性能實現復雜化ISA對位置無關的尋址方式支持較弱OpenRISC不利于虛擬化。從異常返回的指令L.RFE,定義為在用戶模式下功能,而不是捕獲值得一提的是:2010年這兩個問題都得到了解決:延遲插槽已經成為可選的,64位版本已經定義(但是,據我們所知,從未實現過)。最終,我們(UCB)認為最好從頭開始,而不是相應地修改OpenRISC。2022/12/2234OpenRISCOpenRISC項目是一個開放源碼處理器設計在過去的四十年里,英特爾的8086架構已經成為筆記本電腦、臺式機和服務器市場上最流行的指令集。在嵌入式系統領域之外,幾乎所有流行的軟件都被移植到x86上,或者是為x86開發的它受歡迎的原因有很多:該架構在IBMPC誕生之初的偶然可用性;英特爾專注于二進制兼容性;它們積極的卓有成效的微結構實現;以及他們的前沿制造技術指令集設計質量并不是它流行的原因之一。主要問題:1300條指令,許多尋址方式,很多特殊寄存器,多種地址翻譯方式,從AMDK5微架構開始,所有的Intel支持亂序執行的微結構,都是動態地將x86指令翻譯為內部的RISC-風格的指令集。ISA不利于虛擬化,因為一些特權指令在用戶模式下會無聲地失敗,而不是被捕獲。VMware的工程師們用復雜的動態二進制翻譯軟件解決了這一缺陷ISA的指令長度為任意整數字節數,最多為15個字節,但是數量較少的短操作碼已經被隨意使用80x862022/12/2235在過去的四十年里,英特爾的8086架構已經成為筆記本電腦、臺ISA有數量極少的寄存器組大多數整數寄存器在ISA中執行特殊功能,這加劇了體系結構寄存器的不足更糟糕的是,大多數x86指令只有一種破壞性的指令格式,它會覆蓋其中一個源操作數一些ISA特性,包括隱式條件代碼和帶有謂詞的移動操作,在微架構中實現復雜這些ISA決策對靜態代碼大小有深刻的影響。盡管存在所有這些缺陷,x86通常比RISC體系結構使用更少的動態指令完成相同的功能,因為x86指令可以編碼多個基本操作。最后,80x86是一個專有指令集2022/12/2236ISA有數量極少的寄存器組2022/12/1636ISA
Summary2022/12/2237MIPSSPARCAlphaARMv7ARMv8OpenRISC80x86FreeandOpen√√64-bitAddress√√√√√√CompressedInstructions√√PartialSeparatePrivilegedISA√Position-Indep.CodePartial√√√IEEE754-2008√√ClassicallyVirtualizable√√√√ISASummary2022/12/1637MIPSSPA03/11:指令集架構ISA需考慮的問題ClassofISAMemoryaddressingTypesandsizesofoperandsOperationsControlflowinstructionsEncodinganISA……ISA的類型通用寄存器型占主導地位尋址方式重要的尋址方式:偏移尋址方式,立即數尋址方式,寄存器間址方式SPEC測試表明,使用頻度達到75%--99%偏移字段的大小應該在12-16bits,可滿足75%-99%的需求立即數字段的大小應該在8-16bits,可滿足50%-80%的需求操作數的類型和大小對單字、雙字的數據訪問具有較高的頻率支持64位雙字操作,更具有一般性2022/12/223803/11:指令集架構ISA需考慮的問題2022/12/16ISA的操作CISC指令集結構的功能設計RISC指令結構的功能設計2022/12/2239ISA的操作CISC指令集結構的功能設計2022/12/1典型操作類型一般計算機都支持前三類所有的操作;不同計算機系統對系統支持程度不同,但都支持基本的系統功能。對最后四類操作的支持程度差別也很大,有些機器不支持,有些機器還在此基礎上做一些擴展,這些指令有時作為可選的指令。2022/12/2240典型操作類型一般計算機都支持前三類所有的操作;2022/1Top1080x86Instructions2022/12/2241Top1080x86Instructions2022/ISA對操作類型的選擇需考慮的因素:速度、價格和靈活性基本要求:指令系統的完整性、規整性、高效率和兼容性完整性設計:具備基本指令種類兼容性:系列機高效率:指令執行速度快、使用頻度高規整性讓所有運算部件都能對稱、均勻的在所有數據存儲單元之間進行操作。對所有數據存儲單元都能同等對待,無論是操作數或運算結果都可以無約束地存放到任意數據存儲單元中正交性數據類型獨立于尋址方式尋址方式獨立于所要完成的操作當前對這一問題的處理有兩種截然不同的方向CISC和RISC2022/12/2242ISA對操作類型的選擇需考慮的因素:速度、價格和靈活性202CISC計算機ISA的功能設計目標:強化指令功能,減少指令條數,以提高系統性能基本優化方法1.面向目標程序的優化是提高計算機系統性能最直接方法優化目標縮短程序的長度縮短程序的執行時間優化方法統計分析目標程序執行情況,找出使用頻度高,執行時間長的指令或指令串優化使用頻度高的指令用新的指令代替使用頻度高的指令串2022/12/2243CISC計算機ISA的功能設計目標:強化指令功能,減少指令條優化目標程序的主要途徑(1/2)1)增強運算型指令的功能如sin(x),cos(x),SQRT(X),甚至多項式計算如用一條三地址指令完成P(X)=C(0)+C(1)X+C(2)X2+C(3)X3+…..2)增強數據傳送類指令的功能主要是指數據塊傳送指令R-R,R-M,M-M之間的數據塊傳送可有效的支持向量和矩陣運算,如IBM370R-Stack之間設置數據塊傳送指令,能夠在程序調用和程序中斷時,快速保存和恢復程序現場,如VAX-112022/12/2244優化目標程序的主要途徑(1/2)1)增強運算型指令的功能20優化目標程序的主要途徑(2/2)3)增強程序控制指令的功能在CISC中,一般均設置了多種程序控制指令,正常僅需要轉移指令和子程序控制指令2.面向高級語言和編譯程序改進指令系統優化目標:主要是縮小HL-ML之間的差距優化方法:1)增強面向HL和Compiler支持的指令功能統計分析源程序中各種語句的使用頻度和執行時間增強相關指令的功能,優化使用頻度高、執行時間長的語句增加專門指令,以縮短目標程序長度,減少目標程序執行時間,縮短編譯時間2022/12/2245優化目標程序的主要途徑(2/2)3)增強程序控制指令的功能FORTRAN語言和COBOL語言中各種主要語句的使用頻度觀察結果:(1)一元賦值在其中比例最大,增強數據傳送類指令功能,縮短這類指令的執行時間是對高級語言非常有力的支持,(2)其他賦值語句中,增1操作比例較大,許多機器都有專門的增1指令(3)條件轉移和無條件轉移占22%,38.2%,因此增強轉移指令的功能,增加轉移指令的種類是必要的2022/12/2246語言一元賦值其他賦值IFGOTOI/ODOCALL其他FORTRAN31.015.011.56.015.0COBOL42.17.5FORTRAN語言和COBOL語言中各種主要語句的使用頻度22)高級語言計算機系統縮小HL和ML的差別時,走到極端,就是把HL和ML合二為一,即所謂的高級語言計算機。在這種機器中,高級語言不需要經過編譯,直接由機器硬件來執行。如LISP機,PROLOG機3)支持操作系統的優化實現-些特權指令任何一種計算機系統通常需要操作系統,而OS又必須用指令系統來實現,指令系統對OS的支持主要有處理器工作狀態和訪問方式的轉換進程的管理和切換存儲管理和信息保護進程同步和互斥,信號量的管理等2022/12/22472)高級語言計算機系統2022/12/1647-Review(續)ISA的功能設計任務:確定硬件支持哪些操作方法:統計的方法兩種類型:CISC和RISCCISC(ComplexInstructionSetComputer)目標:強化指令功能,減少運行的指令條數,提高系統性能方法:面向目標程序的優化,面向高級語言和編譯器的優化RISC(ReducedInstructionSetComputer)目標:通過簡化指令系統,用高效的方法實現最常用的指令方法:充分發揮流水線的效率,降低(優化)CPI2022/12/2248-Review(續)ISA的功能設計2022/12/164RISC指令集結構的功能設計采用RISC體系結構的微處理器SUNMicrosystem:SPARC,SuperSPARC,UltaSPARCSGI:MIPSR4000,R5000,R10000,IBM:PowerPCIntel:80860,80960DEC:AlphaMotorola88100HPHP300/930系列,950系列ARM,MIPSRISC-V2022/12/2249RISC指令集結構的功能設計采用RISC體系結構的微處理器2RISC的定義和特點RISC是一種計算機體系結構的設計思想,它不是一種產品。RISC是近代計算機體系結構發展史中的一個里程碑,直到現在,RISC沒有一個確切的定義早期對RISC特點的描述大多數指令在單周期內完成采用Load/Store結構硬布線控制邏輯減少指令和尋址方式的種類固定的指令格式注重代碼的優化從目前的發展看,RISC體系結構還應具有如下特點:面向寄存器結構十分重視流水線的執行效率-盡量減少斷流重視優化編譯技術減少指令平均執行周期數是RISC思想的精華2022/12/2250RISC的定義和特點RISC是一種計算機體系結構的設計思想,問題RISC的指令系統精簡了,CISC中的一條指令可能由一串指令才能完成,那么為什么RISC執行程序的速度比CISC還要快?
ExecuteTime=CPIXICXTICCPITCISC12~1533ns~5nsRISC1.3~1.41.1~1.410ns~2nsIC:實際統計結果,RISC的IC只比CISC長30%~40%CPI:CISCCPI一般在4~6之間,RISC一般CPI=1,Load/Store為2
T:RISC采用硬布線邏輯,指令要完成的功能比較簡單2022/12/2251問題RISC的指令系統精簡了,CISC中的一條指令可能由一串RISC為什么會減少CPI硬件方面:硬布線控制邏輯減少指令和尋址方式的種類使用固定格式采用Load/Store指令執行過程中設置多級流水線。軟件方面:十分強調優化編譯的作用2022/12/2252RISC為什么會減少CPI硬件方面:2022/12/1652控制類指令四種類型的控制流改變:條件分支(Conditionalbranch)、跳轉(Jump)、過程調用(Procedurecalls)、過程返回(Procedurereturns)2022/12/2253AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)控制類指令四種類型的控制流改變:2022/12/1653Al控制流類指令中的尋址方式PC-relative方式(相對尋址)例如:條件轉移說明動態的轉移地址方式(通過寄存器間接跳轉):編譯時不知道目標地址,程序執行時動態確定CaseorswitchstatementsVirtualfunctionormethodsHigh-orderfunctionsorfunctionpointersDynamicallysharedlibraries轉移地址放到某一寄存器中,通過寄存器間接跳轉2022/12/2254控制流類指令中的尋址方式PC-relative方式(相對轉移目標地址與當前指令的距離2022/12/2255AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)建議:PC-relative尋址,偏移地址至少8位轉移目標地址與當前指令的距離2022/12/1655Alph分支比較類型比較2022/12/2256AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)分支比較類型比較2022/12/1656AlphaArch指令編碼2022/12/2257Variable:Fixed:Hybrid:……指令編碼2022/12/1657Variable:……指令格式選擇策略如果代碼規模最重要,那么使用變長指令格式
如果性能至關重要,使用固定長度指令
有些嵌入式CPU附加可選模式,由每一應用自己選擇性能還是代碼量窄指令支持更少的操作、更短的地址和立即數字段、更少的寄存器以及雙地址格式,而不是傳統的RISC計算機的三地址格式例如:RISC-V的RV32IC,C表示壓縮表示ARMThumb,microMIPS有些機器使用邊執行邊解壓的方式例如IBM的CodePackPowerPC2022/12/2258指令格式選擇策略如果代碼規模最重要,那么使用變長指令格式2MIPS尋址方式/指令格式2022/12/2259所有指令都是32位寬oprsrtrdimmedregisterRegister(direct)oprsrtregisterBase+index+MemoryimmedoprsrtImmediateimmedoprsrtPCPC-relative+Memory
RegisterIndirect?MIPS尋址方式/指令格式2022/12/1659所有指小結
ISA的功能設計:任務為確定硬件支持哪些操作。方法是統計的方法。存在CISC和RISC兩種類型CISC(ComplexInstructionSetComputer)目標:強化指令功能,減少指令的指令條數,以提高系統性能基本方法:面向目標程序的優化,面向高級語言和編譯器的優化RISC(ReducedInstructionSetComputer)目標:通過簡化指令系統,用最高效的方法實現最常用的指令主要手段:充分發揮流水線的效率,降低(優化)CPI控制轉移類指令指令編碼(指令格式)2022/12/2260小結ISA的功能設計:任務為確定硬件支持哪些操作。方法是統ISA的演進2022/12/2261ISA的演進2022/12/1661Recap:MIPS指令集結構MIPS64的一個子集,簡稱為MIPSMIPS的寄存器32個64位通用寄存器(GPRs)R0,R1,…,R31也被稱為整數寄存器R0的值永遠是032個64位浮點數寄存器(FPRs)F0,F1,…,F31用來存放32個單精度浮點數(32位),也可以用來存放32個雙精度浮點數(64位)。存儲單精度浮點數(32位)時,只用到FPR的一半,其另一半沒用一些特殊寄存器它們可以與通用寄存器交換數據。例如,浮點狀態寄存器用來保存有關浮點操作結果的信息。2022/12/2262Recap:MIPS指令集結構MIPS64的一個子集,簡稱Recap:MIPS的數據表示整數字節(8位)半字(16位)字(32位)雙字(64位)浮點數單精度浮點數(32位)雙精度浮點數(64位)字節、半字或者字在裝入64位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩余部分。裝入以后,對它們將按照64位整數的方式進行運算。2022/12/2263Recap:MIPS的數據表示整數2022/12/1663Recap:MIPS的尋址方式立即數尋址與偏移量尋址立即數字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實現的16位絕對尋址是通過把R0(其值永遠為0)作為基址寄存器來完成的MIPS的存儲器是按字節尋址的,地址為64位所有存儲器訪問都必須是邊界對齊的2022/12/2264Recap:MIPS的尋址方式立即數尋址與偏移量尋址2022Recap:存儲器中的數據存放(存儲字長為32位)2022/12/2265地址(十進制)04812162024283236雙字雙字(地址32)雙字雙字(地址24)半字(地址20)半字(地址22)半字(地址16)半字(地址18)字節(地址
8)字節(地址
9)字節(地址10)字節(地址11)字(地址4)字(地址0)字節(地址14)字節(地址15)字節(地址13)字節(地址12)邊界對準地址(十進制)048字節(地址7)字節(地址6)字(地址2)半字(地址10)半字(地址8)半字(地址0)字(地址4)邊界未對準
▲
▲
Recap:存儲器中的數據存放(存儲字長為32位)202Recap:MIPS的指令格式尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式I類R類J類2022/12/2266Recap:MIPS的指令格式尋址方式編碼到操作碼中2022Recap:I類指令包括所有的load和store指令、立即數指令,分支指令、寄存器跳轉指令、寄存器鏈接跳轉指令。立即數字段為16位,用于提供立即數或偏移量。2022/12/2267Recap:I類指令包括所有的load和store指令、立即Recap:具體的I類指令load指令訪存有效地址:Regs[rs]+immediate從存儲器取來的數據放入寄存器rtstore指令訪存有效地址:Regs[rs]+immediate要存入存儲器的數據放在寄存器rt中立即數指令Regs[rt]←Regs[rs]opimmediate分支指令轉移目標地址:Regs[rs]+immediate,rt無用寄存器跳轉、寄存器跳轉并鏈接轉移目標地址為Regs[rs]2022/12/2268Recap:具體的I類指令load指令2022/12/166Recap:R類指令包括ALU指令、專用寄存器讀/寫指令、move指令等ALU指令Regs[rd]←Regs[rs]functRegs[rt]func為具體的運算操作編碼2022/12/2269Recap:R類指令包括ALU指令、專用寄存器讀/寫指令、mRecap:J類指令包括跳轉指令、跳轉并鏈接指令、自陷指令、異常返回指令在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉的地址2022/12/2270Recap:J類指令包括跳轉指令、跳轉并鏈接指令、自陷指令、Recap:MIPS的操作2022/12/2271MIPS指令可以分為四大類load和store、ALU操作、分支與跳轉、浮點操作符號的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y下標:表示字段中具體的位;對于指令和數據,按從最高位到最低位(即從左到右)的順序依次編號,最高位為第0位,次高位為第1位,依此類推。下標可以是一個數字,也可以是一個范圍。例如:
Regs[R4]0:R4的符號位;Regs[R4]56..63:R4的最低字節Recap:MIPS的操作2022/12/1671MIPS指2022/12/2272Mem:表示主存;按字節尋址,可以傳輸任意個字節。上標:用于表示對字段進行復制的次數。例如:0
32:一個32位長的全0字段符號##:用于兩個字段的拼接,并且可以出現在數據傳送的任何一邊。舉例:R8、R10:64位的寄存器,則
Regs[R8]32..63←32(Mem[Regs[R6]]0)24##Mem[Regs[R6]]
表示的意義是:以R6的內容作為地址訪問內存,得到的字節按符號位擴展為32位后存入R8的低32位,R8的高32位(即Regs[R8]0..31)不變。2022/12/1672Mem:表示主存;按字節尋址,可以傳Recap:MIPS控制類指令2022/12/2273指令舉例指令名稱含義Jname跳轉PC36··63←name<<2JALname跳轉并鏈接Regs[R31]←PC+4;PC36··63←name<<2;((PC+4)-227)≤name<((PC+4)+227)JALRR3寄存器跳轉并鏈接Regs[R31]←PC+4;PC←Regs[R3]JRR5寄存器跳轉PC←Regs[R5]BEQZR4,name等于零時分支if(Regs[R4]==0)PC←name;((PC+4)-217)≤name<((PC+4)+217)BNER3,R4,name不相等時分支if(Regs[R3]!=Regs[R4])PC←name((PC+4)-217)≤name<((PC+4)+217)MOVZR1,R2,R3等于零時移動if(Regs[R3]==0)Regs[R1]←Regs[R2]Recap:MIPS控制類指令2022/12/1673指令舉Recap:跳轉指令根據跳轉指令確定目標地址的方式不同以及跳轉時是否鏈接,可以把跳轉指令分成4種。確定目標地址的方式把指令中的26位偏移量左移2位后,替換程序計數器的低28位。間接跳轉:由指令中指定的一個寄存器來給出轉移目標地址。跳轉的兩種類型簡單跳轉:把目標地址送入程序計數器。跳轉并鏈接:把目標地址送入程序計數器,把返回地址(即順序下一條指令的地址)放入寄存器R31。2022/12/2274Recap:跳轉指令根據跳轉指令確定目標地址的方式不同以及跳Recap:分支指令(條件轉移)分支條件由指令確定。例如:測試某個寄存器的值是否為零提供一組比較指令,用于比較兩個寄存器的值。例如:“置小于”指令有的分支指令可以直接判斷寄存器內容是否為負,或者比較兩個寄存器是否相等。分支的目標地址。由16位帶符號偏移量左移兩位后和PC相加的結果來決定一條浮點條件分支指令:通過測試浮點狀態寄存器來決定是否進行分支。2022/12/2275Recap:分支指令(條件轉移)分支條件由指令確定。2022UCBerkeley設計的第5代RISC指令集設計理念(指導思想):通用的ISA能適應從最袖珍的嵌入式控制器,到最快的高性能計算機等各種規模的處理器。能兼容各種流行的軟件棧和編程語言。適應所有實現技術,包括現場可編程門陣列(FPGA)、專用集成電路(ASIC)、全定制芯片,甚至未來的技術。對所有微體系結構實現方式都有效。例如:微編碼或硬連線控制;順序或亂序執行流水線;單發射或超標量等等。支持廣泛的定制化,成為定制加速器的基礎。隨著摩爾定律的消退,加速器的重要性日益提高。基礎的指令集架構是穩定的。不能像以前的專有指令集架構一樣被棄用,例如AMDAm29000、DigitalAlpha、DigitalVAX、HewlettPackardPA-RISC、Inteli860、Inteli960、Motorola88000、以及ZilogZ8000。完全開源RISC-VISA2022/12/2276UCBerkeley設計的第5代RISC指令集RISC-技術目標將ISA分成基礎ISA和可選的擴展部分ISA的基礎足夠簡單,可以用于教學和許多嵌入式處理器,包括定制加速器的控制單元。它足夠完整,可以運行現代軟件棧。擴展部分提高計算的性能,并支持多處理機并行支持32位和64位地址空間方便定制ISA擴展包括緊耦合功能單元和松耦合協處理器支持變長指令集擴展既為了提高代碼密度,也為了擴展可能的自定義ISA擴展的空間提供對現代標準的有效硬件支持用戶級ISA和特權級ISA是正交的(相互獨立,互不依賴)在保持用戶應用程序二進制接口(ABI)兼容性的同時,允許完全虛擬化,并允許在特權ISA中進行實驗測試2022/12/2277技術目標將ISA分成基礎ISA和可選的擴展部分2022/12RISC-VISA的特點完全開源:它屬于一個開放的,非營利性質的RISC-V基金會。開源采用BSD協議(企業完全自由免費使用,允許企業添加自有指令而不必開放共享以實現差異化發展)架構簡單沒有針對某一種微體系結構實現方式做過度的架構設計新的指令集,沒有向后(backward)兼容的包袱說明書的頁數…..(圖1.6)模塊化的指令集架構RV32I和RV64I是基礎的ISA。可擴展增加其他特性的支持面向教育或科研,易于擴充或剪裁支持32位和64位地址空間面向多核并行有效的指令編碼方式2022/12/2278RISC-VISA的特點完全開源:2022/12/1678RISC-V子集命名約定2022/12/2279RISC-V子集命名約定2022/12/1679RV32處理器狀態2022/12/2280Programcounter(pc)32x32-bit整型數寄存器(x0-x31)x0總是032個浮點數寄存器(FP)(f0-f31)每個寄存器可以存放單精度或雙精度浮點數(32-bitor64-bitIEEEFP)FP狀態寄存器(fsr),用于舍入模式和異常狀態報告RV32處理器狀態2022/12/1680Program可支持變長指令(三種長度)基礎指令集(RV32)總是固定的32-bit指令(lowesttwobits=112)所有的條件轉移和無條件轉移的轉移地址16-bit對齊RISC-V指令編碼2022/12/2281可支持變長指令(三種長度)RISC-V指令編碼2022/1RISC-V指令格式2022/12/2282DestinationReg.Reg.Source1Reg.Source27-bitopcodefield(butlow2bits=112)Additionalopcodebits/immediateRISC-V指令格式2022/12/1682DestinaRV32I帶有指令布局,操作碼,格式類型和名稱的操作碼映射2022/12/2283RV32I帶有指令布局,操作碼,格式類型和名稱的操作碼映射RV32I帶有指令布局,操作碼,格式類型和名稱的操作碼映射2022/12/2284RV32I帶有指令布局,操作碼,格式類型和名稱的操作碼映射03/13-reviewISA的功能設計:任務為確定硬件支持哪些操作。方法是統計的方法。存在CISC和RISC兩種類型CISC(ComplexInstructionSetComputer)目標:強化指令功能,減少指令的指令條數,以提高系統性能基本方法:面向目標程序的優化,面向高級語言和編譯器的優化RISC(ReducedInstructionSetComputer)目標:通過簡化指令系統,用最高效的方法實現最常用的指令主要手段:充分發揮流水線的效率,降低(優化)CPI控制轉移類指令指令編碼(指令格式)MIPSISARISC-VISA2022/12/228503/13-reviewISA的功能設計:任務為確定硬件支Recap:為什么學習微程序控制如何用一個簡單處理器實現復雜的ISACISC機器怎么發展起來的CISC指令集仍然廣泛使用(x86,IBM360,PowerPC)幫助我們理解技術驅動從CISC->RISC2022/12/2286Recap:為什么學習微程序控制如何用一個簡單處理器實現復雜RISC-V指令執行階段InstructionFetchInstructionDecodeRegisterFetchALUOperationsOptionalMemoryOperationsOptionalRegisterWritebackCalculateNextInstructionAddress2022/12/2287RISC-V指令執行階段InstructionFetch處理器設計可以分為datapath和Control設計兩部分datapath,存儲數據、算術邏輯運算單元control,控制數據通路上的一系列操作控制部分與數據通路2022/12/2288早期的計算機設計者的最大挑戰是控制邏輯的正確性MauriceWilkes提出了微程序設計的概念來設計處理器的控制邏輯(EDSAC-II,1958)當時的技術水平Logic:VacuumTubesMainMemory:MagneticcoresRead-OnlyMemory:Diodematrix,punchedmetalcards,…Cost:Logic>RAM>ROMSpeed:ROM>RAMCondition?ControlMainMemoryAddressDataControlLinesDatapathPCInst.Reg.RegistersALUInstructionBusy?處理器設計可以分為datapath和Control設計兩部分微程序控制RISC-V的單總線數據通路2022/12/2289微指令的寄存器傳輸級表示:MA:=PCmeansRegSel=PC;RegW=0;RegEn=1;MALd=1B:=Reg[rs2]meansRegSel=rs2;RegW=0;RegEn=1;BLd=1Reg[rd]:=A+BmeansALUop=Add;ALUEn=1;RegSel=rd;RegW=1Condition?MainMemoryPCRegistersALU32(PC)rdrs1rs2RegisterRAMAddressInDataOutInstructionReg.Mem.AddressBAImmediateImmEnRegEnALUEnMemEnALUOpMemWImmSelRegWBLdInstLdMALdALdRegSelBusy?Opcode微程序控制RISC-V的單總線數據通路2022/12/168微程序控制CPU2022/12/2290DatapathMainMemory(holdsuserprogramwritteninmacroinstructions,e.g.,x86,RISC-V)AddressDataDecoderμPCMicrocodeROM(holdsfixedμcodeinstructions)NextStateControlLinesOpcodeConditionBusy?微程序控制CPU2022/12/1690DatapathMMicrocode示意(1)InstructionFetch: MA,A:=PC
PC:=A+4
waitformemory
IR:=Mem
dispatchonopcodeALU: A:=Reg[rs1]
B:=Reg[rs2]
Reg[rd]:=ALUOp(A,B)
gotoinstructionfetchALUI: A:=Reg[rs1] B:=ImmI //Sign-extend12bimmediate Reg[rd]:=ALUOp(A,B)
gotoinstructionfetch
2022/12/2291Microcode示意(1)InstructionFetMicrocode示意(2)LW: A:=Reg[rs1]
B:=ImmI
//Sign-extend12bimmediate
MA:=A+B
waitformemory
Reg[rd]:=Mem
gotoinstructionfetchJAL: Reg[rd]:=A//Storereturnaddress
A:=A-4//RecoveroriginalPC
B:=ImmJ//Jump-styleimmediate
PC:=A+B
gotoinstructionfetchBranch: A:=Reg[rs1] B:=Reg[rs2]
if(!ALUOp(A,B))gotoinstructionfetch//Nottaken
A:=PC//Microcodefallthroughifbranchtaken
A:=A-4
B:=ImmB//Branch-styleimmediate
PC:=A+B
gotoinstructionfetch
2022/12/2292Microcode示意(2)LW: A:=Reg[采用ROM實現微程序控制Howmanyaddressbits?|μaddress|=|μPC|+|opcode|+1+1Howmanydatabits?|data|=|μPC|+|controlsignals|=|μPC|+18TotalROMsize=2|μaddress|x|data|2022/12/22μPCROMAddressDataOpcodeCond?Busy?NextμPCControlSignals93采用ROM實現微程序控制HowmanyaddressROM中的內容
Address | Data
μPCOpcodeCond?Busy? |ControlLines NextμPC
fetch0 X X X |MA,A:=PC fetch1fetch1 X X 1 | fetch1fetch1 X X 0 |IR:=Mem fetch2fetch2 ALU X X |PC:=A+4 ALU0fetch2 ALUI X X |PC:=A+4 ALUI0fetch2 LW X X |PC:=A+4 LW0….ALU0 X X X |A:=Reg[rs1] ALU1ALU1 X X X |B:=Reg[rs2] ALU2ALU2 X X X |Reg[rd]:=ALUOp(A,B)fetch02022/12/2294ROM中的內容 Address | Data單總線數據通路結構的微程序控制存儲器大小取指階段有3個公操作RISC-V指令
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業差旅接待接機住宿保障補充協議
- 影視特效制作與VR電影制作合同
- 商業物業運營維護與客戶滿意度提升協議
- 汽車銷售集團新車二手車銷售及售后服務一體化合同
- 城市職工房改房產權界定清晰交易協議
- 線上電商平臺直播帶貨主播合作協議書
- 婚姻忠誠保證協議與股權代持權益保障協議
- 城市更新改造工程合同終止及社區補償協議
- 企業直播AI話術創意生成與培訓協議
- 醫院物業交房后期運營計劃
- 2023屆高考地理一輪復習跟蹤訓練-石油資源與國家安全
- 14.有趣的光影(課件)-美術六年級下冊
- 中央2024年商務部中國國際電子商務中心招聘筆試歷年典型考題及考點附答案解析
- 2024年四川省南充市名校中考物理模擬試卷
- JBT 14682-2024 多關節機器人用伺服電動機技術規范(正式版)
- 改進工作作風自查報告(11篇)
- 24春國家開放大學《機械CADCAM》形考任務1-3參考答案
- 山東省煙臺市牟平區(五四制)2023-2024學年九年級下學期期中考試數學試題
- 2024年咸陽職業技術學院單招職業技能測試題庫及答案解析
- 2020年10月自考00445中外教育管理史試題及答案含解析
- 國際關系史智慧樹知到期末考試答案2024年
評論
0/150
提交評論