SATA Technology详细说明.ppt_第1页
SATA Technology详细说明.ppt_第2页
SATA Technology详细说明.ppt_第3页
SATA Technology详细说明.ppt_第4页
SATA Technology详细说明.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SerialATATechnology 2012 06 11AusterLai SATABasics SATA1 0傳輸速度為1 5Gbit s 支援進階主機控制器介面 AHCI 功能 可讓SATA儲存裝置啟用進階SATA功能 例如NCQ及熱插拔 SATA2 0傳輸速度可達3 0Gbit s在2004年正式推出 符合ATA 7規範 SATABasics SATA2 0進步的地方在於 1 3 0Gb s的高傳輸速度2 支援真正的SATA指令排序 NCQ 3 PortSelector 可使Host埠的兩個獨立SATAPort連接至同一設備 SATABasics 4 PortMultiplier 是一種可以在一個控制器上擴展多個SATA設備的技術5 介面和連線的強化 SATA3Gb s資料線長度最多2m SATA1 5Gb s只是1m PATA更短到50cm SATABasics SATA3 01 傳輸速度可達6Gbit s2 新增NCQ的指令數目 優先權及演算法 包括為即時性的資源提供優先處理 主要用於影像及音像傳輸 3 採用全新INCITSATA8 ACS標準 改良傳輸訊號技術亦大幅減低了傳輸時所需功耗 SATABasics SATA資料線由兩條傳送方向相反的差分信號對 LVDS 共4根 組成 發送 Tx 和接收 Rx 各走一路 不過 SATA在一對信號線上傳送資料的同時需要用另一對信號線返回流控 flowcontrol 資訊 所以仍然是半雙工 halfduplex SATAIO還是SATAII SATAII並 是規格的名稱 而是制定SATA1 0延伸架構的組織名稱 該組織已經正式改名為SATAIO SATAII是SATA1 0a的 延伸 延伸的新技術完全相容於SATA1 0 但 代表廠商就一定要加入這些新功能 從SATAIO聲明解 新技術可以選擇性加入而非必要 如果硬碟廠出 一台標有SATAII SATAIO 的產品 但既沒3GB S也沒NCQ 事實上也 能 它錯 NativeCommandQueuing NCQ 硬碟有支援NCQ 指 會先保 在硬碟控制晶片內 最多可以保 到32組指 硬碟會根據指 所需要的資 位置重新排 以最佳的順序送出 而 低指 的存取時間 NCQ示意圖 沒有NCQ時 寫順序為1234 碟片要轉 圈 有NCQ後指 會重排成1324 碟片只需要轉一圈 SATAArchitectureModel SATAArchitectureModel PhysicalLayer 1 OOBhandshake 2 Serial ParallelDataTransfer 3 還有BISTfunctionLinkLayer 1 將要打出去的data做編碼 將收進來的data做解碼 2 維持LinkLayer的handshake機制 TransportLayer 1 將ApplicationLayer要做的Command轉化成FIS的handshake 2 對FIS的組成和解開 ApplicationLayer 1 最高層級的Layer 進行ATA或ATAPIcommand的執行 2 implementation上很多是用軟體處理 PhysicalLayer Transmission Tx andReception Rx ofa6Gb sserialstreamPoweronsequencingSpeednegotiationProvidestatustolinklayerSupportpowermanagementrequestsOut of Band OOB signalgenerationanddetection PhysicalLayer OOB 通訊鏈結的建立是靠OOB OutOfBand 的檢測實現的 並且向上層LinkLayer提供了物理層的鏈結情況 透過OOBhandshake host與device可以決定要在Gen1 Gen2或Gen3做data傳輸 OOB主要的用意有 1 初始化 initialization 2 傳送速度的協商3 重置 Reset 4 從省電狀態的喚醒 PhysicalLayer OOB OOB信號的實踐 實際上是仰賴著COMRESET COMINIT與COMWAKE三個PHY信號線 1 COMRESET 主機對裝置的硬體重置 2 COMINIT 裝置送往主機 3 COMWAKE 主機或是裝置可以激發該信號來將PHY從省電狀態抽離 COMREST COMINIT和COMWAKE 由四個D K組成 其组成为 D27 3D10 2D10 2K28 5 ALIGNPrimitive PhysicalLayer OOB COMRESET由兩部分相互間隔構成 一部分是突發長度為160個UI UnitInterval 約106 7ns的ALIGN 另一部分是長度為480UI約320ns的Idle COMREST和COMINIT形式上是一樣的 但COMREST只能從host到device 而COMINIT只能從device到host PhysicalLayer OOB OOBDetect 通過檢測ALIGN資料流程的寬度和ALIGN資料流程的間隙達到的 PhysicalLayer Initiate 通迅鏈結建立過程 1 主機重置 發出COMREST 2 設備檢測到COMRESET後以COMINIT回應 COMINIT為重新連接開始信號 設備可以在任意時間發送COMINIT重新建立連接 若沒有COMINIT的通知 HOST就會重覆步驟1 直到DEVICE回覆為止 這也是系統允許熱插拔的關鍵 3 主機calibrate 發出COMWAKE 4 設備接收到COMWAKE後 設備連續發送6個COMWAKE信號 接著連續發送ALIGN進行傳送速度的協商 PhysicalLayer Initiate 5 主機鎖存資料 主機接收到COMWAKE後 以支援的最低速率連續發送D10 2資料 同時鎖存檢測接收的資料 當檢測到設備發送的ALIGN後 以接收的速率將ALIGN轉發給設備 D10 2是0101010101 這樣0和1交替的波形 可以讓device端更容易做clockrecovery的動作 主機在發送了COMWAKE後至少要在880ps內接檢測到ALIGN 否則主機重啟上電序列重新檢測設備 直到應用層將其終止 6 設備鎖存資料 檢測到ALIGN後發送同步信號SYNC 通訊建立成功 進入到正常操作模式 如在54 6us內未檢測到ALlGN 則進入錯誤處理 等待重新連接 7 當主機接收到三個非ALIGN後 鏈結建立完成 進入正常操作 PhysicalLayer Initiate PhysicalLayer Initiate Device與Host連接是首先從Device支持的最高速開始的 如果最高速不滿足則用較低速率再次匹配 直到最低速率也不能匹配後Device將進入error狀態 換速等待時間為54 6us 2048個ALIGNDWORD傳輸時間 PhysicalLayerDetailedBlockDiagram LinkLayer 1 Providesframeflowcontrol2 CRCgeneration checking3 Scrambles descramblesdataandcontrolwords4 8b 10bencodingConduct5 Convertsdatafromtransportlayerintoframes LinkLayer 傳輸層有FIS要傳送 鏈結層計算CRC值 加擾和8B 10B編碼後 加上SOF和EOF封裝成frame 傳遞給物理層 通過插入各種primitive進行流量控制 在成功傳遞完有效資料後 連接層等待對方的應答 並把結果傳給上層 從物理層接收到有效資料時 進行8B 10B解碼 解擾以及CRC效驗 然後將資料提交到傳輸層 LinkLayer 8B 10B 8B 10B編解碼 資料值可以統一的表示為Dx y或Kx y 其中D表示為資料字元 K表示為特殊的控制字元 x表示輸入的原始資料的低5位元 y表示輸入的原始資料的高3位元 輸出位元數目總共是10個位元 但只有 2 0 2 三種組合 2 是指4個位元0 與6個位元1 0 是指5個位元 0 與5個位元 1 2 是指6個位元 0 與4個位元 1 利用這種 不均等性 Disparity 的特性而具有強大的直流平衡 DCBalance 功能 可使得發送的 0 1 數量保持一致 連續的 1 或 0 基本上不超過5位 LinkLayer 8B 10B 編碼分為兩個階段 階段一 把低5位元資料結合D K 與CRD的當前狀態 正或負 查5B 6B資料編碼表 產生高6位元資料 階段二 把高3位元資料結合D K 與CRD當前狀態查3B 4B編碼資料表 產生低4位元資料 對K控制字元的編碼方式和D資料字元編碼方式一樣 協定中只使用了兩個控制字元K28 3和K28 5 LinkLayer 8B 10B LinkLayer 8B 10B 例如一組8位元的資料是10110101 B5h 首先 分成兩組101與10101a 10101 21 b 101 5 符號為D21 5 在下表中的位序為HGFEDCBA a EDCBA 經過5B 6B編碼為abcdei b HGF 經過3B 4B編碼為fghj LinkLayer 8B 10B LinkLayer 8B 10B Example HEXnumber45HEXnumberBC LinkLayer CRD CurrentRunningDisparity CRD 反映所發送的 1 和 0 的總數 用一位二進位數字來表示正和負 1and1 當傳輸完一次資料後 SATA必須根據當前的傳輸資料計算下一個CRD值 交替使用RD 和RD 欄的值 使差分信號的直流分量盡量小 計算規則如下 1 資料 l 的個數大於 0 的個數 那麼CRD為正 2 資料 0 的個數大於 1 的個數 那麼CRD為負 3 資料中 l 的個數等於 0 的個數 則CRD的值不變 LinkLayer CRD 00111111 1010111001 0101001001 8bCharacter0 x3F This10bCharactertransmittedwhenCRDnegative This10bCharactertransmittedwhenCRDpositive Thischaracter6ones4zerosDisparity 2 nextCRDpositive Thischaracter4ones6zerosDisparity 2 nextCRDnegative LinkLayer Scrambling 資料在進行8b 10b編碼之前 必須先行資料打散 Scramble 的處理 目的是為了降低EMI 實現方式是由LFSR LinearFeedbackShiftRegister 的方式來實踐 基本原理是將資料的8位元與LFSR暫存器的16位元輸出做XOR的處理 多項式G x LinkLayer Scrambling 規定LFSR的初始值為0 xFFFF LFSR必須在SOF標誌前就要被初始化 在SOF與EOF之間的資料 包括CRC值都需要加擾 對於操作基元Primitive是不需要加擾的資料處理流程 對於一個資料包 在SOF後的資料就必須計算其CRC值 同時這個資料必須和擾碼器的輸出進行XOR操作 操作結果送往8B 10B編碼器編碼 反之 在接收方 資料先通過10B 8B解碼 再與擾碼器的輸出結果進行XOR操作 最後計算資料的CRC值 LinkLayer CRC CRC的計算是以SOF和EOF之間的所有資料 即不包括操作基元 為物件 以Dword 32 bit 為單位 如果資料的內容不是Dword的整數倍 需要在資料包的後面用 0 來補充 協議規定CRC的初始值為0X52325032 SOF和EOF之間的所有資料不能超過2064個Dwords SATAFrameStructure AllSATAframesconsistof 1 Astartofframe SOF delimiter2 Apayload transportlayerinformation3 ACyclicRedundancyCheck CRC 4 Anendofframe EOF delimiter LinkLayer Primitive Primitive基元是用來控制和提供串列線路的狀態的 由4個Byte構成的DWORD 第一個byte是控制信號 K開頭 後面三個byte是資料信號 D開頭 LinkLayer Primitive FISTransferProtocalSequence 現以設備接收一個資料包的傳輸過程來說明基元的作用 總共分為9個狀念 首先主機 設備都處於空閒狀態 1 主機有資料需要發送 發送X RDY 通知設備準備接收資料 FISTransferProtocalSequence 2 設備檢醒好自己的狀態 準備好後發送R RDY告訴主機可以發送數據 3 主機開始發送資料 FISTransferProtocalSequence 4 接收方在接收到資料時 以R IP告訴主機正在接收資料 FISTransferProtocalSequence 5 主機的資料包沒有發送完 可是還有些資料沒有準備好 以HOLD告訴設備暫停資料發送 6 設備接收到HOLD後 以HOLDA回應 7 主機準備好了資料可以繼續發送 以HOLD結束等待狀態 8 主機繼續傳輸資料 9 設備接收資料 以R IP告訴主機正在接收資料 FISTransferProtocalSequence 10 主機發送完了整個資料包 發送WTRM告訴設備 主機正在等待傳輸結果 11 設備接收完整個資料包並效正確 以R OK告訴主機接收正確 FISTransferProtocalSequence 12 主機進入空閒狀態 發送同步信號SYNC 13 設備進入空閒狀態 發送同步信號SYNC TransportLayer TransportLayer 1 發送時根據Command的種類及格式構造FIS 接受時檢測FIS種類並分解得到有用資訊2 通知LinkLayer傳送frame以及獲取LinkLayer傳來的framereceipt確認 host收到FIS後也會向device發送確認資訊的FIS 3 管理和流量控制4 向ApplicationLayer報告傳輸完成或者報錯傳輸層不必關心需要傳輸或接收資訊的多少 只需把要傳輸的資料封裝成FIS格式 發送到LinkLayer 或者把收到的FIS去除封裝 提交給ApplicationLayer SATACompatibilitywithParallelATA Taskfilelocation ThetaskfileisintheATAdeviceInparallelATA accessestotheseregistersresultinparallelATAtrafficAllinformationexchangedbetweenSATAHostanddriveisdoneviaFISInSATA aduplicatecopyoftheTaskFile called shadowregisters islocatedinthehostadapter ShadowRegister 同一個Register 不是2個Register 只不過分了2層 上層是下層的Shadow 第一層是供CPUaccess 第二層供HWaccess CPU在寫Register的時候 會先寫在上層的ShadowRegister 硬體update後才會供下層HWaccess的Register開始執行 ShadowRegistertoTaskFile ApplicationlayersendsashadowregistercommandtoTransportlayer TransportlayercreatestheFIS 將payloadcontent的資訊 先寫到shadowcommandblockregister和shadowcontrolblockregister裏 通過FIS傳到device的commandregisterblock和controlregisterblock 1 shadowcommandblock映射到commandregisterblock 2 shadowcontrolblock映射到controlregisterblock ShadowRegister example Applicationlayerinitiateacommand TransportlayercreatestheFISiscalledaRegisterFIS HosttoDevice Table73maybereferencedtorefreshthereader smemoryofasimplifiedversionoftheShadowRegisterBlockorganizationofanATAadapter TaskFileRegister IDE介面硬碟的控制是通過硬碟控制器上的二組寄存器實現 TaskFileRegisters 命令寄存器 I O的埠位址為1F0H 1F7H 其作用是傳送命令與命令參數 Control DiagnosticRegisters 控制 診斷寄存器 I O的埠位址為3F6H 3F7H 其作用是控制硬碟驅動器 TaskFile example 讀取1000號邏輯磁區開始的8個磁區為例 第0 x1f3 0 x1f64個位元組的埠位址用來寫入LBA位址 那麼1000號邏輯磁區的LBA位址為0 x000003E8 所以0 x1F3 0 x1F4寫0 x00 0 x1F5寫0 x03 0 x1F6寫0 xE8 0 x1F2用來寫入命令所需要讀寫的磁區數 讀取8個磁區就寫0 x080 x1F7用來寫入要執行的操作的命令碼 讀操作為0 x20綜合起來 執行的命令序列為 out0 x1F3 0 x00out0 x1F4 0 x00out0 x1F5 0 x03out0 x1F6 0 xE8out0 x1F2 0 x08out0 x1F7 0 x20 FISTypesandFormats AFISisamechanismtotransferinformationbetweenhostanddeviceapplicationlayers1 ShadowRegisterBlockcontents2 ATAcommands3 Datamovementsetupinformation4 Readandwritedata5 Selftestactivation6 UniqueFISTypeCode RegisterFIS HosttoDevice 27h 用來傳輸主機的ShadowRegister的資料到設備 與ATA ATAPI指令字和寄存器相容 當Device接收到一個有效的RegisterFIS HosttoDevice 檢查Cbit的內容 然後更新命令寄存器 控制寄存器中的內容中 Cbit為 1 Device按照CommandRegister中的命令執行命令 Cbit為 0 Device按照ControlRegister中的內容執行控制請求 RegisterFIS DevicetoHost 34h 從裝置送往主機端 傳送裝置的狀態變化 當Device完成一個命令 向主機報告指令完成的狀態 Device用於修改host中shadowblock裏的commandregister和controlregister SetDeviceBits DevicetoHost A1h Device用來改寫host的shadowregister中的error或status的某些bit 包括Error全部8bit和Status中的6bit 不改變狀態寄存器中的第7bitBSY 第3bitDRQ I表示host在收到該FIS以後 如果shadowstatusregister中BSY和DRQ位都為0時 host進入中斷等待狀態 實際上表明device進入中斷等待狀態 將I位置1後可以設置host中statusregister的SERV 1 以要求匯流排使用權 此時BSY和DRQ位要都為0 DMAActivate DevicetoHost 39h Device發送該FIS同意主機以DMA方式向設備發送資料 是Device對主機DMA寫命令的一個回應 當發送完FIS後 Device必須進入接收DMA資料接收狀態 每發送一個DMADATAFIS後 要再次收到DMAActivateFIS才能發送下一個DMADATAFIS DMAsetupFIS Bidirectional 41h Bidirectional進行DMA操作的第一步 目的是為了建立DMA操作參數 發送方通過發送這個FIS 要求對方配置好DMA控制器 同時記憶體空間必須按要求處於準備狀態 Dbit為 0 代表發送方傳送資料 Dbit為 l 代表接收方傳送資料 傳輸時一方的D為1另一方的D為0DMATransferCount表示傳輸資料計數 PIOSetup DevicetoHost 5Fh 由設備發送給主機 告訴主機相關PIO操作參數 包括了在PIO傳輸前和傳輸後shadowregister的內容 在PIO傳輸資料的過程中 Device必須先發送這個FIS給主機 表示Device準備好發送或接受數據 與DMA傳輸一樣 每傳一個DATAFIS就要一個PIOSETUPFIS傳輸下一個DATAFIS DATAFIS Bidirectional 46h Bidirectional用來傳輸資

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论