TWI831564B - 可配置的記憶體系統及其記憶體管理方法 - Google Patents

可配置的記憶體系統及其記憶體管理方法 Download PDF

Info

Publication number
TWI831564B
TWI831564B TW112100426A TW112100426A TWI831564B TW I831564 B TWI831564 B TW I831564B TW 112100426 A TW112100426 A TW 112100426A TW 112100426 A TW112100426 A TW 112100426A TW I831564 B TWI831564 B TW I831564B
Authority
TW
Taiwan
Prior art keywords
memory
overlapping
area
address
physical
Prior art date
Application number
TW112100426A
Other languages
English (en)
Other versions
TW202420100A (zh
Inventor
沈智明
黃正顏
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 晶心科技股份有限公司
Application granted granted Critical
Publication of TWI831564B publication Critical patent/TWI831564B/zh
Publication of TW202420100A publication Critical patent/TW202420100A/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1028Power efficiency
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/1052Security improvement
    • 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

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)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

本發明提供一種包括介面層、重疊應用層及記憶體可重 定位層的可配置的記憶體系統。介面層具有實體記憶體屬性模組及實體記憶體保護模組。介面層對記憶體屬性及記憶體安全性進行管理。重疊應用層耦合到介面層且執行異常處理器程式以檢查是否已出現重疊異常。記憶體可重定位層耦合到介面層及重疊應用層,具有位於第一記憶體空間內的多個常駐服務程式、位於第二記憶體空間內的重疊實體區以及位於第三記憶體空間內的具有應用程式的多個重疊虛擬區。所述重疊虛擬區中的一者的應用程式被確定成由實體記憶體屬性模組執行且由處理器從重疊虛擬區複製到重疊實體區。

Description

