TWI750472B - 使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法 - Google Patents

使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法 Download PDF

Info

Publication number
TWI750472B
TWI750472B TW108113974A TW108113974A TWI750472B TW I750472 B TWI750472 B TW I750472B TW 108113974 A TW108113974 A TW 108113974A TW 108113974 A TW108113974 A TW 108113974A TW I750472 B TWI750472 B TW I750472B
Authority
TW
Taiwan
Prior art keywords
address
bus
translation
identifier
instruction
Prior art date
Application number
TW108113974A
Other languages
English (en)
Other versions
TW202001572A (zh
Inventor
克里斯多夫 拉奇
馬可 克雷莫
卡斯頓 歐特
強納森 D 布瑞布里
大衛 克拉達可
Original Assignee
美商萬國商業機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商萬國商業機器公司 filed Critical 美商萬國商業機器公司
Publication of TW202001572A publication Critical patent/TW202001572A/zh
Application granted granted Critical
Publication of TWI750472B publication Critical patent/TWI750472B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供一種用於由操作上連接至一或多個匯流排之一處理器處理一指令之方法,其包含判定該指令用以存取一位址空間之一位址,該位址空間映射一記憶體且包含一MMIO位址範圍。該方法判定正被存取之該位址在該MMIO位址範圍內,並基於該判定而產生正被存取之該位址轉成識別該等匯流排中之一者之一匯流排識別符及一匯流排位址空間之一匯流排位址的一第一轉譯。由於該轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置。該方法在一轉譯後備緩衝區中產生一項目。經由該已識別匯流排將導向至該裝置之一請求發送至由於該轉譯而產生之該匯流排位址。

Description

使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法
本發明係關於電腦系統之領域。更特定言之,本發明係關於由處理器處理指令。
當由處理器處理指令時,常常需要與例如輸入/輸出裝置或記憶體裝置之周邊裝置通信。此類通信可能需要識別目標裝置及/或指派給目標裝置之位址。用於使能夠進行此類通信之不同方法為吾人所知。考慮現代電腦系統,與周邊裝置之通信對時間要求愈來愈嚴格。隨著電腦系統變得愈來愈複雜,當執行指令時,複雜性常常會伴隨有關於所需通信之低效率。
各種實施例提供一種用於由一處理器處理一指令之方法,以及一種用於執行該方法之電腦系統及電腦程式產品,如由獨立請求項之主題所描述。附屬請求項中描述了有利實施例。若本發明之實施例不互斥,則其可彼此自由地組合。
在一個態樣中,本發明係關於一種用於由一處理器處理一指令之方法。該處理器操作上連接至一或多個匯流排。該處理器判定該指令用以存取一位址空間之一位址。該位址空間映射一記憶體且另外包含一 MMIO位址範圍。該方法判定正由該指令存取之該位址在該MMIO位址範圍內。該方法基於正被存取之該位址在該MMIO位址範圍內之該判定而產生正被存取之該位址轉成識別該等匯流排中之一者之一匯流排識別符及一匯流排位址空間之一匯流排位址的一第一轉譯。該匯流排位址空間被指派給該已識別匯流排。此外,由於該轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置。該方法在一轉譯後備緩衝區中產生一項目。該已產生項目使用轉譯表格使能夠進行正被存取之該位址轉成由於該轉譯而產生之該匯流排識別符及該匯流排位址的一轉譯。基於該指令,經由該已識別匯流排將導向至該裝置之一請求發送至由於該轉譯而產生之該匯流排位址。
在另一態樣中,本發明係關於一種系統,其包含:一或多個處理器;及一記憶體,其以通信方式耦接至該一或多個處理器。該一或多個處理器操作上連接至一或多個匯流排。該電腦系統經組態以由一處理器處理一指令。該系統判定該指令用以存取一位址空間之一位址。該位址空間映射一記憶體且另外包含一MMIO位址範圍。該處理包含判定正由該指令存取之該位址在該MMIO位址範圍內。該方法基於正被存取之該位址在該MMIO位址範圍內之該判定而產生正被存取之該位址轉成識別該等匯流排中之一者之一匯流排識別符及一匯流排位址空間之一匯流排位址的一第一轉譯。該匯流排位址空間被指派給該已識別匯流排。此外,由於該轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置。該系統在一轉譯後備緩衝區中產生一項目。該已產生項目使用轉譯表格使能夠進行正被存取之該位址轉成由於該轉譯而產生之該匯流排識別符及該匯流排位址的一轉譯。基於該指令,經由該已識別匯流排將導向至該 裝置之一請求發送至由於該轉譯而產生之該匯流排位址。
在另一態樣中,本發明係關於一種電腦程式產品。該電腦程式產品包含一電腦可讀儲存媒體,該電腦可讀儲存媒體具有與其一起體現之機器可執行程式指令。該電腦程式產品經組態以由一處理器處理一指令。該電腦程式產品判定該指令用以存取一位址空間之一位址。該位址空間映射一記憶體且另外包含一MMIO位址範圍。該電腦程式產品判定正由該另一指令存取之該位址在該MMIO位址範圍內。該電腦程式產品基於正被存取之該位址在該MMIO位址範圍內之該判定而產生正被存取之該位址轉成識別該等匯流排中之一者之一匯流排識別符及一匯流排位址空間之一匯流排位址的一第一轉譯。該匯流排位址空間被指派給該已識別匯流排。此外,由於該轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置。該電腦程式產品在一轉譯後備緩衝區中產生一項目。該已產生項目使用轉譯表格使能夠進行正被存取之該位址轉成由於該轉譯而產生之該匯流排識別符及該匯流排位址的一轉譯。基於該另一指令,經由該已識別匯流排將導向至該裝置之一請求發送至由於該轉譯而產生之該匯流排位址。
上述發明內容並不意欲描述本發明之每一所說明實施例或每一實施方案。
10:輸入及/或輸出(I/O)裝置/周邊設備/攜帶型儲存裝置
30:外部系統
100:電腦系統
101:一般用途電腦
105:處理器
110:記憶體
111:作業系統(OS)
112:指令
115:記憶體控制器
120:儲存體
122:基本輸入輸出系統(BIOS)
125:顯示控制器
130:顯示器
135:本機輸入/輸出控制器
145:輸入及/或輸出(I/O)裝置/周邊設備/靜止儲存裝置
150:鍵盤
155:滑鼠
165:網路
200:虛擬位址
202:記憶體管理單元(MMU)及/或動態位址轉譯(DAT)表格
203:分割區絕對位址空間
204:記憶體映射範圍
206:MMIO範圍
208:第一PBU0 BAR/PCIe匯流排單元(PBU)
210:其他PBU1 BAR/PCIe匯流排單元(PBU)
212:Bus0 BAR
214:Switch0 Port1 BAR
216:Func 1 BAR
218:Func 2 BAR
300:實例方法
310:步驟
312:步驟
314:步驟
316:步驟
318:步驟
320:步驟
322:步驟
324:步驟
330:分割區絕對位址(PAA)
332:MMIO索引(MMIO_Idx)
334:剩餘部分
338:轉譯表格項目
340:匯流排識別符硬體請求路由位址(HRRA)
342:極限位址(MMIO_limit)
344:基底位址(MMIO_base)
400:實例方法
410:步驟
412:步驟
414:步驟
416:步驟
418:步驟
420:步驟
422:步驟
500:步驟
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟
512:步驟
514:步驟
599:實例方法
包括於本申請案中之圖式併入至本說明書中並形成本說明書之部分。圖式繪示本發明之實施例,且連同實施方式一起用以闡釋本發明之原理。圖式僅繪示某些實施例且並不限制本發明。
圖1 描繪根據本發明之實施例的實例電腦系統之方塊 圖。
圖2 描繪根據本發明之實施例的實例位址結構之示意圖。
圖3 描繪根據本發明之實施例的用於處理存取位址空間之位址之指令之實例方法的示意流程圖。
圖4 描繪根據本發明之實施例的用於使用TLB處理存取位址空間之位址之指令之實例方法的示意流程圖。
圖5 描繪根據本發明之實施例的用於處理存取分割區絕對位址之指令之例示性方法的示意流程圖。
儘管本發明容許各種修改及替代形式,但其細節已作為實例而在圖式中予以展示且將予以詳細地描述。然而,應理解,並不意欲將本發明限於所描述之特定實施例。相反,意欲涵蓋屬於本發明之精神及範疇內的所有修改、等效者及替代方案。
本發明之各種實施例的描述係出於說明目的而呈現,但並不意欲為詳盡的或限於所揭示之實施例。在不脫離所描述之實施例之範疇及精神的情況下,許多修改及變化對於一般熟習此項技術者而言將係顯而易見的。本文中所使用之術語經選擇以最佳地闡釋實施例之原理、實際應用或對市場上發現之技術之技術改良,或使其他一般熟習此項技術者能夠理解本文中所揭示之實施例。
記憶體映射輸入或輸出(Memory Mapped Input/Output;MMIO)位址為由處理器指令使用以按記憶體映射方式在諸如例如高速周邊組件互連(Peripheral Component Interconnect Express;PCIe)匯流排 之匯流排上進行讀取或寫入的位址。如本文中所使用,記憶體映射意謂:根據記憶體映射,處理器指令使用與用於存取實體主記憶體之定址方案相同的定址方案。舉例而言,具有儲存至記憶體特性之指令可經由PCIe匯流排將所涉及之資料發送至PCIe裝置,而非將各別資料儲存至記憶體,且具有載入特性之指令可經由PCIe匯流排請求比如例如I/O裝置之裝置用已請求資料作出回應,而非自記憶體讀取資料。
呈現本文中所論述之本發明之實施例,其中匯流排為PCIe匯流排,裝置為PCIe裝置,且匯流排位址為PCIe匯流排位址。然而,本發明不應被視為限於此類情形,且可與替代匯流排、裝置及匯流排位址一起使用或適應於替代匯流排、裝置及匯流排位址。
PCIe位址通常被組織為階層式定址結構。PCIe中之基底位址暫存器(Base Address Register;BAR)定義指派給例如函式、交換器、匯流排、PCIe匯流排單元等等之組件之位址空間的起始位址及長度。韌體通常藉由以下操作來初始化定址結構:執行匯流排查核(bus walk),亦即,系統性地掃描或「全面查核」可經由電腦系統所包含之匯流排而存取之組件。
本發明之一些實施例具有簡化及加速裝置識別且更特定的是簡化及加速匯流排及指派給各別裝置之匯流排位址之識別的有益效果。轉譯表格可提供用以將MMIO位址轉譯至匯流排識別符及匯流排位址之簡單方法。裝置可例如為輸入/輸出(I/O)裝置或記憶體裝置。實施例可引入在一側的處理器之記憶體管理單元(Memory Management Unit;MMU)及作業系統之動態位址轉譯(dynamic address translation;DAT)表格與在另一側的一或多個PCIe基底位址暫存器(PCIe BAR)之間的MMIO範圍。
除了轉譯表格之外,亦提供轉譯後備緩衝區(translation lookaside buffer;TLB)。TLB緩衝使用轉譯表格執行之轉譯之轉譯結果。使用此類緩衝區可具有可在硬體層級上執行轉譯而不涉及韌體的有益效果。因此,相比於每次使用一轉譯表格,使用緩衝區識別轉譯可更高效。詳言之,若同一MMIO位址被反覆地轉譯,則在使用緩衝區的情況下,緩衝先前轉譯結果可能係高效的。
圖1描繪電腦系統100,其適於實施用於處理存取MMIO位址之指令並轉譯MMIO位址以便基於所處理之指令判定匯流排識別符及將被發送請求之匯流排位址的方法。應瞭解,本文中所描述之方法係至少部分地非互動式,且藉助於諸如伺服器或內嵌系統之電腦化系統而自動化。但在實例實施例中,本文中所描述之方法可實施於(部分地)互動式系統中。此等方法可進一步實施於軟體(例如指令112)、韌體(包括基本輸入輸出系統(basic input output system;BIOS)122)、硬體(例如處理器105)或其組合中。在實例實施例中,本文中所描述之方法實施於軟體中,作為可執行程式而實施,並由諸如個人電腦、工作站、小型電腦或大型主機電腦之特殊用途或一般用途數位電腦執行。最一般的電腦系統100因此包括一般用途電腦101。
在實例實施例中,在硬體架構方面,如圖1所展示,電腦101包括處理器105、耦接至記憶體控制器115之記憶體(例如主記憶體)110,及經由本機輸入/輸出控制器135以通信方式耦接之一或多個輸入及/或輸出(I/O)裝置(或周邊設備)10及145。輸入/輸出控制器135可為但不限於一或多個匯流排或其他有線或無線連接,如此項技術中所知。輸入/輸出控制器135可具有用以使能夠進行通信的出於簡單起見而省略之額外元 件,諸如控制器、緩衝區(快取記憶體)、驅動器、中繼器及接收器。另外,本機介面可包括位址、控制及/或資料連接以使能夠在前述組件當中進行適當通信。I/O裝置10及145可例如包含任何攜帶型儲存裝置10或靜止儲存裝置145。
處理器105為用於執行軟體之硬體裝置,特定言之,該軟體儲存於記憶體110中。處理器105可為任何自訂或市售處理器、中央處理單元(central processing unit;CPU)、與電腦101相關聯之若干處理器當中之輔助處理器、基於半導體之微處理器(呈微晶片或晶片組之形式)、巨集處理器,或用於執行軟體指令之大體上任何裝置。
記憶體110可包括揮發性記憶體元件(例如隨機存取記憶體(RAM,諸如DRAM、SRAM、SDRAM等等))及非揮發性記憶體元件(例如ROM、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、可程式化唯讀記憶體(PROM))中之任一者或其組合。應注意,記憶體110可具有分散式架構,其中各個組件被定位成彼此遠離,但可由處理器105存取。
記憶體110中之軟體可包括一或多個單獨程式,該一或多個單獨程式中之每一者包含用於實施邏輯功能之可執行指令之已排序清單,值得注意的是,該等邏輯功能為本發明之實施例中所涉及的功能。在圖1之實例中,記憶體110中之軟體包括指令112。
記憶體110中之軟體亦可包括合適的作業系統(OS)111。OS 111基本上控制諸如用於實施如本文中所描述之方法之指令112之其他電腦程式的執行。
本文中所描述之方法可呈來源程式、可執行程式(物件程式 碼)、指令碼或包含待執行之一組指令之任何其他實體的形式。當各別程式被提供為來源程式時,則需要經由可能或可能不包括於記憶體110內之編譯器、組譯器、解譯器或其類似者轉譯該程式,以便結合OS 111適當地操作。此外,該等方法可被撰寫為以下各者:物件導向式程式設計語言,其具有資料及方法之類別;或程序性程式設計語言,其具有常式、次常式及/或函式。
在實例實施例中,習知鍵盤150及滑鼠155亦可耦接至輸入/輸出控制器135。諸如I/O裝置145之其他輸出裝置可包括輸入裝置,例如但不限於印表機、掃描器、麥克風及其類似者。最後,I/O裝置10及145可進一步包括傳達輸入及輸出兩者之裝置,例如但不限於網路介面卡(NIC)或調變器/解調變器(用於存取其他檔案、裝置、系統或網路)、射頻(RF)或其他收發器、電話介面、橋接器、路由器及其類似者。I/O裝置10及145可為此項技術中所知之任何一般化密碼編譯卡或智慧卡。系統100可進一步包括耦接至顯示器130之顯示控制器125。在實例實施例中,系統100可進一步包括用於耦接至網路165之網路介面。網路165可為用於經由寬頻或其他連接而在電腦101與任何外部伺服器、用戶端及其類似者之間通信的基於IP之網路。網路165在電腦101與外部系統30之間傳輸及接收資料。在實例實施例中,網路165可為由服務提供者管理之受管理IP網路。網路165可以無線方式被實施,例如使用無線協定及技術,諸如WiFi、WiMax等等。網路165亦可為封包交換式網路,諸如區域網路、廣域網路、都會網路、網際網路或其他相似類型之網路環境。網路165可為固定無線網路、無線區域網路(LAN)、無線廣域網路(WAN)、個人區域網路(PAN)、虛擬私人網路(VPN)、企業內部網路或其他合適網路系統,且包括用於接 收及傳輸信號之設備。
若電腦101為PC、工作站、智慧型裝置或其類似者,則記憶體110中之軟體可進一步包括基本輸入輸出系統(BIOS)122。BIOS為一組基本軟體常式,其在啟動時初始化及測試硬體,啟動OS 111,並支援硬體裝置當中之資料傳送。BIOS儲存於ROM中,使得可在啟動電腦101時執行BIOS。
當電腦101在操作中時,處理器105經組態以執行儲存於記憶體110內之指令112,向及自記憶體110傳達資料,並大體上依照軟體控制電腦101之操作。本文中所描述之方法及OS 111完全或部分地由處理器105讀取,但通常係部分地由處理器105讀取,可能在處理器105內被緩衝,且接著被執行。
當本文中所描述之系統及方法實施於指令112中時,如圖1所展示,該等方法可儲存於諸如儲存體120之任何電腦可讀媒體上以供任何電腦相關系統或方法使用或結合任何電腦相關系統或方法而使用。儲存體120可包含諸如HDD儲存體之磁碟儲存體。
圖2描繪繪示實例位址結構之示意圖。可以指派給分割區之分割區絕對位址空間203之形式提供位址空間。當分割區發出指令時,指令可存取虛擬位址200。可使用記憶體管理單元(MMU)及/或動態位址轉譯(DAT)表格202將虛擬位址轉譯至分割區絕對位址空間203之分割區絕對位址。舉例而言,可藉由DAT將虛擬位址轉換為真實位址,且接著藉由加首碼而轉換為絕對位址。分割區絕對位址空間203可包含映射記憶體之絕對位址範圍。各別範圍可自例如0之下限延伸至上限MLS。另外,分割區絕對位址空間203包含自下限(亦即,比如例如0xF0…之起點)延伸至上 限(亦即,比如例如0xFFFFFFFFFFFFFFFF之末端)之MMIO位址範圍。由指令存取之絕對位址可由記憶體映射範圍204包含,或由絕對分割區位址之MMIO範圍206包含。MMIO範圍206可涵蓋一或多個PCIe匯流排單元(PBU)210及208之BAR。舉例而言,絕對位址0xF1…至0xF2…可為用於存取第一PBU0 BAR 208之位址,而其他絕對分割區位址0xF0…至0xF1…可為用於存取另一PBU1 BAR 210之位址。PBU可包含一或多個匯流排。因此,PBU BAR可包含一或多個匯流排BAR。舉例而言,PBU0 BAR 208可包含Bus0 BAR 212。Bus0 BAR 212可例如包含可經由比如例如0xF10…至0xF11…之絕對分割區位址範圍而存取的Switch0 Port1 BAR 214。Switch0 Port1 BAR 214可包含一或多個功能BAR,比如例如Func 1 BAR 216及Func 2 BAR 218,該一或多個功能BAR中之每一者可經由MMIO範圍206所包含之絕對分割區位址範圍被定址。Func 1 BAR 216可例如可使用絕對分割區位址0xF1010…至0xF1011…被定址,且Func 2 BAR 218可例如可使用絕對分割區位址0xF1011…及0xF1012…被定址。因此,MMIO範圍206所包含之MMIO位址可被轉譯轉成識別比如例如Bus0之匯流排之匯流排識別符及例如PCIe匯流排位址之匯流排位址。PCIe匯流排位址可識別指派給例如Bus0之已識別匯流排之PCIe匯流排位址空間之PCIe匯流排位址。
圖3描繪用於處理存取位址空間之位址之指令之實例方法300的示意流程圖。在310處,處理器接收存取位址空間之位址之指令。位址可為分割區絕對位址空間之分割區絕對位址(PAA)330。PAA 330可包含:提供MMIO索引(MMIO_Idx)332之第一區段,MMIO_Idx 332可用以識別提供匯流排識別符硬體請求路由位址(Hardware Request Routing Address;HRRA)340之轉譯表格項目338;及剩餘部分334。
在312處,為了識別轉譯表格項目338,處理器將MMIO_Idx與位元組位移相乘。位元組位移可例如為16位元組(其中圖3中之*16表示乘以16)。
在314處,處理器相加MMIO表格基底位址。結果可為轉譯表格項目338之位址。項目338可包含識別匯流排之匯流排識別符HRRA 340。HRRA 340可例如識別隱藏式選單(drawer)、叢集、埠等等。項目338可進一步包含:已識別匯流排之基底位址(MMIO_base)344,亦即,指派給已識別匯流排之匯流排位址空間之下限;以及已識別匯流排之極限位址(MMIO_limit)342,亦即,指派給已識別匯流排之匯流排位址空間之上限。
在316處,可例如由處理器將PAA 330之剩餘部分334相加至MMIO_base。
在318處,處理器檢查所得匯流排位址是否在指派給已識別匯流排之匯流排位址空間內。換言之,處理器檢查結果是否小於MMIO_limit 342。回應於判定結果並不較小,匯流排位址係錯誤的並處於指派給已識別匯流排之匯流排位址空間之外,且例如可在320處執行機器檢查。回應於判定結果較小,匯流排位址為指派給已識別匯流排之匯流排位址空間之有效匯流排位址,且在322處將請求轉遞至由HRRA 340識別之PBU。更確切而言,在322處,經由已識別匯流排將導向至可經由已識別匯流排而存取之裝置之請求發送至匯流排位址。
在324處,產生包含上述轉譯之結果的TLB項目。TLB項目可包含MMIO_Idx 332、HRRA 340、MMIO_limit 342及MMIO_base 344。TLB項目可包含PAA 330之轉譯。在一些實施例中,發出指令之分割區之分割區ID可被指派給TLB項目。
圖4描繪用於使用TLB處理存取位址空間之位址之指令之實例方法400的示意流程圖。在410處,處理器接收存取位址空間之位址之指令。位址可為例如圖3之MMIO位址或相似位址。
在412處,處理器比較MMIO_Idx(諸如圖3之MMIO_Idx 332)與TLB內所含有之項目之MMIO_Idx值。此可包含檢查TLB是否含有具有與指令之MMIO_Idx相同之MMIO_Idx的項目。在一些實施例中,此亦可包含檢查發出指令之分割區之分割區ID是否與指派給TLB項目之分割區ID相同。在414處,處理器判定MMIO_Idx值匹配。
為了判定由指令之位址定址的匯流排位址,類似於圖3,可例如在416處將位址之剩餘部分(例如334,圖3中之位址)相加至MMIO_base。
在418處,處理器檢查所得匯流排位址是否在指派給已識別匯流排之匯流排位址空間內,相似於圖3之操作318。換言之,檢查結果是否小於MMIO_limit。在結果並不較小的情況下,匯流排位址係錯誤的並處於指派給已識別匯流排之匯流排位址空間之外,且例如可在420處執行機器檢查。在結果較小的情況下,匯流排位址為指派給已識別匯流排之匯流排位址空間之有效匯流排位址,且在422處將請求轉遞至由HRRA識別之PBU。根據一些實施例,可將請求彙總於彙總緩衝區中,且可使用寫入組合一起轉遞已彙總請求。
圖5描繪用於處理存取分割區絕對位址之指令之實例方法599的示意流程圖。在500處,由指令存取分割區絕對位址。在502處,檢 查PAA是否為MMIO位址(MMIOA),亦即,PAA是否在MMIO範圍內。若情況並非如此,則PAA可為映射記憶體之位址的位址。因此,在504處,存取記憶體。若PAA在MMIO範圍內,則當在TLB中查詢提供PAA之轉譯的項目時,在506處檢查是否發生TLB未命中(亦即,在TLB中不存在對應於PAA之項目)。若未發生TLB未命中,亦即,若TLB提供PAA之轉譯,則在508處使用TLB轉譯以PAA之形式提供之MMIOA,以便提供匯流排識別符及匯流排位址。若發生TLB未命中,則在510處使用轉譯表格(TT)轉譯MMIOA,以便提供匯流排識別符及匯流排位址。此外,在512處使用510之結果產生TLB之項目。在514處,將請求分別發送至508或510之轉譯結果。
根據一些實施例,用於MMIO位址之TLB可緩衝MMIO位址至明確實體目標位址加各別實體目標內之位移的轉譯。實體目標可例如為將電腦系統之CPU/記憶體網域連接至PCIe匯流排的PCIe主機橋接器(PHB)。若應使用彙總緩衝區執行寫入組合,或若實際上應將待寫入之資料立即轉遞至PCIe裝置,則用於MMIO位址之TLB可進一步緩衝資訊。
根據一些實施例,處理器判定由於轉譯而產生之匯流排位址是否處於指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之範圍內。根據一些實施例,在由於轉譯而產生之匯流排位址不處於指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之範圍內的情況下,處理器防止基於指令之請求被發送。實施例可具有確保由於轉譯而產生之匯流排位址處於指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之範圍內的有益效果。在此等實施例中,僅當情況如此時,才經由已識別匯流排將導向至裝置之請求發 送至匯流排位址。否則,所使用之MMIO位址可能係錯誤的。因此,防止使用錯誤的MMIO位址,使用錯誤的MMIO位址原本可能會導致將請求發送至錯誤的裝置。
根據一些實施例,轉譯後備緩衝區包含識別指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之上限及下限的識別符。識別上限及下限之識別符用於判定所得匯流排位址是否處於由上限及下限界定之範圍內。實施例可具有提供使用轉譯後備緩衝區以判定由於轉譯而產生之匯流排位址是否處於指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之範圍內的高效方法的有益效果。
根據一些實施例,轉譯表格包含識別指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之上限及下限的識別符。識別上限及下限之識別符用於判定所得匯流排位址是否處於由上限及下限界定之範圍內。實施例可具有提供使用轉譯表格以判定由於轉譯而產生之匯流排位址是否處於指派給由於轉譯而產生之匯流排識別符所識別之匯流排的匯流排位址空間之範圍內的高效方法的有益效果。
根據一些實施例,正由指令存取之位址包含編碼用於識別匯流排識別符之識別符的第一區段。根據一些實施例,用於識別匯流排識別符之識別符包含識別轉譯後備緩衝區中之項目的項目識別符。待識別之各別項目被指派有相等項目識別符。轉譯後備緩衝區命中係由於在轉譯後備緩衝區中被指派有相等項目識別符之項目中發現由待存取之位址提供之項目識別符而產生。實施例可具有高效地提供匯流排識別符之有益效果。根據一些實施例,轉譯後備緩衝區未命中係由於在轉譯後備緩衝區中被指派有相等項目識別符之項目中未發現由待存取之位址提供之項目識別符而 產生。
根據一些實施例,位址包含編碼指派給可經由第一區段所識別之匯流排而存取之裝置之匯流排位址空間之匯流排位址的第二區段。
根據一些實施例,用於識別匯流排識別符之識別符包含識別轉譯表格中提供匯流排識別符之項目的項目識別符。實施例可具有高效地提供匯流排識別符之有益效果。
根據一些實施例,在轉譯後備緩衝區不具有用於新增額外項目之剩餘容量的情況下,在轉譯後備緩衝區中產生項目包含運用待產生之項目替換轉譯後備緩衝區之現有項目。實施例可具有藉由限制轉譯後備緩衝區之容量而可緩衝僅有限數目個先前轉譯結果的有益效果。因此,可確保搜尋緩衝區可能係快速的。
根據一些實施例,轉譯後備緩衝區所包含之項目可各被指派給個別分割區。包含由指令存取之位址的位址空間可為指派給分割區之絕對分割區位址空間,且指令可為由各別分割區發出之指令。實施例可具有提供分割區個別項目之有益效果。因此,例如可針對不同分割區定義不同存取權限。
根據一些實施例,轉譯表格可被指派給分割區,且指令可為由分割區發出之指令。實施例可具有提供分割區個別轉譯表格之有益效果。因此,例如可針對不同分割區定義不同存取權限。
根據一些實施例,處理器可被提供有識別發出指令之分割區的分割區識別符。實施例可具有處理器經啟用以識別哪一分割區正發出指令且因此嘗試存取MMIO位址並經由MMIO位址存取底層匯流排及匯流排位址之有益效果。分割區識別符可例如用以識別轉譯後備緩衝區之項目 及/或指派給各別分割區之轉譯表格。
根據一些實施例,轉譯表格針對MMIO範圍之每一位址提供轉譯,且存取指示符被指派給MMIO範圍之每一位址。存取指示符指示是否允許對MMIO範圍之各別位址之存取。處理器使用存取指示符以檢查是否允許對正由指令存取之位址之存取。在不允許存取的情況下,處理器防止基於指令之請求被發送。實施例可具有以下有益效果:全部MMIO位址對於分割區係可見的,但在使用存取指示符的情況下,存取權限可被定義為限定各別分割區之存取權限。
根據一些實施例,為了當不允許存取時防止基於指令之請求被發送,處理器可中斷指令之處理,且可產生待決中斷或可由處理器忽略指令。此外,可由處理器指示例外狀況。
根據一些實施例,轉譯表格僅針對分割區被允許存取的MMIO範圍之位址提供轉譯。在轉譯表格針對正由指令存取之位址不提供轉譯的情況下,基於指令之請求不被發送。實施例可具有僅針對分割區被允許存取之MMIO位址提供轉譯的有益效果。針對其他MMIO位址不提供轉譯。因此,處理器不能夠基於嘗試存取此類MMIO位址之指令發送導向至裝置之請求。
根據一些實施例,使用用於彙總請求之彙總緩衝區針對MMIO範圍之位址啟用寫入組合。如本文中所使用,寫入組合係指用於允許資料被組合並暫時儲存於彙總緩衝區中以稍後以叢發模式一起釋放之電腦匯流排技術。實施例可具有提供用以執行複數個寫入指令之高效方法的有益效果。
彙總緩衝區可收集遞增位址上之連續儲存區。在一些實施 例中,數目2N個邊界可適用。可能的彙總方法可包含:當儲存操作為非彙總時,可將彙總緩衝區之已寫入位元組發送至由使用TLB而執行之轉譯指示的PBU。當發出現有PCIe指令時,韌體可在執行該指令之前推出緩衝區。
根據一些實施例,對於匯流排識別符及匯流排位址之每一組合,在MMIO範圍中提供兩個位址。提供第一位址以用於對各別匯流排位址執行直接寫入,且提供第二位址以用於對各別匯流排位址執行寫入組合。實施例可具有高效地實施直接寫入模式以及並行寫入組合模式之有益效果。取決於所存取之MMIO位址,可在直接寫入模式與寫入組合模式之間選擇。
舉例而言,可將寫入組合啟用位元相加至MMIO位址範圍以用於控制彙總/排序。舉例而言,可考慮未使用的位元,例如位元1。因此,每一匯流排位址可被視為兩次映射至MMIO位址範圍中,一次係運用寫入組合排序且一次係運用直接寫入排序。
根據一些實施例,匯流排識別符包含用於識別匯流排之以下各者中之一或多者:節點編號、晶片編號、匯流排單元編號,或匯流排編號。實施例可具有提供高效匯流排識別符之有益效果。
根據一些實施例,將MMIO能力位元相加至用於作業系統(OS)之查詢功能以識別系統是否支援本文中所論述之本發明之實施例。若能力位元被設定,則韌體可組態PCIe裝置中之BAR空間以在將熱插拔傳信至OS之前含有適當實體位址(PA)。此外,OS可經組態以實際上使用此等PA。在一些實施例中,TLB對於OS可能係不可見的。
根據一些實施例,電腦系統進一步經組態以執行如本文中 所描述的用於由處理器處理指令之方法之實施例中之任一者。
應理解,可組合本發明之前述實施例中之一或多者,只要組合實施例不互斥即可。比如例如「第一」及「第二」之序號在本文中用以指示被指派有相同名稱之不同元件,但未必確定各別元件之任何次序。
本發明可為處於任何可能技術細節整合層級之系統、方法及/或電腦程式產品。電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以用於致使處理器實行本發明之態樣。
電腦可讀儲存媒體可為有形裝置,其可保留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為例如但不限於電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置,或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片;硬碟;隨機存取記憶體(RAM);唯讀記憶體(ROM);可抹除可程式化唯讀記憶體(EPROM或快閃記憶體);靜態隨機存取記憶體(SRAM);攜帶型光碟唯讀記憶體(CD-ROM);數位多功能光碟(DVD);記憶卡;軟碟;機械編碼裝置,諸如被記錄有指令之凹槽中之打孔卡或凸起結構;及前述各者之任何合適組合。如本文中所使用,電腦可讀儲存媒體本身不應被認作暫時性信號,諸如無線電波或其他自由傳播電磁波、通過波導或其他傳輸媒體傳播之電磁波(例如通過光纜傳遞之光脈衝),或通過電線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理裝置,或經由例如網際網路、區域網路、廣域網路及/或無線網路之網路下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦 及/或邊緣伺服器。每一計算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令,並轉遞電腦可讀程式指令以供儲存於各別計算/處理裝置內之電腦可讀儲存媒體中。
用於實行本發明之操作之電腦可讀程式指令可為組譯器指令、指令集架構(ISA)指令、機器指令、機器相依指令、微碼、韌體指令、狀態設定資料、用於積體電路之組態資料,或以一或多種程式設計語言之任何組合而撰寫之原始程式碼或物件程式碼,該一或多種程式設計語言包括:物件導向式程式設計語言,諸如Smalltalk、C++或其類似者;及程序性程式設計語言,諸如「C」程式設計語言或相似程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行,部分地在使用者電腦上執行,作為單機套裝軟體而執行,部分地在使用者電腦上及部分地在遠端電腦上執行,或完全在遠端電腦或伺服器上執行。在後種情境中,遠端電腦可經由包括區域網路(LAN)或廣域網路(WAN)的任何類型之網路連接至使用者電腦,或可對外部電腦進行連接(例如經由使用網際網路服務提供者之網際網路)。在一些實施例中,包括例如可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路可藉由利用電腦可讀程式指令之狀態資訊以個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例之方法、設備(系統)及電腦程式產品的流程圖繪示及/或方塊圖來描述本發明之態樣。應理解,可由電腦可讀程式指令實施流程圖繪示及/或方塊圖中之每一區塊,以及流程圖繪示及/或方塊圖中之區塊組合。
可將此等電腦可讀程式指令提供至一般用途電腦、特殊用 途電腦或其他可程式化資料處理設備之處理器以產生機器,使得經由該電腦或其他可程式化資料處理設備之處理器執行之指令建立用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作的方式。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等電腦可讀程式指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得被儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之態樣的指令。
亦可將電腦可讀程式指令載入至電腦、其他可程式化資料處理設備或其他裝置上,以致使一系列操作步驟在該電腦、其他可程式化設備或其他裝置上執行以產生電腦實施處理程序,使得在該電腦、其他可程式化設備或其他裝置上執行之指令實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖繪示根據本發明之各種實施例之系統、方法及電腦程式產品之可能實施方案的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、片段或部分,其包含用於實施所指定之邏輯功能的一或多個可執行指令。在一些替代實施中,區塊中所提及之功能可能不按諸圖中所提及之次序發生。舉例而言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可能實質上同時執行,或該等區塊有時可能以相反次序執行。亦應注意,可由執行所指定之功能或動作或實行特殊用途硬體及電腦指令之組合的基於特殊用途硬體之系統實施方塊圖及/或流程圖繪示之每一區塊,以及方塊圖及/或流程圖繪示中之區塊組合。
300:實例方法
310:步驟
312:步驟
314:步驟
316:步驟
318:步驟
320:步驟
322:步驟
324:步驟
330:分割區絕對位址(PAA)
332:MMIO索引(MMIO_Idx)
334:剩餘部分
338:轉譯表格項目
340:匯流排識別符硬體請求路由位址(HRRA)
342:極限位址(MMIO_limit)
344:基底位址(MMIO_base)

Claims (20)

  1. 一種用於由一處理器處理一指令之方法,其中該處理器操作上連接至一或多個匯流排,其中該方法包含:判定該指令用以存取一位址空間之一位址,其中該位址空間映射一記憶體,且其中該位址空間另外包含一記憶體映射輸入或輸出(MMIO)位址範圍;判定正由該指令存取之該位址在該MMIO位址範圍內;基於正被存取之該位址在該MMIO位址範圍內之該判定,使用一轉譯表格產生由正被存取之該位址轉成一匯流排識別符及一匯流排位址之一第一轉譯,其中該匯流排識別符識別該一或多個匯流排中之一者,其中該匯流排位址在指派給該已識別匯流排之一匯流排位址空間之中,並且其中由於該第一轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置;在一轉譯後備緩衝區中產生一項目,其中該已產生項目使用該轉譯表格使能夠進行一轉譯,該轉譯由正被存取之該位址轉成由於該轉譯而產生之該匯流排識別符及該匯流排位址;及基於該指令,經由該已識別匯流排將導向至該裝置之一請求發送至由於該第一轉譯而產生之該匯流排位址。
  2. 如請求1項之方法,其進一步包含:接收一第二指令;判定該第二指令用以存取該位址空間之該位址; 基於正被存取之該位址在該MMIO位址範圍內之該判定,使用該轉譯後備緩衝區產生由正被存取之該位址轉成該匯流排識別符及該匯流排位址之一第二轉譯;及基於該第二指令,經由該已識別匯流排將導向至該裝置之一第二請求發送至由於該第二轉譯而產生之該匯流排位址。
  3. 如請求項2之方法,其中該處理器判定由於該第二轉譯而產生之該匯流排位址是否處於指派給由於該第二轉譯而產生之該匯流排識別符所識別之該匯流排的該匯流排位址空間之範圍內。
  4. 如請求項3之方法,其中該轉譯後備緩衝區含有識別指派給由於該第二轉譯而產生之該匯流排識別符所識別之該匯流排的該匯流排位址空間之一上限及一下限的識別符,以用於判定該匯流排位址是否處於由該上限及該下限界定之範圍內。
  5. 如請求項3之方法,其中該轉譯表格包含識別指派給由於該第一轉譯而產生之該匯流排識別符所識別之該匯流排的該匯流排位址空間之一上限及一下限的識別符,以用於判定該匯流排位址是否處於由該上限及該下限界定之範圍內。
  6. 如請求項2之方法,其中正由該指令存取之該位址包含編碼用於識別該匯流排識別符之一識別符的一第一區段。
  7. 如請求項6之方法,其中用於識別該匯流排識別符之該識別符包含識別該轉譯後備緩衝區中之一項目的一項目識別符,其中待識別之該各別項目被指派有一相等項目識別符,且其中一轉譯後備緩衝區命中係由於在該轉譯後備緩衝區中被指派有一相等項目識別符之一項目中發現由待存取之該位址提供之該項目識別符而產生。
  8. 如請求項7之方法,其中一轉譯後備緩衝區未命中係由於發現由待存取之該位址提供之該項目識別符不匹配該轉譯後備緩衝區中被指派有一相等項目識別符之任何項目而產生。
  9. 如請求項6之方法,其中該位址包含編碼指派給可經由該第一區段所識別之該匯流排而存取之該裝置之該匯流排位址空間之該匯流排位址的一第二區段。
  10. 如請求項6之方法,其中用於識別該匯流排識別符之該識別符包含識別該轉譯表格中提供該匯流排識別符之一項目的一項目識別符。
  11. 如請求項1之方法,其中該轉譯後備緩衝區不具有用於新增額外項目之剩餘容量,且其中在該轉譯後備緩衝區中產生該項目包含運用待產生之該項目替換該轉譯後備緩衝區之一現有項目。
  12. 如請求項1之方法,其中該等匯流排為高速周邊組件互連(PCIe)匯流排,其中該裝置為一PCIe裝置,且其中該匯流排位址為一PCIe匯流排位 址。
  13. 如請求項1之方法,其中該轉譯後備緩衝區所包含之項目各被指派給各別分割區,其中包含由該指令存取之該位址的該位址空間為指派給一分割區之一絕對分割區位址空間,且其中該指令為由該分割區發出之一指令。
  14. 如請求項1之方法,其中該處理器被提供有識別發出該指令之一分割區的一分割區識別符。
  15. 如請求項1之方法,其中該轉譯表格含有用於該MMIO位址範圍之每一位址的轉譯,其中該MMIO位址範圍之每一位址具有指示是否允許對該MMIO位址範圍之該各別位址之一存取的一已指派存取指示符。
  16. 如請求項1之方法,其中該轉譯表格僅含有用於一分割區被允許存取的該MMIO位址範圍之位址的轉譯。
  17. 如請求項1之方法,其中使用用於彙總請求之一彙總緩衝區針對該MMIO位址範圍之該等位址啟用寫入組合。
  18. 如請求項17之方法,其中對於該匯流排識別符及匯流排位址之每一組合,在該MMIO位址範圍中提供兩個位址,其中提供該兩個位址中之一第一位址以用於對各別匯流排位址執行一直接寫入,且提供該兩個位址中 之一第二位址以用於對該各別匯流排位址執行一寫入組合。
  19. 一種用於由一處理器處理一指令之系統,其包含:一或多個處理器,其中該一或多個處理器操作上連接至一或多個匯流排;及一記憶體,其以通信方式耦接至該一或多個處理器,其中該記憶體包含在由該一或多個處理器執行時致使該一或多個處理器執行一方法之指令,該方法包含:判定該指令用以存取一位址空間之一位址,其中該位址空間映射一記憶體,且其中該位址空間另外包含一記憶體映射輸入或輸出(MMIO)位址範圍;判定正由該指令存取之該位址在該MMIO位址範圍內;基於正被存取之該位址在該MMIO位址範圍內之該判定,使用一轉譯表格產生由正被存取之該位址轉成一匯流排識別符和一匯流排位址之一第一轉譯,其中該匯流排識別符識別該匯流排中之一者,其中該匯流排位址在指派給該已識別匯流排之一匯流排位址空間之中,並且其中由於該第一轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置;在一轉譯後備緩衝區中產生一項目,其中該已產生項目將正被存取之該位址與由於該第一轉譯而產生之該匯流排識別符及該匯流排位址相關聯,且其中該項目使用該轉譯表格使能夠進行由正被存取之該位址轉成該匯流排識別符及該匯流排位址的一第二轉譯;及基於該指令,經由該已識別匯流排將導向至該裝置之一請求發送至 由於該第一轉譯而產生之該匯流排位址。
  20. 一種用於由一處理器處理一指令之電腦程式產品,該電腦程式產品包含一電腦可讀儲存媒體,該電腦可讀儲存媒體具有與其一起體現之機器可執行程式指令,其中該電腦可讀儲存媒體本身並非一暫時性信號,該等程式指令可由一電腦執行以執行一方法,該方法包含:判定該指令用以存取一位址空間之一位址,其中該位址空間映射一記憶體,且其中該位址空間另外包含一記憶體映射輸入或輸出(MMIO)位址範圍;判定正由該指令存取之該位址在該MMIO位址範圍內;基於正被存取之該位址在該MMIO位址範圍內之該判定,使用一轉譯表格產生由正被存取之該位址轉成一匯流排識別符和一匯流排位址之一第一轉譯,其中該匯流排識別符識別該匯流排中之一者,其中該匯流排位址在指派給該已識別匯流排之一匯流排位址空間之中,並且其中由於該第一轉譯而產生之該匯流排位址被指派給可經由該已識別匯流排而存取之一裝置;在一轉譯後備緩衝區中產生一項目,其中該已產生項目將正被存取之該位址與由於該第一轉譯而產生之該匯流排識別符及該匯流排位址相關聯,且其中該項目使用該轉譯表格使能夠進行由正被存取之該位址轉成該匯流排識別符及該匯流排位址的一第二轉譯;及基於該指令,經由該已識別匯流排將導向至該裝置之一請求發送至由於該第一轉譯而產生之該匯流排位址。
TW108113974A 2018-06-08 2019-04-22 使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法 TWI750472B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/003,808 US11321240B2 (en) 2018-06-08 2018-06-08 MMIO addressing using a translation lookaside buffer
US16/003,808 2018-06-08

Publications (2)

Publication Number Publication Date
TW202001572A TW202001572A (zh) 2020-01-01
TWI750472B true TWI750472B (zh) 2021-12-21

Family

ID=66589508

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108113974A TWI750472B (zh) 2018-06-08 2019-04-22 使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法

Country Status (3)

Country Link
US (1) US11321240B2 (zh)
TW (1) TWI750472B (zh)
WO (1) WO2019233690A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018877A1 (en) * 2001-07-18 2003-01-23 Ip First Llc Translation lookaside buffer that caches memory type information
US20150254088A1 (en) * 2014-03-08 2015-09-10 Datawise Systems, Inc. Methods and systems for converged networking and storage
US9292462B2 (en) * 2013-05-22 2016-03-22 International Business Machines Corporation Broadcast for a distributed switch network
US9331958B2 (en) * 2012-12-31 2016-05-03 Advanced Micro Devices, Inc. Distributed packet switching in a source routed cluster server

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761448A (en) * 1996-08-30 1998-06-02 Ncr Corporation Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
JP3264319B2 (ja) * 1997-06-30 2002-03-11 日本電気株式会社 バスブリッジ
US5936640A (en) * 1997-09-30 1999-08-10 Compaq Computer Corporation Accelerated graphics port memory mapped status and control registers
US6101568A (en) 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6662242B2 (en) * 2001-04-17 2003-12-09 International Business Machines Corporation Method for PCI IO using PCI device memory mapping in a logically partitioned system
US6574708B2 (en) 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US6775750B2 (en) 2001-06-29 2004-08-10 Texas Instruments Incorporated System protection map
JP4123942B2 (ja) * 2003-01-14 2008-07-23 株式会社日立製作所 情報処理装置
US7386637B2 (en) * 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US7426626B2 (en) * 2005-08-23 2008-09-16 Qualcomm Incorporated TLB lock indicator
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7457900B2 (en) * 2006-06-20 2008-11-25 Intel Corporation Method for discovering and partitioning PCI devices
US8725914B2 (en) * 2006-08-28 2014-05-13 International Business Machines Corporation Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7813366B2 (en) * 2006-12-19 2010-10-12 International Business Machines Corporation Migration of a virtual endpoint from one virtual plane to another
US7689755B2 (en) * 2007-03-07 2010-03-30 Intel Corporation Apparatus and method for sharing devices between multiple execution domains of a hardware platform
JP2010027032A (ja) 2008-06-17 2010-02-04 Nec Electronics Corp Fifo装置及びfifoバッファへのデータ格納方法
US8296547B2 (en) 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US8429323B2 (en) * 2010-05-05 2013-04-23 International Business Machines Corporation Memory mapped input/output bus address range translation
US8650349B2 (en) 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8553683B2 (en) * 2011-07-05 2013-10-08 Plx Technology, Inc. Three dimensional fat tree networks
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US8645594B2 (en) 2012-06-29 2014-02-04 Intel Corporation Driver-assisted base address register mapping
US20140237156A1 (en) * 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment
US20150261688A1 (en) 2014-03-14 2015-09-17 International Business Machines Corporation Extended page table for i/o address translation
US20160092371A1 (en) 2014-09-26 2016-03-31 Intel Corporation Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
DE112015006516T5 (de) * 2015-05-07 2018-01-25 Intel Corporation BUS-Einrichtung-Funktion-Adressraumabbildung
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
US10248468B2 (en) * 2016-01-11 2019-04-02 International Business Machines Corporation Using hypervisor for PCI device memory mapping
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
WO2017190266A1 (zh) * 2016-05-03 2017-11-09 华为技术有限公司 管理转址旁路缓存的方法和多核处理器
US20180173619A1 (en) 2016-12-21 2018-06-21 Sandisk Technologies Llc System and Method for Distributed Logical to Physical Address Mapping
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018877A1 (en) * 2001-07-18 2003-01-23 Ip First Llc Translation lookaside buffer that caches memory type information
US9331958B2 (en) * 2012-12-31 2016-05-03 Advanced Micro Devices, Inc. Distributed packet switching in a source routed cluster server
US9292462B2 (en) * 2013-05-22 2016-03-22 International Business Machines Corporation Broadcast for a distributed switch network
US20150254088A1 (en) * 2014-03-08 2015-09-10 Datawise Systems, Inc. Methods and systems for converged networking and storage

Also Published As

Publication number Publication date
TW202001572A (zh) 2020-01-01
US20190377687A1 (en) 2019-12-12
WO2019233690A1 (en) 2019-12-12
US11321240B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
US9959214B1 (en) Emulated translation unit using a management processor
EP3329378B1 (en) Address caching in switches
US10248468B2 (en) Using hypervisor for PCI device memory mapping
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
US10261917B2 (en) Identifying stale entries in address translation cache
US20130013889A1 (en) Memory management unit using stream identifiers
JP6982618B2 (ja) サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(lpc)メモリの管理方法、アダプタ、プログラム
MX2012014534A (es) Espacios de multiples direcciones por adaptador.
MX2012014859A (es) Taduccion de direcciones de netrada/salida a direcciones de memoria.
CN104685479A (zh) 客户虚拟机内的虚拟输入/输出存储器管理单元
US9875132B2 (en) Input output memory management unit based zero copy virtual machine to virtual machine communication
US9424155B1 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
TWI750472B (zh) 使用轉譯後備緩衝區之記憶體映射輸入或輸出定址之電腦程式產品、系統及其方法
CN115827502A (zh) 一种内存访问系统、方法及介质
TWI699655B (zh) 使用轉譯表進行記憶體映射輸入輸出定址
US20150261679A1 (en) Host bridge with cache hints
US10606759B2 (en) Firmware or hardware component assist for memory mapped I/O
US10866895B2 (en) Steering tag support in virtualized environments
US10684959B2 (en) Shared memory in a virtual environment
JP7002455B2 (ja) メモリアドレス変換管理
GB2568301A (en) Address space access control
US11860797B2 (en) Peripheral device protocols in confidential compute architectures