女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

我們看看UFS中命令或請求是怎么執行的

SSDFans ? 來源:未知 ? 作者:李倩 ? 2018-06-08 15:29 ? 次閱讀

UFS中流淌的數據包叫做UPIU(UFS Protocol Information Unit,UFS協議信息單元),它是固定格式的數據結構,用以傳輸應用層發來的命令或者請求,以及跟它們相關的數據或者狀態信息。它就是SATA中的FIS,PCIe中的TLP。我們看看UFS中命令或請求是怎么執行的。

UFS采用“客戶-服務器”或者說主從的命令架構,UFS主機(Client,命令發起者,Initiator,他們都是一個意思)發送命令或者請求(Request)給UFS設備(服務器,Target),然后UFS設備執行命令并返回命令狀態(Response)。

一個命令或者請求的執行包含下面幾個階段:

命令階段:主機發起命令或請求給設備,這是“因”;

數據階段:傳輸跟命令相關的數據,比如讀寫命令,都涉及到數據的傳輸;有些命令不涉及數據的傳輸,所以這個階段并不是總是存在的,跟具體命令和請求相關。

狀態階段:設備執行完命令,必須給主機返回命令執行狀態信息。這個是“果”,必不可少的。在PCIe中,有Posted和Non-posted的TLP。對前者,命令執行者無需返回命令執行狀態給命令發起者,對后者,命令執行者必須返回狀態給命令發起者。對UFS來說,它的命令總是non-posted,即設備必須返回命令狀態給主機。

在命令執行過程中,無論是處在哪個階段,UFS主機和設備間都是通過UPIU進行信息的交互。

1. UFS主機通過命令或者請求UPIU發命令請求給設備;

2. UFS主機或者設備通過UPIU傳輸數據;

3. UFS設備通過UPIU返回命令狀態信息給主機。

下面我們看看UFS當中都有哪些UPIU。

命令或者請求UPIU

前一章看到,應用層包括UFS命令、設備管理器和任務管理器三個模塊,傳輸層根據不同模塊發來的命令或者請求,分別產生不同類型的UPIU。

UFS命令模塊發送簡化版本的SCSI命令,當傳輸層收到命令請求后,它會生成:COMMAND UPIU,把命令封裝起來。

應用層通過任務管理器來管理任務隊列,比如終止(Abort)和查詢命令隊列中的命令。當傳輸層收到來自任務管理器中的請求后,它會生成:TASK MANAGEMENT REQUEST UPIU,把請求封裝起來。

UFS通過設備管理器來管理UFS設備,比如設置和查詢UFS設備的配置(Configuration)。當傳輸層收到來自設備管理器發來的請求后,它會生成:QUERY REQUEST UPIU,把請求封裝起來。

數據傳輸相關UPIU

當主機發送了類似讀命令給設備之后,設備需要返回數據給主機,設備通過DATA IN UPIU向主機傳輸數據。

當主機發送了類似寫命令給設備之后,主機需要往設備寫數據,主機通過DATA OUT UPIU向設備傳輸數據。

UFS的主機是個暖男,它在向設備寫數據的時候,會考慮到設備這個時候能不能接收數據(因為設備可能這個時候沒有足夠的空間接收主機數據),它在向設備發了寫命令之后,不會立刻把數據傳輸給設備,而是在那里等設備的通知。當設備準備好接收數據,以及接收多少數據,設備通過READY TO TRANSFER UPIU (RTT)告知主機。當主機接收到該RTT后,才開始按照RTT的信息傳輸數據。至于每次傳輸數據的多少,RTT中包含這信息,主機根據RTT進行傳輸。

所以,主機只有在收到設備的RTT,才能發DATA OUT UPIU!

注意,讀命令無需這種機制。因為設備從閃存中獲得數據后,是設備控制數據的傳輸。對主機來說,它在發讀命令之前,已經準備好足夠的空間用以接收數據,所以不存在主機沒有空間接收數據的情況。

狀態UPIU

前面看到,主機有三種請求:SCSI命令,任務管理器發出的Task Management Request,以及設備管理器發出的Query request。針對不同的命令或者請求,設備在執行完相應的任務后,分別返回對應的狀態UPIU給主機。

其它UPIU

除了以上常規的UPIU,還有其它一些UPIU作為他用。

設備上電后,主機檢測是否與之連接,會發NOP OUT UPIU給設備。我們平時想看看跟某個電腦或者網站能否連接上,會發一個ping命令。NOP OUT UPIU跟ping命令作用類似。

當設備收到NOP OUT UPIU后,會返回NOP IN UPIU。主機收到該UPIU后,確認與設備連接,然后可以進行后續操作。

最后一個UPIU就是REJECT UPIU。當設備收到一個無效的UPIU時,它會發REJECT UPIU拒絕無效的UPIU。

UPIU匯總

偷個懶,我就直接把UFS spec這張表貼這里。數了數,一共12個UPIU。經過我之前的解釋,讀者現在應該清楚每個UPIU的作用了。

讀寫命令中UPIU交互例子

前面我們都是單個來看UPIU,現在我們以讀寫命令為例,看看他們是如何組合完成命令處理的。

首先是一個“主機往設備讀取96KB數據”的例子。

首先,主機發送讀96KB數據的命令給設備,然后設備執行命令,分了三批把數據返回給主機,最后返回命令執行狀態給主機。

然后是一個“主機往設備寫64KB數據”的例子。

主機發送寫64KB數據的命令給設備,然后在那里等設備響應。很快,設備說,你可以傳24KB數據下來了,于是主機寫24KB數據給設備;接著,設備又來通知說可以繼續傳32KB數據,主機照做。最后,設備通知說可以把最后8KB數據也傳過來,主機于是寫最后8KB數據。最后,主機收到設備命令執行完成的響應。

