計算機體系結構知識點匯總_第1頁
計算機體系結構知識點匯總_第2頁
計算機體系結構知識點匯總_第3頁
計算機體系結構知識點匯總_第4頁
計算機體系結構知識點匯總_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章計算機體系結構的基本概念1. 計算機系統結構的經典定義程序員所看到的計算機屬性,即概念性結構與功能特性。(計算機組成:指計算機系統結構的邏輯實現。計算機實現:計算機組成的物理實現)2. 計算機系統的多級層次結構:1. 虛擬機:應用語言機器->高級語言機器->匯編語言機器->操作系統機器2. 物理機:傳統機器語言機器->微程序機器3. 透明性:在計算機技術中,把這種本來存在的事物或屬性,但從某種角度看又好像不存在的概念稱為透明性。4. 編譯:先用轉換程序把高一級機器上的程序轉換為低一級機器上等效的程序5. 解釋:對于高一級機器上的程序中的每一條語句或指令,都轉去執行

2、低一級機器上的一段等效程序。6. 常見的計算機系統結構分類法有兩種:Flynn分類法、馮氏分類法(按系統并行度Pm:計算機系統在單位時間內能處理的最大二進制位數 )進行分類。Flynn分類法把計算機系統的結構分為4類:單指令流單數據流(SISD)單指令流多數據流(SIMD)多指令流單數據流(MISD)多指令流多數據流(MIMD)IS指令流,DS數據流,CS(控制流),CU(控制部件),PU(處理部件),MM,SM(表示存儲器)7. 計算機設計的定量原理:1. 大概率事件優先原理(分配更多資源,達到更高性能)2. Amdahl定理:加速比:Sn=T0(加速前)Tn(加速后)=11-Fe+Fe/S