可配置的記憶體系統及其記憶體管理方法
本發明關於一種記憶體系統,且是關於一種可配置的記憶體系統及其記憶體管理方法。
近來,具有強大處理器的電子設備對於人們的生活是不可或缺的。為了改善處理器的效率,處理器需要可配置的記憶體。然而,在處理器系統中,為了快速存取少量資料,傳統技術中的處理器使用了隨機存取記憶體中大量的重疊區(ovcrlay region)。隨機存取記憶體的閒置重疊區不僅會導致記憶體空間的浪費,而且會產生非預期的記憶體成本。另一方面,在隨機存取記憶體的重疊區中儲存不必要的程式或程序也會減緩記憶體的存取速度。因此,需要一種具有可配置的記憶體系統的處理器,所述處理器為程式的設計提供靈活性及便利性的性能優勢,且消耗較少的功率及記憶體空間成本。
本發明關於一種處理器及一種可配置的記憶體系統,以 及通過對記憶體位址進行重定位來實現記憶體屬性的靈活配置的方法。
儘管高速靜態隨機存取記憶體(SRAM)的成本相當高,然而在本發明中,通過使用可配置的記憶體方法,僅需要預留SRAM的一個重疊區(overlay region)。當處理器或記憶體系統正在被執行時,根據使用者需求(例如錯誤程式碼的重疊應用(error code overlay application)),能夠將所選擇的重疊區中的程式碼從唯讀記憶體(ROM)的多個重疊區複製到SRAM的對應重疊區。
本發明提供一種包括介面層、重疊應用層及記憶體可重定位層的可配置的記憶體系統。介面層具有實體記憶體屬性(physical memory attribute,PMA)模組及實體記憶體保護(physical memory protection,PMP)模組。介面層對記憶體屬性及記憶體的安全性進行管理。重疊應用層耦合到介面層且執行異常處理器程式以檢查是否已出現重疊(overlay)異常。記憶體可重定位層耦合到介面層及重疊應用層,具有位於第一記憶體空間內的多個常駐服務程式、位於第二記憶體空間內的重疊實體區以及位於第三記憶體空間內的具有應用程式的多個重疊虛擬區。重疊虛擬區中的一者的應用程式被確定成由PMA模組執行且由處理器從重疊虛擬區複製到重疊實體區。
本發明提供一種記憶體管理方法。記憶體管理方法包括:在將第一重疊區切換到第二重疊區時,向介面層提供第一訊號;轉移到重疊應用層;執行重疊應用層的異常處理器程式,以檢查是否 已出現重疊異常;將記憶體可重定位層中的第二重疊區的第一位址轉換成記憶體可重定位層中的第二重疊區的第二位址;由處理器將第二重疊區的應用程式從記憶體可重定位層的多個重疊虛擬區中的一者複製到所述記憶體可重定位層的重疊實體區;以及由PMA模組決定執行所述第二重疊區。介面層包括實體記憶體屬性(PMA)模組及實體記憶體保護(PMP)模組。介面層負責對多個記憶體屬性以及記憶體安全性進行管理。重疊實體區一次從一個重疊虛擬區接收所述應用程式。
根據以上說明,本發明提供一種可配置的記憶體系統及記憶體管理方法,以減少編寫關於記憶體空間配置的程式碼的大量時間成本。
100:記憶體系統
102、402:數據層
104:介面層
106、412:重疊應用層
108、408:記憶體可重定位層
110:處理器
200、300:記憶體可重定位層/記憶體映射層
202:虛擬記憶體位址(VMA)區
204:載入記憶體位址(LMA)區
206:重定位程序/映射程序
208、308:重疊實體區
210、310:發佈的位址空間
212、312:接受的位址空間
306:重定位程序/映射程序/轉換序
400:重疊交換程序架構
404:RAM
406:位址轉換程序/轉換程序
410:PMA模組
AOVL:生效重疊區
OVL:重疊虛擬區
OVL0、OVL3:重疊區
OVL1:第一重疊區/重疊區
OVL2:第二重疊區/重疊區
OVLn:最末重疊區/重疊區
PCOM:常用實體記憶體區
S710、S720、S730、S740、S750、S760:步驟
VCOM:常用虛擬記憶體區
藉由結合附圖閱讀以下詳細說明,會最佳地理解本揭露的樣態。應注意,根據行業中的標準慣例,各種特徵並非按比例繪製。事實上,為使論述清晰起見,可任意增大或減小各種特徵的尺寸。
圖1示出根據本發明實施例的可配置的記憶體系統的方塊圖。
圖2示出根據本發明實施例的記憶體映射層的示意圖。
圖3示出根據本發明實施例的記憶體映射層的另一示意圖。
圖4示出根據本發明實施例的使用PMA、異常處理器及位址轉換硬體的重疊交換程式的示意圖。
圖5示出根據本發明實施例的原始程式以及通過記憶體管理方法實現的程式縮減的示意圖。
圖6示出根據本發明實施例的異常處理器的程式的示意圖。
圖7示出根據本發明實施例的記憶體管理方法的流程圖。
以下揭露內容提供用於實施所提供標的物的特徵的不同實施例或實例。以下闡述值、步驟或類似要素的具體實例以簡化本揭露。當然,該些僅為實例且並非限制性的。設想亦存在其他組件、值、步驟或類似要素。另外,本揭露可能在各種實例中重複使用參考編號及/或字母。此種重複使用是出於簡潔及清晰的目的,而不是自身表示所論述的各種實施例及/或配置之間的關係。
此外,為易於說明,本文中可能使用例如「位於...之下(beneath)」、「位於...下方(below)」、「下部的(lower)」、「位於...上方(above)」、「上部的(upper)」及類似用語等空間相對性用語來闡述圖中所示的一個元件或特徵與另一(其他)元件或特徵的關係。所述空間相對性用語旨在除圖中所繪示的定向外亦囊括裝置在使用或操作中的不同定向。
另外,為易於說明起見,在本文中可使用例如“第一”、“第二”、“第三”、“第四”及類似用語等用語來闡述圖中所示的相似或不同的元件或特徵,且可依據存在的次序或說明的上下文而互換地使用。
圖1示出根據本發明實施例的可配置的記憶體系統的方塊圖。
參照圖1,可配置的記憶體系統包括資料層102、介面層104、重疊應用層106、記憶體可重定位層108及處理器110。
根據本發明的一些實施例,資料層102包括多個重疊區(未示出),其中每一重疊區包含對應的應用程式或程式。在一些實施例中,資料層102可為資料庫、應用程式庫等。
根據本發明的一些實施例,舉例來說,介面層104可為重疊硬體軟體介面(hardware software interface,HSI)、程式設計者的視圖介面(programmers’ view interface)或使用者介面。介面層104包括實體記憶體屬性(physical memory attribute,PMA)模組或實體記憶體保護(physical memory protection,PMP)模組。介面層104能夠對記憶體屬性及記憶體安全性進行管理或控制。在一些實施例中,介面層104負責進行實體記憶體管理。在一些實施例中,介面層104是獨立的硬體及軟體介面。在一些實施例中,介面層104負責對控制暫存器及狀況暫存器的介面協定進行設定,其中控制暫存器及狀況暫存器可由對應的軟體使用。
根據本發明的一些實施例,完整系統的實體記憶體映射包括各種位址範圍,一些位址範圍對應于記憶體區,一些位址範圍對應於記憶體映射控制暫存器,且一些位址範圍對應於位址空間中的閒置空缺、不可進入區(empty hole)。一些記憶體區可能無法支援讀取、寫入或執行;一些記憶體區可能無法支援子字元 (subword)存取或子區塊(subblock)存取;一些記憶體區可能無法支援不可分割之原子最小操作(atomic operations);且一些記憶體區可能無法支援快取記憶體一致性或者可能具有不同的記憶體模型。類似地,記憶體映射控制暫存器在其所支援的存取寬度、對最小操作的支援以及讀取及寫入存取是否相關的副作用的相應變化。在精簡指令集電腦(Reduced instruction set computer,RISC-V)系統中,機器實體位址空間的每一區的上述這些性質被稱為PMA。
記憶體位置可具有與其相關聯的各種屬性且基本上分為以下兩種類型中的任一者:裝置區及記憶體區。儘管記憶體區可為可緩存(cacheable)或不可緩存(non-cacheable)的位置,但裝置區是不可緩存的位置,對這些位置進行存取可能會導致副作用產生。
在一些實施例中,PMA模組存在兩種機制:靜態PMA及可程式化PMA(programmable PMA)。在一些實施例中,對於靜態PMA來說,至少有16個裝置區可通過裝置區配置選項在處理器中進行靜態配置。然而,裝置區的數目並不僅限於此。在一些實施例中,PMA模組是可程式化的,且能夠在執行時間內對記憶體的屬性進行動態調整。在一些實施例中,PMA模組包含被實施為控制及狀態(control and status,CSR)暫存器的可配置數量的PMA項目(PMA entries),以對感興趣的記憶體位置的屬性進行控制。如果這些項目中的設定與靜態裝置區的設定互相衝突,則PMA項 目將具有更高的優先權。在一些實施例中,PMA項目可被靜態地優先處理(statically prioritized)。與存取的任何實體位址(physical address,PA)匹配的編號最低的PMA項目決定了屬性類型。如果沒有PMA項目(entries)與所述位址匹配,則屬性類型由靜態配置的PMA決定。
根據本發明的一些實施例,PMA是硬體的本質屬性且在系統操作期間很少發生改變。PMA不會因執行情況(context)而發生變化。一些記憶體區的PMA在晶片設計階段(例如針對晶片上ROM)是固定的。其他記憶體區的PMA在電路板設計階段(board design time)是固定的,此取決於例如哪些其他晶片連接到晶片外匯流排。晶片外匯流排還可支援在每一供電週期(power cycle)發生改變時(可冷插拔(cold pluggable))或在系統運行時發生動態改變(可熱插拔(hot pluggable))的裝置。一些裝置在執行時間(run time)時為可配置的,以支援不同PMA的不同用途。例如,晶片上暫存RAM(on-chip scratchpad RAM)可能由一個終端應用中的一個核心進行私有緩存(cached privately),或者在另一終端應用中作為共用的非緩存記憶體來進行存取。
在一些實施例中,由於有部分的操作無法在所有的實體記憶體位址處得到支援,因此大多數系統將要求在得知實體位址之後,在後續的執行管線(pipeline)中在硬體中對至少一部分的PMA進行動態檢查,且一些操作需要知道可配置PMA屬性的目前設定狀況。儘管許多系統在虛擬記憶體頁表(virtual memory page tables)中指定一些PMA且使用頁表緩存(translation lookaside buffer,TLB)來通知管線這些性質,但此方法將平台的特定資訊加入到虛擬化層中並可能導致系統錯誤,除非在每一實體記憶體區的每一個頁表項目(page-table entry)中對屬性進行正確的初始化。另外,對於在實體記憶體空間中指定屬性來說,可用的頁大小可能不是最佳的,從而導致位址空間碎裂(address-space fragmentation)及低效率使用TLB項目所付出的昂貴成本。
在一些實施例中,對於RISC-V架構來說,PMA的規範及檢查已被分離到單獨的硬體架構(PMA檢查器)中。在許多情況下,每一實體位址區的屬性在系統設計階段是已知的,且可利用硬連線連接到PMA檢查器中。若屬性是在執行期間時可以被配置的情況下,可提供平台特定的記憶體映射控制暫存器以符合平台上每一區的特性來指定這些屬性(例如,對於可以彈性地劃分為可緩存使用與不可緩存使用的用途)。檢查PMA對實體記憶體的任何存取,包括已經歷了虛擬到實體記憶體轉換(轉譯)的存取。
在一些實施例中,處理器110可捕獲(trap)未通過PMA檢查的實體記憶體存取。在一些實施例中,與虛擬記憶體分頁錯誤異常(page-fault exceptions)不同,精確地捕獲的PMA違規行為可以表現為載入異常、儲存異常或指令擷取異常。
根據本發明的一些實施例,PMA還必須可由軟體進行讀取,以正確地對某些裝置進行存取或者正確地對存取記憶體的其他硬體元件(例如DMA模組)進行配置。在一些實施例中,PMA 與給定的實體平台組織(physical platform’s organization)緊密相關,這也是軟體用來學習平台的PMA值的手段。在一些實施例中,配置字串(configuration string)可對晶片上裝置的PMA進行編碼且可用來描述晶片外匯流排的晶片上控制器,所述晶片外匯流排可被動態地詢問(dynamically interrogated)以找到附屬裝置PMA。
在一些實施例中,記憶體系統100的機器模式程式碼將提取PMA且將資訊呈現給高階但低特權的軟體。
在一些實施例中,可配置的記憶體系統100支援PMA的動態重新配置(dynamic reconfiguration)。記憶體系統100通過將請求傳送給可正確地對記憶體系統100進行重新配置的機器模式驅動器以提供可對設置屬性的介面。舉例來說,在一些記憶體區(或重疊區)上切換高速緩存屬性(例如快取記憶體刷新),以供機器模式使用。
根據本發明的一些實施例,重疊應用層106耦合到介面層。重疊應用層106能夠執行異常處理器程式來檢查是否已出現重疊異常(overlay exception)。在一些實施例中,重疊應用層106能夠實施與重疊捕獲處置器(overlay trap handler)相關的管理API。在一些實施例中,異常處理器程式由軟體程式碼構成。在一些實施例中,異常處理器程式包括檢測軟體,所述檢測軟體用於判斷系統異常(anomaly)是否是由重疊交換(overlay swapping)引起(即,在兩個程式之間進行切換時出現系統異常)。
根據本發明的一些實施例,可配置的記憶體系統使用記 憶體類型屬性(memory type attribute,MTYP)指令(四個位元,[5:2])來對記憶體區的可高速緩存性及冪等性(idempotency)進行定義。在一些實施例中,當PMA的值被設定為“15”(即,閒置空缺、不可進入區)時,MTYP能夠觸發重疊區交換。也就是說,當PMA的值被設定為“15”時,PMA能夠執行重疊交換應用及記憶體位址的屬性設定。詳細來說,在一個重疊區中當前正在執行的程式(或程序)轉移到另一重疊區中即將進行的程式時,PMA的區“15”將被重疊區交換的請求訊號觸發。然後當前執行的程式將跳轉到異常處理器異常處理區,而嵌入在異常處理器異常處理區中的檢測軟體將發佈故障消息並對異常狀態進行檢查,以判斷即將進行的程式是否將從ROM更新到RAM(例如,SRAM或動態隨機存取記憶體(dynamic random access memory,DRAM))。舉例來說,當PMA在指令擷取程序期間進入區“15”時(即,即將進行的程序處於指令記憶體重疊內),異常處理器異常處理區中的檢測軟體將發佈指令存取故障訊息。舉例來說,當PMA在載入指令存取程式期間進入“15”區時(即,即將進行的程式處於資料記憶體重疊內),檢測軟體將檢測到載入存取錯誤(load access fault)。另一方面,當PMA在儲存指令存取程式期間進入“15”區時(即,即將進行的程式處於資料記憶體重疊內),檢測軟體將檢測到儲存存取錯誤(store access fault.)。
根據本發明的一些實施例,記憶體可重定位層(memory relocatable layer)108耦合到介面層104、重疊應用層106及處理 器110。
在一些實施例中,基於用戶端計算系統和/或特定用途的計算要求,處理器110可為中央處理器(central processing unit,CPU)、應用處理器、硬體加速器和/或位於遠端叢集(remote cluster)上。
在一些實施例中,處理器110可為平行處理器,例如在深度神經網路的實際實施中發揮顯著作用的通用圖形處理單元(general-purpose graphic processing unit,GPGPU)。具有單指令多執行緒(single instruction,multiple thread,SIMT)架構的平行圖形處理器被設計成使圖形管線中的平行處理量最大化。在SIMT架構中,多組平行線程設法盡可能頻繁地同步執行程式指令,以提高處理效率。
在一些實施例中,處理器110可為圖形處理器。圖形處理器如管線等處理技術,設法在管線的不同部分平行處理盡可能多的圖形資料。具有SIMT架構的平行圖形處理器被設計成使圖形管線中的平行處理量最大化。在SIMT架構中,多組平行線程設法盡可能頻繁地同步執行程式指令,以提高處理效率。
在一些實施例中,處理器110可為微處理器及相關聯的指令集架構,當由處理器或其他處理邏輯執行時,處理器110實行載入操作、儲存操作、邏輯操作、數學操作或其他功能操作。具體來說,本發明涉及在安全隔離區(secure enclave)中使呼叫(paging)中斷及恢復的指令及邏輯。
在一些實施例中,處理器110可為數位訊號處理器(digital signal processor,DSP)。在一些實施例中,DSP與直接記憶體存取(direct memory access,DMA)裝置及兩個工作記憶體配對,使得處理器對一個記憶體中的資料的執行可與進出另一個記憶體的DMA傳輸互相重疊。更高性能的處理器需要比單一工作記憶體所能提供的頻寬還要多;額外的頻寬可由額外的工作記憶體供應。需要同步機制來確保給定的工作記憶體在任何給定時間僅由處理器或DMA使用,且提供在處理器與DMA裝置之間傳遞的資料流程控制。
在一些實施例中,處理器110可為DMA。DMA負責在無需使用CPU時脈週期的情況下將大量資料從外部記憶體傳送到處理器內部記憶體,且反之亦然。在一些實施例中,DMA是可擴充的,且適合於在不減慢或拖累CPU的執行速度下對巨大的頻寬進行處理。為了防止CPU在DMA期間閒置,使用管線式及交錯的處理,使得在DMA獲取當前區塊的參考資料的同時對較早的可用區塊或資料實行移動補償(motion compensation)。在一些實施例中,如果需要,可在中斷服務常式(interrupt service routine,ISR)下設定若干DMA。
根據本發明的一些實施例,記憶體可重定位層108包括第一記憶體空間、第二記憶體空間及第三記憶體空間。第一記憶體空間包含若干常駐服務程式、通用程式(或一般性程式)或常用程式。第二記憶體空間包含重疊實體區。第三記憶體空間包含多個重 疊虛擬區,其中每一重疊虛擬區具有對應的應用程式(程序)或應用文件,例如媒體程式、視頻程式、音訊程式或影像檔等。在此實施例中,重疊實體區是可重定位的。也就是說,重疊虛擬區的記憶體位址可由重疊管理系統重定位(或映射)到重疊實體區的同一記憶體位址。在一些實施例中,重疊管理系統是硬體系統。舉例來說,重疊虛擬區的記憶體位址被硬連線到重疊實體區的對應的一個記憶體位址。因此,可由處理器110通過這些硬連線將每一重疊虛擬區中的應用程式直接移動或更新到重疊實體區。在一些實施例中,重疊虛擬區的對應的應用程式被決定為由PMA模組執行。在一些實施例中,所選擇的重疊虛擬區的接受的應用程式的內容可由處理器110從重疊虛擬區複製到重疊實體區。
圖2示出根據本發明實施例的記憶體映射層的示意圖。
參照圖2,記憶體可重定位層(或記憶體映射層)200包括虛擬記憶體位址(virtual memory address,VMA)區202及載入記憶體位址(load memory address,LMA)區204。根據本發明的一些實施例,VMA區202包括發佈的位址空間210。根據本發明的一些實施例,LMA區204包括接受的位址空間212。在一些實施例中,VMA區202可使用唯讀記憶體(ROM)。在一些實施例中,LMA區204可使用隨機存取記憶體(RAM)。舉例來說,對LMA區204使用靜態RAM(SRAM)或動態RAM(DRAM)。換句話說,LMA區204由硬體構成,且VMA區202是軟體所看到的記憶體空間。在一些實施例中,發佈的位址空間210包括從第 一重疊區OVL1到最末重疊區OVLn的多個重疊虛擬區OVL以及常用虛擬記憶體區VCOM。在一些實施例中,重疊區OVL1的位址(或位址編號)到最末重疊區OVLn的位址是連續的。在一些實施例中,重疊區OVL1的位址到最末重疊區OVLn的位址是不連續的。在一些實施例中,重疊區OVL1的位址到最末重疊區OVLn的位址是由系統硬體或系統軟體預先確定或調度的。在一些實施例中,重疊區OVL1的位址到最末重疊區OVLn的位址是隨機分佈的。
在一些實施例中,常用虛擬記憶體區VCOM包含記憶體常駐程式、常駐服務程式、通用程式(或一般性程式)、特定應用程式或常用程式。舉例來說,記憶體常駐程式具有在執行之後保留在電腦記憶體中並持續運行的能力。在一些實施例中,常用虛擬記憶體區VCOM的位址是連續的。在一些實施例中,常用虛擬記憶體區VCOM的位址是不連續的。在一些實施例中,常用虛擬記憶體區VCOM的位址是由系統硬體或系統軟體預先確定或調度。在一些實施例中,常用虛擬記憶體區VCOM的位址是隨機分佈的。在一些實施例中,常用虛擬記憶體區VCOM中的內容不被允許使用重疊虛擬區OVL或移動到重疊虛擬區OVL。換句話說,常用虛擬記憶體區VCOM與重疊虛擬區OVL是互斥的。
根據本發明的一些實施例,接受的位址空間212包括常用實體記憶體區PCOM及重疊實體區208。在一些實施例中,接受的位址空間212僅包括一個重疊實體區208。在一些實施例中, 重疊虛擬區OVL的記憶體位址可由重疊管理系統重定位(或映射)206到重疊實體區208的同一記憶體位址。在一些實施例中,重疊管理系統是硬體系統。舉例來說,重疊虛擬區OVL的記憶體位址被硬連線到重疊實體區208的對應記憶體位址。因此,每一重疊虛擬區OVL中的應用程式可通過這些硬連線直接移動或更新到重疊實體區208。在一些實施例中,重疊虛擬區OVL的對應的應用程式被決定由PMA模組執行。在一些實施例中,PMA模組決定重疊虛擬區OVL的哪些應用程式可被移動到重疊實體區208。在一些實施例中,所選擇重疊虛擬區OVL的接受的應用程式(由PMA模組決定)的內容可由處理器、DMA或處理器及DMA二者從重疊虛擬區OVL複製到重疊實體區208。
根據本發明的一些實施例,重疊虛擬區OVL中的每一者的重疊大小(overlay size)等於重疊實體區208的重疊大小。在一些實施例中,每一重疊大小可為4KB或16KB。在一些實施例中,重疊大小並不僅限於此。在一些實施例中,重疊虛擬區OVL中的每一者的重疊大小可與常用虛擬記憶體區VCOM中的每一者的大小及常用實體記憶體區PCOM中的每一者的大小相同。在替代實施例中,重疊虛擬區OVL中的每一者的重疊大小可與常用虛擬記憶體區VCOM中的每一者的大小及常用實體記憶體區PCOM中的每一者的大小不同。在一些實施例中,常用虛擬記憶體區VCOM的內容無法被移動到重疊實體區208,而僅被移動到對應的常用實體記憶體區PCOM。在一些實施例中,在執行重定位(或 映射)程序206之後,常用實體記憶體區PCOM的位址排序可與常用虛擬記憶體區VCOM的位址排序不同。
在一些實施例中,接受的位址空間212的記憶體大小與SRAM的實際硬體連接數目(或硬連線數目)相關。在一些實施例中,接受的位址空間212包括M個記憶體區塊,其中M是正整數且每一記憶體區塊大小等於一個重疊大小。也就是說,接受的位址空間212的記憶體大小是M*(重疊大小)。在一些實施例中,發佈的位址空間210包括M*N個記憶體區塊,其中N是正整數。舉例來說,接受的位址空間212是“16個重疊大小”,且發佈的位址空間210是(16個重疊大小)*8。應注意,常用虛擬記憶體區VCOM與常用實體記憶體區PCOM的記憶體區塊數目是相同的(即,15個重疊大小),且在記憶體映射206之後將不會發生改變。因此,重疊虛擬區OVL的記憶體區塊數目是113(或16*8-15)個重疊大小。
圖3示出根據本發明實施例的記憶體映射的另一示意圖。
參照圖2及圖3,根據本發明的一些實施例,記憶體可重定位層(或記憶體映射層)300包括接受的位址空間312及發佈的位址空間310。根據本發明的一些實施例,接受的位址空間312包括常用實體記憶體區PCOM及一個重疊實體區(overlay physical region)308。在一些實施例中,常用實體記憶體區PCOM的內容與服務常式程式相關。在一些實施例中,重疊實體區308是硬重疊本體(hard overlay identity,HOI)區。在一些實施例中,發佈 的位址空間310是硬重疊仿體(hard overlay clone,HOC)區。也就是說,發佈的位址空間310可由硬體構建。舉例來說,發佈的位址空間310(或重疊虛擬區)由硬體重疊設計來構建。換句話說,根據重疊管理系統預先設定的固定硬連線連接來決定對發佈的位址空間310(或重疊虛擬區)的生效重疊區AOVL的所選擇位址進行轉換306以與重疊實體區308的位址匹配。舉例來說,硬連線連接可使用引腳、硬連線或選擇器,其中記憶體位址轉換可通過硬體參數HOIsel來進行控制。在一些實施例中,生效重疊區AOVL由軟體進行處置或決定。在一些實施例中,發佈的位址空間310可應用於唯讀記憶體(ROM)。在一些實施例中,接受的位址空間312可應用於隨機存取記憶體。舉例來說,接受的位址空間312被應用於SRAM或DRAM。
在一些實施例中,接受的位址空間312由硬體系統構建。發佈的位址空間310是軟體所看到的記憶體空間。舉例來說,接受的位址空間312是硬體的實體記憶體空間。在一些實施例中,由重疊管理系統通過較低的四個位元([3:0])的參數L(即,0000、0001、0010、0011、...、1111)及較高的三個位元([6:4])的參數K(即,000、001、010、011、...、111)來決定接受的位址空間312的記憶體位址及發佈的位址空間310的記憶體位址。在此實施例中,K及L是非負的整數(即,K=3、L=4)。也就是說,記憶體位址可為7個位元的長度(以2進制或二進位表示)。舉例來說,所匹配的重疊實體區308的位址是0000110。較低的四個位元 的參數L可用於表示重疊實體區308的可重定位記憶體位址及常用實體記憶體區PCOM的位址。較高的四個位元的參數K可用於表示由硬體複製的多個發佈的位址空間310。在此種情況下,軟體所看到的發佈的位址空間310的數目是“8”(或23)。應注意,複製的記憶體空間不包括常用實體記憶體區PCOM及重疊實體區308。另外,包括記憶體可重定位層的發佈的位址空間310及接受的位址空間312的可配置記憶體大小是(重疊大小)*2K+L。可配置記憶體大小小於或等於記憶體可重定位層300的可定址記憶體大小。在一些實施例中,包括重疊實體區308及發佈的位址空間310(重疊虛擬區)的重疊空間的最大數目是(2K-1)*2L+1。在此實施例中,舉例來說,K及L是非負數(即,K=3、L=4),因此重疊空間的最大數目是“113”(或113個重疊)。常用實體記憶體區PCOM的數目是(2L-1),即15個重疊。換句話說,常駐服務程式的大小是(2L-1)*(重疊大小)。應注意,實際上由系統使用的重疊空間數目是由重疊應用層通過介面層及使用者介面來進行控制及決定。舉例來說,實際上由系統使用的重疊大小由PMA模組、PMP模組或嵌入式PMP模組根據系統要求來進行靈活地控制。在一些實施例中,發佈的位址空間310(重疊虛擬區)容易被重疊管理系統(硬體系統或軟體系統)進行類比及控制。在一些實施例中,重疊管理系統可在處理器的本地記憶體空間(CPU本地記憶體(CPU local memory))、當地指令及資料記憶體空間(Instruction/Data Local Memory,I/DLM)、系統高性能SRAM空間及系統主記憶體(DRAM) 空間中實施。
在一些實施例中,重疊管理系統能夠通過使用硬體控制而使用硬體參數HOIsel來轉換及選擇記憶體位址。舉例來說,使用硬體控制“OvPindex=((OvVindex[6:4]==3’b0)?OvVindex[3:0]:HOIsel[3:0]);”對硬連線連接進行控制且決定如何將生效重疊區AOVL的內容移動到重疊實體區308(或硬重疊本體(HOI)區)的所選擇位址。舉例來說,使用硬體控制“HOIsel[3:0]”來從接受的位址空間312決定16個區(位址)中的一者且將內容從生效重疊區AOVL更新到重疊實體區308。也就是說,“OvPindex”的內容將被更新。使用硬體控制“(OvVindex[6:4]==3’b0)”判斷發佈的位址空間310(重疊虛擬區)中的一者是否滿足能夠被映射或切換到接受的位址空間312的重疊(記憶體)交換要求(即,對應的參數K是“000”)。如果PMA不允許重疊(記憶體)交換要求,則實體記憶體空間“OvPindex”將不會被更新,而是維持處於虛擬記憶體空間“OvVindex[3:0]”的原始記憶體位址。
在一些實施例中,常用實體記憶體區PCOM包含記憶體常駐程式、常駐服務程式、通用程式(或一般性程式)、特定應用程式或常用程式。舉例來說,記憶體常駐程式具有在執行之後仍保留在電腦記憶體中並持續運行的能力。在一些實施例中,常用實體記憶體區PCOM的位址是連續的。在一些實施例中,常用實體記憶體區PCOM的位址是不連續的。在一些實施例中,常用實體記憶體區PCOM的位址是由系統硬體或系統軟體預先決定或調度。 在一些實施例中,常用實體記憶體區PCOM的位址是隨機分佈的。在一些實施例中,常用實體記憶體區PCOM中的內容不被允許使用或移動到生效重疊區AOVL。換句話說,常用實體記憶體區PCOM與生效重疊區AOVL是互斥的。
根據本發明的一些實施例,接受的位址空間312包括常用實體記憶體區PCOM及重疊實體區308。在一些實施例中,接受的位址空間312僅包括一個重疊實體區308。在一些實施例中,重疊實體區308可由重疊管理系統重定位(或映射)306到重疊實體區308的預定記憶體位址。在一些實施例中,重疊管理系統是硬體系統。舉例來說,生效重疊區(active overlay region)AOVL的記憶體位址被硬連線到重疊實體區308的對應記憶體位址。因此,所選擇的發佈的位址空間310(例如,生效重疊區AOVL)中的應用程式可通過這些硬連線直接移動或更新到重疊實體區308。在一些實施例中,生效重疊區AOVL的對應的應用程式被決定由PMA模組執行。在一些實施例中,PMA模組決定生效重疊區AOVL的哪些應用程式可被移動到重疊實體區308。在一些實施例中,所選擇的生效重疊區AOVL的接受的應用程式的內容(由PMA模組決定)可由處理器、DMA或處理器及DMA二者從生效重疊區AOVL複製到重疊實體區308。
在一些實施例中,根據儲存在位址暫存器中的位址資訊來決定發佈的位址空間310的每一位址。當應用程式正在被執行時,通過重疊重定位(轉換)程序來對位址資訊進行調整。
根據本發明的一些實施例,發佈的位址空間310中的每一者的重疊大小等於重疊實體區308的重疊大小。在一些實施例中,每一重疊大小可為4KB、16KB或5MB。在一些實施例中,重疊大小並不僅限於此。在一些實施例中,發佈的位址空間310中的每一者的重疊大小可與常用實體記憶體區PCOM中的每一者的大小及常用實體記憶體區PCOM中的每一者的大小相同。在替代實施例中,發佈的位址空間310中的每一者的重疊大小可與常用實體記憶體區PCOM中的每一者的大小不同。在一些實施例中,發佈的位址空間310的內容無法被移動到重疊實體區308,而僅被移動到對應的常用實體記憶體區PCOM。在一些實施例中,在重定位(或映射、轉換)程序306之後,常用實體記憶體區PCOM的位址排序可與發佈的位址空間310的位址排序不同。
圖4示出根據本發明實施例的使用PMA、異常處理器及位址轉換硬體的重疊交換程式的示意圖。
參照圖4,根據本發明的一些實施例,重疊交換程序架構400包括資料層402、重疊應用層412及記憶體可重定位層408。
根據本發明的一些實施例,資料層402可包括多個重疊區OVL0、OVL1、OVL2、OVL3。然而,重疊數目並不僅限於此。
根據本發明的一些實施例,重疊應用層412包括異常處理器程式(軟體)。在一些實施例中,異常處理器程式用於在接收到資訊訊號(即,第一訊號)之後檢查是否已出現重疊異常。當重疊區將要被切換時,出現重疊異常。舉例來說,當第一重疊區OVL1 將要切換到第二重疊區OVL2時,資料層將發佈資訊訊號來觸發PMA模組410。一旦PMA模組被觸發,執行程式便轉移到重疊應用層412以執行異常處理器程式。
根據本發明的一些實施例,異常處理器程式實行兩個判定命令“mcause=0x1”及“所有重疊區內的mepc”來檢查異常。判定命令“mcause=0x1”代表“指令存取故障”,用於判斷此種異常是否是由重疊交換引起的系統異常。判定命令“所有重疊區內的mepc”代表“故障指令”,用於檢查欲被切換的重疊區是否具有“mepc”指令。
在此實施例中,“mcause”指令的CSR位址是0x342,且“mepc”指令的CSR位址是0x341。在一些實施例中,“mcause”可以是一個機器原因暫存器(machine cause register)。“mcause”暫存器是XLEN位元讀取-寫入暫存器(XLEN-bit read/write register)。當陷阱(trap)進入M模式時,“mcause”被寫入程式碼以表示引發該陷阱的事件。否則,“mcause”不會由此實施方案執行寫入,但可由軟體寫入。如果陷阱是由中斷引起,則對“mcause”暫存器中的中斷位元進行設定。異常程式碼欄位包含對最末異常進行識別的程式碼。
在一些實施例中,“mepc”可為機器異常程式計數器,其中機器異常程式計數器記錄程式發生異常時的位址。“mepc”是XLEN位元讀取/寫入暫存器。mepc的低位元(mepc[0])始終為零。在不支援16位元指令對齊的指令集擴充的實施方案中,兩個低位 元(mepc[1:0])始終為零。在一些實施例中,“mepc”是寫入任意值、讀取合法值(write any values,reads legal values,WARL)暫存器,其必須能夠保存所有有效的實體位址及虛擬位址。“mepc”不需要能夠保存所有可能的無效位址。在將一些無效位址式樣寫入“mepc”之前,實施方案可將所述一些無效位址式樣轉換成其他無效位址。當陷阱進入M模式時,使用遇到異常的指令的虛擬位址來寫入“mepc”。否則,“mepc”永遠不會由實施方案寫入,但可藉由軟體明確寫入。在一些實施例中,“mepc”可為使用在這些事件發生時,使用遇到陷阱和/或可遮蔽中斷(on-maskable interrupt,NMI)的指令的虛擬位址寫入的暫存器。
根據RISC-V特權架構(privileged architecture),陷阱是由中斷或異常引起的正常指令執行的控制流程變化。中斷由外部來源所發起,而異常作為指令執行的副產品而產生。當觸發陷阱時,處理器停止處理當前的指令流程、禁止使用中斷、保存足夠的狀態供後續恢復且開始執行陷阱處置器。
根據本發明的一些實施例,中斷可為本地的或外部的。外部中斷是全域中斷,由平台級中斷控制器(platform level interrupt controller,PLIC)進行外部仲裁,且所選擇的外部中斷與其餘本地中斷一起進行仲裁以捕獲陷阱。
根據本發明的一些實施例,異常或中斷可為精確的或不精確的。當觸發精確異常(precise exceptions)時,引起精確異常的指令及其在程式順序中的所有後續指令不會影響架構狀態。此 外,引起這些精確異常的事件必須精確地歸因於引起指令(causing instruction)。對於精確異常,“mcause”暫存器的值將大於零。不滿足這些準則的異常可能僅為不精確的且被作為本地中斷(local interrupts)(“mcause”<0)而被傳送。也就是說,標準的RISC-V特權架構異常僅針對精確異常觸發,而本地中斷則針對不精確異常觸發。
根據本發明的一些實施例,對於精確異常,“mepc”是故障指令的PC。對於不精確異常,“mepc”指向被中斷的指令。不論異常的精確性如何,“mtval”均記錄與記憶體操作相關的異常的有效故障資訊。根據本發明的一些實施例,當出現陷阱時,在異常跳轉之前,“mepc”被設定成目前程式計數器。在一些實施例中,當取NMI時,使用下一指令的位址寫入“mepc”暫存器。在一些實施例中,NMI旨在對硬體錯誤狀況進行處理且假設為不可恢復的。其中,NMI為通過NMI輸入訊號觸發。
在一些實施例中,當異常處理器接受重疊交換的請求時,將執行PMA以使得第二重疊區OVL2的內容能夠被移動或更新到RAM 404且關閉重疊區OVL0、OVL1及OVL3。舉例來說,可由CPU或DMA通過位址轉換程序406將第二重疊區OVL2複製並移動到實體DRAM或SRAM。參照上述實施例可容易地理解位址轉換程序406,且此處不再對其予以贅述。在一些實施例中,當CPU任務繁忙時,可由DMA移動重疊區OVL2,否則,由CPU直接移動第二重疊區OVL2。
在一些實施例中,記憶體系統執行“mret”指令並跳轉到RAM 404以執行第二重疊區OVL2的應用程式。
圖5示出根據本發明實施例的原始程式及通過記憶體管理方法以實現減少程式撰寫內容的示意圖。
參照圖5,通過使用根據本發明實施例的記憶體管理方法,不需要每次均設定參數“OverlayLoad”及接受的重疊區的對應位址(例如,gdata2=0x12345678)。換句話說,硬體連接的位址轉換設定會減少許多寫入記憶體空間配置的程式碼的時間。
圖6示出根據本發明實施例的異常處理器的程式的示意圖。
參照圖6,根據本發明的一些實施例,可配置的記憶體系統執行迴路控制隨機交換程式(loop control random swapping program)來對輸出結果進行測試。當記憶體系統跳轉到陷阱所在地時,意指記憶體系統進入異常處理區域。因此,記憶體系統將被PMA模組觸發並顯示相關參數“mcause”及“mepc”的執行結果。舉例來說,當未處置陷阱(Unhandled Trap)顯示mcause=0x1、mepc=0x10000時,則輸入overlay0函數。另舉例來說,當未處置陷阱顯示mcause=0x1、mepc=0x11000時,則輸入被切換到overlay1函數的overlay0函數。再舉例來說,當未處置陷阱顯示mcause=0x1、mepc=0x13000時,則輸入被切換到overlay3函數的overlay1函數。特別注意的是,如果沒有發生切換事件,將不會存在“mcause”及“mepc”的相關訊息。可參照上述實施例容易地理解其他實施例, 且此處不再對其予以贅述。
圖7示出根據本發明實施例的記憶體管理方法的流程圖。
參照圖7,在步驟S710中,在將第一重疊區切換到第二重疊區時,資料層向介面層提供第一訊號。
在步驟S720中,記憶體系統的當前程式轉移到重疊應用層。
在步驟S730中,記憶體系統執行應用層的異常處理器程式,以檢查是否已出現重疊異常。
在步驟S740中,重疊管理系統將重疊虛擬區中的接受的重疊區的第一位址轉換成重疊實體區中的第二重疊區的經轉換位址。
在步驟S750中,處理器(CPU或DMA)將接受的重疊區的應用程式從可重定位層的重疊虛擬空間中的一者複製到可重定位層的重疊實體空間。
在步驟S760中,對PMA模組進行程式設計且PMA模組決定執行接受的重疊區。
根據本發明的一些實施例,本發明提供一種包括介面層、重疊應用層及記憶體可重定位層的可配置的記憶體系統。介面層具有實體記憶體屬性模組或實體記憶體保護模組。介面層對記憶體屬性或記憶體安全性進行管理。重疊應用層耦合到介面層且執行異常處理器程式以檢查是否已出現重疊異常。記憶體可重定位層耦合到介面層及重疊應用層,具有位於第一記憶體空間內的多 個常駐服務程式、位於第二記憶體空間內的重疊實體區以及位於第三記憶體空間內的具有應用程式的多個重疊虛擬區。所述重疊虛擬區中的一者的應用程式被決定成由PMA模組執行且由處理器從重疊虛擬區複製到重疊實體區。
在一些實施例中,對所述多個重疊虛擬區的位址中的每一者進行轉換是根據由重疊管理系統預先設定的固定硬連線連接來決定。
在一些實施例中,所述多個重疊虛擬區的位址中的每一者是根據儲存在位址暫存器中的位址資訊來決定,其中當應用程式正在被執行時,通過重疊重定位程序來對所述位址資訊進行調整。
在一些實施例中,第一記憶體空間的記憶體大小、第二記憶體空間的記憶體大小及第三記憶體空間的記憶體大小是根據重疊管理系統來決定。
在一些實施例中,第一記憶體空間的記憶體大小、第二記憶體空間的記憶體大小及第三記憶體空間的記憶體大小是根據儲存在對應的記憶體大小暫存器中的對應的記憶體大小資訊來決定,其中當所述應用程式正在被執行時,通過重疊重定位程序來對所述記憶體大小資訊進行調整。
在一些實施例中,記憶體可重定位層的可配置記憶體大小是2K+L*(重疊大小),其中所述可配置記憶體大小小於或等於記憶體可重定位層的可定址記憶體大小。
在一些實施例中,包括所述重疊實體區及所述多個重疊虛擬區的重疊空間的最大數目是(2K-1)*2L+1。
在一些實施例中,實際上由所述系統使用的重疊空間數目是由所述重疊應用層通過所述介面層及使用者介面來控制及決定。
在一些實施例中,所述多個常駐服務程式的大小是(2L-1)*(重疊大小)。
在一些實施例中,實際上由所述系統使用的重疊大小是由PMA模組、PMP模組或嵌入式PMP模組根據系統要求進行靈活地控制。
在一些實施例中,記憶體系統是在處理器的本機存放區器空間、SRAM空間及主記憶體空間中實施。
在一些實施例中,重疊實體區適用於指令記憶體或資料記憶體。
在一些實施例中,記憶體系統不受快取記憶體操作機制的影響,且其中記憶體系統獨立地實施或者與快取記憶體一起實施。
在一些實施例中,記憶體系統使用處理器的單個特權模式或處理器的多個特權模式來執行特權指令。
在一些實施例中,介面層使用RSIC-V架構的PMA模組、PMP模組或嵌入式PMP模組的配置及位址暫存器,其中介面層使用RSIC-V架構的陷阱及異常機制(trap and exception mechanism)。
在替代實施例中,介面層使用ARM架構的PMA模組、PMP模組或嵌入式PMP模組的配置及位址暫存器,其中介面層使用ARM架構的陷阱及異常機制。
在一些實施例中,RSIC-V的PMA模組使用記憶體類型屬性(MTYP)來對記憶體區的可緩存性及冪等性進行定義,其中所述MTYP的類型15被定義為閒置空缺,所述閒置空缺被設計成通過預定指令集來觸發重疊交換,所述預定指令集包括指令存取錯誤、載入存取錯誤及儲存存取錯誤。
在一些實施例中,重疊應用層實施與異常處理器程式中的所述重疊異常相關的多個管理應用程式設計介面(API)。
在一些實施例中,當異常處理器程式決定了執行重疊交換時,所述處理器控制記憶體系統的直接記憶體存取(DMA)控制器來對重疊虛擬區中的應用程式進行更新,並將經更新的應用程式移動到重疊實體區中,或者處理器直接對重疊虛擬區中的所述應用程式進行更新,並將經更新的應用程式移動到重疊實體區中。
根據本發明的一些實施例,本發明提供一種記憶體管理方法。所述記憶體管理方法包括:在將第一重疊區切換到第二重疊區時,向介面層提供第一訊號;轉移到重疊應用層;執行重疊應用層的異常處理器程式,以檢查是否已出現重疊異常;將記憶體可重定位層中的第二重疊區的第一位址轉換成第二位址;由處理器將 所述第二重疊區的應用程式從記憶體可重定位層的多個重疊虛擬區中的一者複製到記憶體可重定位層的重疊實體區;以及由PMA模組決定了執行第二重疊區。所述介面層包括實體記憶體屬性(PMA)模組及實體記憶體保護(PMP)模組。所述介面層負責對多個記憶體屬性以及記憶體安全性進行管理。所述重疊實體區一次容置一個重疊大小。所述重疊實體區一次從一個重疊虛擬區接收所述應用程式。
在一些實施例中,將第一位址轉換成第二位址是根據由重疊管理系統預先設定的固定硬連線連接或者根據儲存在位址暫存器中的位址資訊來決定,其中當應用程式正在被執行時,通過重疊重定位程序來對所述位址資訊進行調整。
前述內容概述了若干實施例的特徵,以使熟習此項技術者可更佳地理解本揭露的樣態。熟習此項技術者應理解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎來施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應認識到,此種等效構造並不背離本揭露的精神及範圍,而且他們可在不背離本揭露的精神及範圍的條件下對其作出各種改變、取代及變更。
200:記憶體可重定位層/記憶體映射層
202:虛擬記憶體位址(VMA)區
204:載入記憶體位址(LMA)區
206:重定位程序/映射程序
208:重疊實體區
210:發佈的位址空間
212:接受的位址空間
OVL:重疊虛擬區
OVL1:第一重疊區/重疊區
OVLn:最末重疊區/重疊區
PCOM:常用實體記憶體區
VCOM:常用虛擬記憶體區