我們看到,主機必須等收到RTT后才能啟動數據傳輸!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 管理器
    +關注

    關注

    0

    文章

    252

    瀏覽量

    18911
  • 數據包
    +關注

    關注

    0

    文章

    269

    瀏覽量

    24865
  • UFS
    UFS
    +關注

    關注

    6

    文章

    109

    瀏覽量

    24753

原文標題:蛋蛋讀UFS之三:UFS數據包UPIU

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linuxxargs命令的使用方法

    xargs命令從標準輸入另一個命令的輸出讀取文本行,并將其轉換為命令執行
    發表于 11-25 15:14 ?7291次閱讀
    Linux<b class='flag-5'>中</b>xargs<b class='flag-5'>命令</b>的使用方法

    請問Z-Stack Home中發送端的命令請求是如何對應接收端的回調函數的?

    本帖最后由 一只耳朵怪 于 2018-5-24 14:26 編輯 我在學習Z-Stack Home1.2.1協議棧時,有如下兩個問題,望各位指教,謝謝!1. 不太明白發送端的命令請求是
    發表于 05-22 07:59

    UFS Card是什么?

    SD UHS-II Card在高階手機的應用, CPU 大都已支援 UFS Interface, 可以直接接 eUFS 顆粒. 另外 UFS Card的介面可以透過 USB 的介面實現, 隨然受限於
    發表于 09-17 09:05

    掃描請求是否在中央(TX)外圍(RX)模塊上產生任何事件?

    掃描請求是否在中央(TX)外圍(RX)模塊上產生任何事件?有人能告訴我更多關于掃描請求格式的信息嗎?除了“它存在”以外,我一直在尋找更多的信息。
    發表于 09-23 09:19

    UFS電源管理的相關資料推薦

    轉載:蛋蛋讀UFS之十:UFS電源管理 FS是手機存儲設備,因此對功耗要求很高。我們看看UFS的電源管理。三個供電電壓,VCC,VCCQ和
    發表于 11-12 06:16

    手機研發必須了解的UFS相關知識

    。  再形象一點,我們以搬運貨物的例子來比較一下eMMC和UFS命令執行方式:  現在的手機,應用非常豐富,你要一邊斗地主,一邊聽歌,還要聊微信,多線程操作。由于全雙工和
    發表于 03-29 11:08

    USB主機如何識別USB設備及請求命令

    標準的USB設備請求命令是用在控制傳輸的“初始設置步驟”里的數據包階段(即DATA0,由八個字節構成),請看回問答四的內容。標準USB設備請求命令
    發表于 07-16 10:36 ?7862次閱讀

    什么是UFS?為什么說UFS是手機存儲的未來?

    UFS支持命令隊列,就是主機一下可以發很多個命令下去,然后UFS設備支持并行和亂序執行,誰先完成誰先返回狀態。這種
    的頭像 發表于 06-04 15:38 ?6.4w次閱讀

    看看UFS的電源管理

    除此之外,M-PHY還有一種更加省電的狀態,那就是HIBERN8 (Hibernate,休眠狀態),這種狀態下,M-PHY極為省電。UFS主機和UFS設備不可能一直交互數據,總有閑下來的時候。當
    的頭像 發表于 07-05 16:53 ?9698次閱讀
    來<b class='flag-5'>看看</b><b class='flag-5'>UFS</b>的電源管理

    UFS系列十:UFS電源管理

    轉載:蛋蛋讀UFS之十:UFS電源管理 FS是手機存儲設備,因此對功耗要求很高。我們看看UFS的電源管理。三個供電電壓,VCC,VCCQ和
    發表于 11-07 09:06 ?22次下載
    <b class='flag-5'>UFS</b>系列十:<b class='flag-5'>UFS</b>電源管理

    LabVIEW執行系統命令VI介紹

    LabVIEW自帶一個執行系統命令VI(System Exec.vi),位于函數選板的“互連接口”>>“庫與可執行程序”>>“執行系統命令
    的頭像 發表于 04-25 11:47 ?1.1w次閱讀
    LabVIEW<b class='flag-5'>中</b><b class='flag-5'>執行</b>系統<b class='flag-5'>命令</b>VI介紹

    為什么shell腳本執行命令要加exec?這個exec有什么作用呢?

    正常情況下,如果我們想要在shell腳本執行一個命令我們只用將該命令原樣寫到這個shell腳
    的頭像 發表于 08-21 09:10 ?3938次閱讀
    為什么shell腳本<b class='flag-5'>中</b><b class='flag-5'>執行命令</b>要加exec?這個exec有什么作用呢?

    linuxsource命令的用法

    配置文件執行腳本。 source命令的語法為: source filename . filename 其中,filename是腳本文件的路徑。 當source
    的頭像 發表于 11-08 14:35 ?2934次閱讀

    uboot命令執行過程是什么

    U-boot是通過執行u-boot提供的命令來加載Linux內核的,其中 命令bootm的功能 即為從memory啟動Linux內核映像文件。 在講解bootm加載內核之前,先來看看u
    的頭像 發表于 12-04 17:31 ?1059次閱讀

    bootm命令執行流程

    Bootm命令用來從memory啟動內核,bootm命令執行流程如下圖所示。 在串口終端輸入bootm命令后,執行do_bootm函數來完
    的頭像 發表于 12-04 17:33 ?1458次閱讀
    bootm<b class='flag-5'>命令</b>的<b class='flag-5'>執行</b>流程