3、e(Fe為可改進比例(可改進部分的執行時間/總的執行時間),Se為部件加速比(改進前/改進后)3. 程序的局部性原理:時間局部性:程序即將使用的信息很可能是目前使用的信息。空間局部性:即將用到的信息可能與目前用到的信息在空間上相鄰或相近。4. CPU性能公式:1. 時鐘周期時間2. CPI:CPI = 執行程序所需的時鐘周期數IC3. IC(程序所執行的指令條數)8. 并行性:計算機系統在同一時刻或者同一時間間隔內進行多種運算或操作。同時性:兩個或兩個以上的事件在同一時刻發生。并發性:兩個或兩個以上的事件在同一時間間隔內發生。 從處理數據的角度來看,并行性等級從低到高可分為:1.字串位串:每次

4、只對一個字的一位進行處理。 最基本的串行處理方式,不存在并行性。2字串位并:同時對一個字的全部位進行處理,不同字之間是串行的。 開始出現并行性。3.字并位串:同時對許多字的同一位(稱為位片)進行處理。 具有較高的并行性。4.全并行:同時對許多字的全部位或部分位進行處理。 最高一級的并行。從執行程序的角度來看,并行性等級從低到高可分為:1.指令內部并行:單條指令中各微操作之間的并行。2.指令級并行:并行執行兩條或兩條以上的指令。3.線程級并行:并行執行兩個或兩個以上的線程。 通常是以一個進程內派生的多個線程為調度單位。4.任務級或過程級并行:并行執行兩個或兩個以上的過程或任務(程序段) 以子程序

5、或進程為調度單元。5.作業或程序級并行:并行執行兩個或兩個以上的作業或程序。 提高并行性的技術途徑:1.時間重疊 引入時間因素,讓多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬件設備的各個部分,以加快硬件周轉而贏得速度。2.資源重復 引入空間因素,以數量取勝。通過重復設置硬件資源,大幅度地提高計算機系統的性能。3.資源共享 這是一種軟件方法,它使多個任務按一定時間順序輪流使用同一套硬件設備。3.系列機由同一廠家生產的具有相同系統結構、但具有不同組成和實現的一系列不同型號的計算機。7. 存儲程序原理的基本點:指令驅動8. 馮·諾依曼結構的主要特點1.以運算器為中心。2.在存儲器中

6、,指令和數據同等對待。 指令和數據一樣可以進行運算,即由指令組成的程序是可以修改的。3.存儲器是按地址訪問、按順序線性編址的一維結構,每個單元的位數是固定的。4.指令的執行是順序的5.指令由操作碼和地址碼組成。6.指令和數據均以二進制編碼表示,采用二進制運算。9.軟件的可移植性一個軟件可以不經修改或者只需少量修改就可以由一臺計算機移植到另一臺計算機上正確地運行。差別只是執行時間的不同。我們稱這兩臺計算機是軟件兼容的。實現可移植性的常用方法:采用系列機、模擬與仿真、統一高級語言 。軟件兼容:向上(下)兼容:按某檔機器編制的程序,不加修改就能運行于比它高(低)檔的機器。向前(后)兼容:按某個時期投

7、入市場的某種型號機器編制的程序,不加修改地就能運行于在它之前(后)投入市場的機器。向后兼容是系列機的根本特征。兼容機:由不同公司廠家生產的具有相同系統結構的計算機 。第二章 計算機指令集結構1. CPU中用來存儲操作數的存儲單元的主要類型:堆棧、累加器、通用寄存器組2. 通用寄存器型指令集結構進一步細分為3種類型寄存器-寄存器型(RR型)寄存器-存儲器型(RM型)存儲器-存儲器型(MM型)3.指令集結構的設計主要考慮3個因素:速度、成本、靈活性對指令集的基本要求:完整性、規整性、高效率、兼容性 4.設計RISC機器遵循的原則 1.指令條數少而簡單。只選取使用頻度很高的指令,在此基礎上補充一些最

8、有用的指令。2.采用簡單而又統一的指令格式,并減少尋址方式;指令字長都為32位或64位。3.指令的執行在單個機器周期內完成。(采用流水線機制)4.只有load和store指令才能訪問存儲器,其他指令的操作都是在寄存器之間進行。 (即采用load-store結構)5.大多數指令都采用硬連邏輯來實現。6.強調優化編譯器的作用,為高級語言程序生成優化的代碼。7.充分利用流水技術來提高性能。5.指令由兩部分組成:操作碼、地址碼指令集的3種編碼格式:變長編碼格式、定長編碼格式、混合型編碼格式第三章 流水線技術1. 流水線技術:把一個重復的過程分解為若干個子過程,每個子過程由專門的功能部件來實現。把多個處

9、理過程在時間上錯開,依次通過各功能段,這樣,每個子過程就可以與其他的子過程并行進行。(流水線中的每個子過程及其功能部件稱為流水線的級或段,段與段相互連接形成流水線。流水線的段數稱為流水線的深度。)2. CPU流水線:1. IF(取指令):根據PC值從指令內存中讀取一條指令,并且設置下一周期的PC值。2. ID(解碼):根據操作碼從指令中提取操作數。3. EX(執行):執行指令4. MEM(內存操作)5. WB(回寫):修改寄存器3. 通過時間:第一個任務從進入流水線到流出結果所需的時間。排空時間:最后一個任務從進入流水線到流出結果所需的時間。4. 流水線分類:1.單功能流水線與多功能流水線單功

10、能流水線:只能完成一種固定功能的流水線。多功能流水線:流水線的各段可以進行不同的連接,以實現不同的功能。2.靜態流水線與動態流水線靜態流水線:在同一時間內,多功能流水線中的各段只能按同一種功能的連接方式工作。動態流水線:在同一時間內,多功能流水線中的各段可以按照不同的方式連接,同時執行多種功能。3.線性流水線與非線性流水線線性流水線:流水線的各段串行連接,沒有反饋回路。數據通過流水線中的各段時,每一個段最多只流過一次。非線性流水線:流水線中除了有串行的連接外,還有反饋回路。5. 表示方法:1. 連接圖:Figure 1 多功能流水線,可執行乘與加2. 時空圖:Figure 2 靜態: 加法完成

11、后再進行乘法。動態:不要求加法完成6. 性能指標:1. 吞吐率:在單位時間內流水線所完成的任務數量或輸出結果的數量。2. 加速比:完成同樣一批任務,不使用流水線所用的時間與使用流水線所用的時間之比。3. 效率:流水線中的設備實際使用時間與整個運行時間的比值,即流水線設備的利用率。 n個任務實際占用的時空區/k個段總的時空區4. 當流水線各段時間相等時,流水線的效率與吞吐率成正比。 Tk=(k+n-1) t E=TPt 5. 流水線的效率是流水線的實際加速比S與它的最大加速比k的比值。 從時空圖上看,效率就是n個任務占用的時空面積和k個段總的時空面之比。7. 流水線相關:1. 數據相關:數據相關

12、具有傳遞性,反映了數據的流動關系如果兩條指令使用相同的名,但是它們之間并沒有數據流動,則稱這兩條指令存在名相關。2. 名相關:反相關:如果指令j寫的名與指令i讀的名相同,則稱指令i和j發生了反相關。 指令j寫的名指令i讀的名輸出相關:如果指令j和指令i寫相同的名,則稱指令i和j發生了輸出相關。 指令j寫的名指令i寫的名3. 控制相關:控制相關是指由分支指令引起的相關8. 流水線沖突:1. 結構沖突:因硬件資源滿足不了指令重疊執行的要求而發生的沖突。2. 數據沖突:當指令在流水線中重疊執行時,因需要用到前面指令的執行結果而發生的沖突。3. 控制沖突:流水線遇到分支指令和其他會改變PC值的指令所引

13、起的沖突。9. 解決流水線沖突:1. 數據沖突有:寫后讀沖突(RAW) 在 i 寫入之前,j 先去讀。 j 讀出的內容是錯誤的。對應于數據相關寫后寫沖突(WAW) 在 i 寫入之前,j 先寫。最后寫入的結果是 i 的。錯誤!對應于輸出相關讀后寫沖突(WAR) 在 i 讀之前,j 先寫。i 讀出的內容是錯誤的!由反相關引起。定向技術:在某條指令產生計算結果之前,其他指令并不真正立即需要該計算結果,如果能夠將該計算結果從其產生的地方直接送到其他指令需要它的地方,那么就可以避免停頓。流水線互鎖機制,插入“暫停”。 作用:檢測發現數據沖突,并使流水線停頓,直至沖突消失。 依靠編譯器解決數據沖突 讓編譯

14、器重新組織指令順序來消除沖突,這種技術稱為指令調度或流水線調度。2控制沖突有:處理分支指令最簡單的方法:“凍結”或者“排空”流水線 。由分支指令引起的延遲稱為分支延遲。減少分支延遲的方法:預測分支失敗 允許分支指令后的指令繼續在流水線中流動,就好象什么都沒發生似的。若確定分支失敗,將分支指令看作是一條普通指令,流水線正常流動。若確定分支成功,流水線就把在分支指令之后取出的所有指令轉化為空操作,并按分支目地重新取指令執行。要保證:分支結果出來之前不會改變處理機的狀態,以便一旦猜錯時,處理機能夠回退到原先的狀態。預測分支成功 假設分支轉移成功,并從分支目標地址處取指令執行。起作用的前題:先知道分支

15、目標地址,后知道分支是否成功。前述5段流水線中,這種方法沒有任何好處。延遲分支主要思想: 從邏輯上“延長”分支指令的執行時間。把延遲分支看成是由原來的分支指令和若干個延遲槽構成,不管分支是否成功,都要按順序執行延遲槽中的指令。分支延遲指令的調度任務:在延遲槽中放入有用的指令。由編譯器完成。能否帶來好處取決于編譯器能否把有用的指令調度到延遲槽中。三種調度方法: 從前調度、從目標處調度、從失敗處調度² MIPS若檢測到RAW沖突,流水線互鎖機制必須在流水線中插入停頓,并使當前正處于IF段和ID段的指令不再前進。分支指令的條件測試和分支目標地址計算在EX段完成,對PC的修改在MEM段完成。

16、一條指令的執行過程分為以下5個周期:1.取指令周期(IF)IR MemPC 。PC值加4。(假設每條指令占4個字節)2.指令譯碼/讀寄存器周期(ID)譯碼。用IR中的寄存器編號去訪問通用寄存器組,讀出所需的操作數。3.執行/有效地址計算周期(EX)不同指令所進行的操作不同:存儲器訪問指令:ALU把所指定的寄存器的內容與偏移量相加,形成用于訪存的有效地址。寄存器寄存器ALU指令:ALU按照操作碼指定的操作對從通用寄存器組中讀取的數據進行運算。寄存器立即數ALU指令:ALU按照操作碼指定的操作對從通用寄存器組中讀取的第一操作數和立即數進行運算。分支指令:ALU把偏移量與PC值相加,形成轉移目標的地

17、址。同時,對在前一個周期讀出的操作數進行判斷,確定分支是否成功。4存儲器訪問分支完成周期(MEM)該周期處理的指令只有load、store和分支指令。其他類型的指令在此周期不做任何操作。load和store指令load指令:用上一個周期計算出的有效地址從存儲器中讀出相應的數據。store指令:把指定的數據寫入這個有效地址所指出的存儲器單元。分支指令 分支“成功”,就把轉移目標地址送入PC。 分支指令執行完成。5.寫回周期(WB) ALU運算指令和load指令在這個周期把結果數據寫入通用寄存器組。 ALU運算指令:結果數據來自ALU。 load指令:結果數據來自存儲器系統。相關:兩條指令之間存在

18、某種依賴關系。流水線沖突是指對于具體的流水線來說,由于相關的存在,使得指令流中的下一條指令不能在指定的時鐘周期執行。 第四章:向量處理機1. 在流水線處理機中,設置向量數據表示和相應的向量指令,稱為向量處理機。(不具有向量數據表示和相應的向量指令的流水線處理機,稱為標量處理機。)2. 處理方式:1.橫向(水平)處理方式向量計算是按行的方式從左到右橫向地進行。組成循環程序進行處理。i數據相關:N次 功能切換:2N次不適合于向量處理機的并行處理。2.縱向 (垂直)處理方式向量計算是按列的方式從上到下縱向地進行。兩條向量指令之間:數據相關:1次 功能切換:1次對處理機結構的要求:存儲器存儲器結構3.

19、縱橫 (分組)處理方式又稱為分組處理方式。把向量分成若干組,組內按縱向方式處理,依次處理各組。對處理機結構的要求:寄存器寄存器結構3. 提高向量處理機性能的方法:1. 設置多個功能部件,使它們并行工作。2. 采用鏈接技術,加快一串向量指令的執行。3. 采用循環開采技術,加快循環的處理。(分段開采:當向量長度大于向量寄存器的長度,將向量分為長度相等的段)4. 采用多處理機系統,進一步提高性能。4. 鏈接特征:具有先寫后讀相關的兩條指令,在不出現功能部件沖突和源向量沖突的情況下,可以把功能部件鏈接起來進行流水處理,以達到加快執行的目的。鏈接特性的實質:把流水線定向的思想引入到向量執行過程的結果。5

20、. 向量處理機性能的主要參數:1. 一行向量長度為n指令的執行時間Tvp=Ts+Te+(n-1)Tc(Ts為向量處理部件建立的時間,Te為流水線的通過時間,Tc為流水線的時鐘周期時間。2. 每秒多少個浮點運算結果(MFLOP或一個浮點運算的時間)3. 一組向量指令的處理時間4. 向量流水線的最大性能R5. 半性能向量長度n1/2第5章 指令級并行這種指令之間存在的潛在并行性稱為指令級并行。指令級并行度ILP:指令中存在的一種并行性,計算機可以并行執行兩條及以上的指令。開發ILP的途徑有兩種:1.資源重復(主要基于硬件的動態開發方法) 2.流水線技術。(基于軟件的靜態開發方法)1. 流水線處理機

21、的實際CPI理想流水線的CPI加上各類停頓的時鐘周期數: CPI流水線 = CPI理想 + 停頓結構沖突 + 停頓數據沖突 + 停頓控制沖突理想CPI是衡量流水線最高性能的一個指標。動態分支預測:在程序運行時,根據分支指令過去的表現來預測其將來的行為。2. 分支歷史表BHT(Branch History Table)或分支預測緩沖器(Branch Prediciton Buffer)最簡單的動態分支預測方法。 用BHT來記錄分支指令最近一次或幾次的執行情況(成功或不成功),并據此進行預測。 BTB目標:將分支的開銷降為 0方法:分支目標緩沖將分支成功的分支指令的地址和它的分支目標地址都放到一個

22、緩沖區中保存起來,緩沖區以分支指令的地址作為標識。這個緩沖區就是分支目標緩沖器(Branch-Target Buffer,簡記為BTB,或者Branch-Target Cache)。3. 開發ILP的兩種方法:1. 記分牌動態調度算法目標:在沒有結構沖突時,盡早執行沒有數據沖突的指令(指令執行時可以跨越,但是在輸出段都是按序流出的),實現每個時鐘周期執行一條指令。記分牌硬件的實現:1.記分牌中維護著三張表,分別記錄指令的執行狀態、寄存器的狀態、功能部件狀態、數據相關關系。 2.它把流水線的譯碼段ID分為了兩個段:流出和讀操作數。記分牌流水線處理步驟:1) 流出(ID)如果當前流出指令所需的功能

23、部件空閑(無結構沖突),并且其它執行指令的目的寄存器與該指令的不同(無WAW沖突),記分牌就向功能部件流出該指令,并修改記分牌內部的記錄表。2) 讀操作數(ID)監測源操作數的可用性(前面已流出并且正在執行的指令都不對該寄存器進行寫操作),如果數據可用,它就通知功能部件從寄存器中讀出源操作數并開始執行3) 執行(EX)取到操作數則開始執行,產生出結果后,就通知記分牌它已經執行完成4) 寫結果(WB)若WAR沖突已經消失,記分牌則通知功能部件把結果寫入目的寄存器記分牌三張表:1) 指令狀態表2) 功能部件狀態表,每個部件有一項,每一項由以下9個字段組成:Busy:忙標志,指出功能部件是否忙。初值