Claims (20)

  1. 一種可配置的記憶體系統,包括:介面層,具有實體記憶體屬性模組及實體記憶體保護模組中的其中一者,對多個記憶體屬性及記憶體安全性中的其中一者進行管理;重疊應用層,耦合到所述介面層且執行異常處理器程式以檢查是否已出現重疊異常;以及記憶體可重定位層,耦合到所述介面層及所述重疊應用層,具有位於第一記憶體空間內的多個常駐服務程式、位於第二記憶體空間內的重疊實體區以及位於第三記憶體空間內的具有對應的應用程式的多個重疊虛擬區,其中所述多個重疊虛擬區中的一個重疊虛擬區的所述對應的應用程式被確定成由所述實體記憶體屬性模組執行且由處理器從所述重疊虛擬區複製到所述重疊實體區。
  2. 如請求項1所述的記憶體系統,其中對所述多個重疊虛擬區的位址中的每一者進行轉換是根據由重疊管理系統預先設定的固定硬連線連接來決定。
  3. 如請求項1所述的記憶體系統,其中所述多個重疊虛擬區的位址中的每一者是根據儲存在位址暫存器中的位址資訊來決定,其中當所述應用程式正在被執行時,對所述位址資訊進行調整。
  4. 如請求項1所述的記憶體系統,其中所述第一記憶體 空間的記憶體大小、所述第二記憶體空間的記憶體大小及所述第三記憶體空間的記憶體大小是根據重疊管理系統來決定。
  5. 如請求項1所述的記憶體系統,其中所述第一記憶體空間的記憶體大小、所述第二記憶體空間的記憶體大小及所述第三記憶體空間的記憶體大小是根據儲存在對應的記憶體大小暫存器中的對應的記憶體大小資訊來決定,其中當所述應用程式正在被執行時,對所述記憶體大小資訊進行調整。
  6. 如請求項1所述的所述的記憶體系統,其中所述記憶體可重定位層的可配置記憶體大小是2K+L*(重疊大小),其中K為位址資訊的一部分位元,L為所述位址資訊的其他位元,所述重疊大小與記憶體區塊大小相同,所述可配置記憶體大小小於或等於所述記憶體可重定位層的可定址記憶體大小。
  7. 如請求項1所述的記憶體系統,其中包括所述重疊實體區及所述多個重疊虛擬區的重疊空間的最大數目是(2K-1)*2L+1,其中K為位址資訊的一部分位元,L為所述位址資訊的其他位元,所述重疊大小與記憶體區塊大小相同。
  8. 如請求項7所述的記憶體系統,其中實際上由所述記憶體系統使用的重疊空間數目是由所述重疊應用層通過所述介面層及使用者介面來控制及決定。
  9. 如請求項1所述的記憶體系統,其中所述多個常駐服務程式的大小是(2L-1)*(重疊大小),其中K為位址資訊的一部分位元,L為所述位址資訊的其他位元,所述重疊大小與記憶體區塊大小相同。
  10. 如請求項9所述的記憶體系統,其中實際上由所述記憶體系統使用的所述重疊大小是由所述實體記憶體屬性模組、所述實體記憶體保護模組或嵌入式實體記憶體保護模組根據系統要求進行控制。
  11. 如請求項1所述的記憶體系統,其中重疊管理系統是在所述處理器的本機存放區器空間、靜態隨機存取記憶體空間及主記憶體空間中實施。
  12. 如請求項1所述的記憶體系統,其中所述重疊實體區適用於指令記憶體或資料記憶體。
  13. 如請求項1所述的所述的記憶體系統,其中所述記憶體系統不受快取記憶體操作機制的影響,且其中所述記憶體系統獨立地實施或者與快取記憶體一起實施。
  14. 如請求項1所述的記憶體系統,其中所述記憶體系統使用所述處理器的單個特權模式或所述處理器的多個特權模式來執行特權指令。
  15. 如請求項1所述的記憶體系統,其中所述介面層使用精簡指令集電腦(RISC-V)/高級精簡指令集電腦機器架構的所述實體記憶體屬性模組、所述實體記憶體保護模組或嵌入式實體記憶體保護模組的配置及位址暫存器,其中所述介面層使用所述精簡指令集電腦(RISC-V)/高級精簡指令集電腦機器架構的陷阱及異常機制。
  16. 如請求項15所述的記憶體系統,其中精簡指令集電 腦(RISC-V)的所述實體記憶體屬性模組使用記憶體類型屬性來對記憶體區的可緩存性及冪等性進行定義,其中所述記憶體類型屬性的類型15被定義為閒置空缺,所述閒置空缺被設計成通過預定指令集來觸發重疊交換,所述預定指令集包括指令存取故障、載入存取故障及儲存存取故障。
  17. 如請求項1所述的記憶體系統,其中所述應用層實施與所述異常處理器程式中的所述重疊異常相關的多個管理應用程式設計介面。
  18. 如請求項1所述的記憶體系統,其中當所述異常處理器程式決定執行重疊交換時,所述處理器控制所述記憶體系統的直接記憶體存取控制器來對所述重疊虛擬區中的所述應用程式進行更新並將經更新應用程式移動到所述重疊實體區中,或者所述處理器直接對所述重疊虛擬區中的所述應用程式進行更新並將經更新應用程式移動到所述重疊實體區中。
  19. 一種記憶體管理方法,包括:在將第一重疊區切換到第二重疊區時,向介面層提供第一訊號,其中所述介面層包括實體記憶體屬性模組及實體記憶體保護模組中的其中一者,且所述介面層負責對多個記憶體屬性及記憶體安全性中的其中一者進行管理;轉移到重疊應用層;執行所述重疊應用層的異常處理器程式,以檢查是否已出現重疊異常; 將記憶體可重定位層中的所述第一重疊區的第一位址轉換成所述第二重疊區的第二位址;由處理器將所述第二重疊區的應用程式從所述記憶體可重定位層的多個重疊虛擬區中的一者複製到所述記憶體可重定位層的重疊實體區;以及由所述實體記憶體屬性模組決定執行所述第二重疊區,其中所述重疊實體區一次從所述多個重疊虛擬區中的一個重疊虛擬區接收所述應用程式。
  20. 如請求項19所述的記憶體管理方法,其中將所述第一位址轉換成所述第二位址是根據由重疊管理系統預先設定的固定硬連線連接或者根據儲存在位址暫存器中的位址資訊來決定,其中當所述應用程式正在被執行時,對所述位址資訊進行調整。