24、為“no”;Op:該功能部件正在執行或將要執行的操作;Fi:目的寄存器編號;Fj,Fk:源寄存器編號;Qj,Qk:指出向源寄存器Fj、Fk寫數據的功能部件 ;Rj,Rk:標志位,“yes”表示Fj,Fk中的操作數就緒且還未被取走。否則就被置為“no”。3) 結果寄存器狀態表:指出哪個功能部件將結果寫入寄存器2. Tomasulo動態調度算法:1. 基本思想:記錄和監測指令相關,操作數一旦就緒就立即執行,把發生RAW沖突的可能性減小到最小。通過寄存器換名來消除WAR沖突和WAW沖突2. 基本結構:(1) 保留站:保存已經流出并等待到本功能部件執行的指令,在保留站通過流出邏輯來完成的寄存器換名(順

25、序流出,亂序執行 )(2) 公共數據總線(CDB):所有功能部件計算結果都送到CDB,由它把這些結果直接送到各個需要該結果的地方(亂序完成)(3) Load/store緩沖器:作用是存放計算有效地址的分量。記錄正在進行的load訪存,等待存儲器的響應/保存正在進行store訪存的目標地址,等待存儲數據的到達。保存完成了的load的結果(從存儲器取來的數據)/保存該store的地址和數據3. 指令執行步驟:1) 流出2) 執行3) 寫結果2.基本程序塊:一段除了入口和出口以外不包含其他分支的線性代碼段。3.循環級并行:使一個循環中的不同循環體并行執行。4.程序順序:由源程序確定的在完全串行方式下

26、指令的執行順序。保持異常行為是指:無論怎么改變指令的執行順序,都不能改變程序中異常的發生情況。數據流:指數據值從其產生者指令到其消費者指令的實際流動。靜態調度依靠編譯器對代碼進行靜態調度,以減少相關和沖突。它不是在程序執行的過程中、而是在編譯期間進行代碼調度和優化。通過把相關的指令拉開距離來減少可能產生的停頓。動態調度在程序的執行過程中,依靠專門硬件對代碼進行調度,減少數據相關導致的停頓不精確異常:當執行指令i導致發生異常時,處理機的現場(狀態)與嚴格按程序順序執行時指令i的現場不同。精確異常:如果發生異常時,處理機的現場跟嚴格按程序順序執行時指令i的現場相同。記分牌算法和Tomasulo算法

27、是兩種比較典型的動態調度算法。Tomasulo算法基本思想 1.核心思想記錄和檢測指令相關,操作數一旦就緒就立即執行,把發生RAW(read and write)沖突的可能性減少到最小;通過寄存器換名來消除WAR沖突和WAW沖突。更多地依賴于硬件寄存器換名可以消除WAR沖突和WAW沖突。寄存器換名是通過保留站和流出邏輯來共同完成的。Tomasulo算法具有以下兩個特點:沖突檢測和指令執行控制是分布的。每個功能部件的保留站中的信息決定了什么時候指令可以在該功能部件開始執行。計算結果通過CDB直接從產生它的保留站傳送到所有需要它的功能部件,而不用經過寄存器。每個保留站有以下幾個字段:Op:要對源操