TW112100426A 2022-11-09 2023-01-05 可配置的記憶體系統及其記憶體管理方法 TWI831564B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/984,189 2022-11-09
US17/984,189 US12007902B2 (en) 2022-11-09 2022-11-09 Configurable memory system and memory managing method thereof

Publications (2)

Publication Number Publication Date
TWI831564B true TWI831564B (zh) 2024-02-01
TW202420100A TW202420100A (zh) 2024-05-16

Family

ID=90824716

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112100426A TWI831564B (zh) 2022-11-09 2023-01-05 可配置的記憶體系統及其記憶體管理方法

Country Status (4)

Country Link
US (1) US12007902B2 (zh)
JP (1) JP2024069145A (zh)
CN (1) CN118012455A (zh)
TW (1) TWI831564B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237669A (en) * 1991-07-15 1993-08-17 Quarterdeck Office Systems, Inc. Memory management method
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
TW200604795A (en) * 2004-02-04 2006-02-01 Sandisk Corp Dual media storage device
TW201437802A (zh) * 2013-03-18 2014-10-01 Toshiba Kk 資訊處理系統、控制程式、及資訊處理裝置
US20180349268A1 (en) * 2014-10-20 2018-12-06 Cypress Semiconductor Corporation Block mapping systems and methods for storage device
CN110494851A (zh) * 2017-03-14 2019-11-22 珠海市芯动力科技有限公司 可重构并行处理
TW202038245A (zh) * 2019-02-19 2020-10-16 美商美光科技公司 在記憶體裝置上的錯誤校正
CN113590612A (zh) * 2021-07-13 2021-11-02 华中科技大学 Dram-nvm混合索引结构的构建方法及操作方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558576B2 (en) * 2018-01-22 2020-02-11 Western Digital Technologies, Inc. Storage device with rapid overlay access
WO2022027578A1 (en) * 2020-08-07 2022-02-10 Micron Technology, Inc. Memory overlay using host memory buffer

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237669A (en) * 1991-07-15 1993-08-17 Quarterdeck Office Systems, Inc. Memory management method
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
TW200604795A (en) * 2004-02-04 2006-02-01 Sandisk Corp Dual media storage device
TW201437802A (zh) * 2013-03-18 2014-10-01 Toshiba Kk 資訊處理系統、控制程式、及資訊處理裝置
US20180349268A1 (en) * 2014-10-20 2018-12-06 Cypress Semiconductor Corporation Block mapping systems and methods for storage device
CN110494851A (zh) * 2017-03-14 2019-11-22 珠海市芯动力科技有限公司 可重构并行处理
TW202038245A (zh) * 2019-02-19 2020-10-16 美商美光科技公司 在記憶體裝置上的錯誤校正
CN113590612A (zh) * 2021-07-13 2021-11-02 华中科技大学 Dram-nvm混合索引结构的构建方法及操作方法