28、作數進行的操作。Qj,Qk:將產生源操作數的保留站號。等于0表示操作數已經就緒且在Vj或Vk中,或者不需要操作數。Vj,Vk:源操作數的值。對于每一個操作數來說,V或Q字段只有一個有效。對于load來說,Vk字段用于保存偏移量。Busy:為“yes”表示本保留站或緩沖單元“忙”。A:僅load和store緩沖器有該字段。開始是存放指令中的立即數字段,地址計算后存放有效地址。循環展開和指令調度增加指令間并行性最簡單和最常用的方法開發循環級并行性循環的不同迭代之間存在的并行性。在把循環展開后,通過重命名和指令調度來開發更多的并行性。 編譯器完成這種指令調度的能力受限于兩個特性:程序固有的指令級并行

29、性;流水線功能部件的執行延遲。循環展開和指令調度時要注意以下幾個方面:保證正確性。在循環展開和調度過程中尤其要注意兩個地方的正確性:循環控制,操作數偏移量的修改。注意有效性。只有能夠找到不同循環體之間的無關性,才能有效地使用循環展開。使用不同的寄存器。(否則可能導致新的沖突)刪除多余的測試指令和分支指令,并對循環結束代碼和新的循環體代碼進行相應的修正。注意對存儲器數據的相關性分析 例如:對于load指令和store指令,如果它們在不同的循環迭代中訪問的存儲器地址是不同的,它們就是相互獨立的,可以相互對調。注意新的相關性 由于原循環不同次的迭代在展開后都到了同一次循環體中,因此可能帶來新的相關性

30、。 第九章 動態互聯網絡互聯網絡是一種開關元件按照一定的拓撲結構和控制方式構成的網絡,用來實現計算機系統中節點之間的相互連接動態網絡分類:總線網絡、多級互聯網絡、交叉開關網絡互聯網絡三要素:互聯結構、開關和控制方式1. 基本互聯函數:1) 交換函數:二進制地址編碼中第k位互反的輸入端與輸出端之間的連接。2) 均勻洗牌網絡。3) PM2I函數:PM2+1X=X+2imodN PM2-1X=X-2imodN2. 互聯網絡的結構參數:1) 網絡規模N:指互聯網絡中節點的個數。它表示該網絡所能連接的部件的數量。網絡規模越大,這個互聯網絡的連接能力越強2) 節點度d:指互聯網絡中節點所連接的邊數,包括入度,出度。3) 節點距離:從一個節點到另一個節點終止所需要跨越邊數的最小值4) 網絡直徑D:指網絡中任意兩個節點之間距離的最大值(網絡直徑越小越好)5) 等分寬度b(主要反映網絡的最大流量):把由N個節點構成的網絡切成節點數相同的(N/2)的兩半,在各種切法中,沿切口邊數的最小值稱為該網絡的等分寬度。而線等分寬度位B=b×(通道寬度,單位是位數)6) 對稱性:從任意節

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論