Also Published As

Publication number Publication date
US20240152463A1 (en) 2024-05-09
JP2024069145A (ja) 2024-05-21
CN118012455A (zh) 2024-05-10
US12007902B2 (en) 2024-06-11

Similar Documents

Publication Publication Date Title
US20230052630A1 (en) Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US7590774B2 (en) Method and system for efficient context swapping
US8683175B2 (en) Seamless interface for multi-threaded core accelerators
US20080235477A1 (en) Coherent data mover
US8560781B2 (en) Technique for using memory attributes
EP1658564B1 (en) Methods and apparatus for providing a software implemented cache memory
US8359453B2 (en) Real address accessing in a coprocessor executing on behalf of an unprivileged process
CN110892381B (zh) 用于在数据处理***中进行快速上下文克隆的方法和装置
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US6907494B2 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
US6904490B2 (en) Method and system of managing virtualized physical memory in a multi-processor system
EP3654178B1 (en) Mechanism for issuing requests to an accelerator from multiple threads
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
KR101639943B1 (ko) 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
EP2686765A1 (en) Page fault handling mechanism
US10248574B2 (en) Input/output translation lookaside buffer prefetching
CN111164581A (zh) 用于修补页的***、方法和装置
US6772326B2 (en) Interruptible and re-entrant cache clean range instruction
EP4315041A1 (en) Processing-in-memory concurrent processing system and method
CN112148634A (zh) 异步高速缓存转储清除引擎
TWI831564B (zh) 可配置的記憶體系統及其記憶體管理方法
JP2001134486A (ja) マイクロプロセッサおよび記憶装置
TW202420100A (zh) 可配置的記憶體系統及其記憶體管理方法
Groote et al. Computer Organization
CN113448880A (zh) 存储装置和存储器中的启用一致多处理的计算