TW202001586A - 組合載入或儲存指示 - Google Patents

組合載入或儲存指示 Download PDF

Info

Publication number
TW202001586A
TW202001586A TW108120950A TW108120950A TW202001586A TW 202001586 A TW202001586 A TW 202001586A TW 108120950 A TW108120950 A TW 108120950A TW 108120950 A TW108120950 A TW 108120950A TW 202001586 A TW202001586 A TW 202001586A
Authority
TW
Taiwan
Prior art keywords
memory access
instructions
memory
access instructions
instruction
Prior art date
Application number
TW108120950A
Other languages
English (en)
Other versions
TWI835807B (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 美商高通公司
Publication of TW202001586A publication Critical patent/TW202001586A/zh
Application granted granted Critical
Publication of TWI835807B publication Critical patent/TWI835807B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Abstract

本文揭示之各種態樣係關於組合當在一電腦處理器中處理指示時自記憶體載入資料或將資料儲存於記憶體中之指示。更特定而言,可在一處理器管線中識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度。回應於判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標,可在該處理器管線內用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。

Description

組合載入或儲存指示
本文所述之各種態樣及實施例大體上係關於電腦處理器,且更特定而言,係關於組合當在電腦處理器中處理指示時自記憶體載入資料或將資料儲存於記憶體中之指示。
在電腦處理中,管線為串聯連接之資料處理元件之集合,其中自該串聯中之一元件之輸出為該串聯中之下一元件之輸入。指示通常為按順序提取並放入管線中。以此方式,多個指示可任何特定時間作為指示串流呈現在管線中,且可同時處理該多個指示。
大體而言,處理器可支援各種載入及儲存指示類型。然而,此等指示中之一些可能不會充分利用處理器與相關聯快取或記憶體之間的介面的頻寬。舉例而言,特定處理器架構可具有以單個32位元字為目標的載入(例如提取)指示及儲存指示,而其他處理器架構可將資料路徑提供給64或128位元的快取。亦即,程式之編譯機器碼可包括自快取或其他記憶體載入單個32位元資料字之指示,而處理器與快取之間的介面(例如匯流排)可為128位元寬,藉此在執行彼等載入指示中之每一者期間未使用96位元寬度。類似地,編譯機器碼可包括將單個32位元資料字儲存於快取或其他記憶體中之指示,在此情況下,類似地在執行彼等儲存指示期間未使用96位元寬度。
因此,基於前述內容,需要可較佳利用至/自快取及記憶體之可用頻寬的機制。
以下內容呈現與本文中所揭示之一或多個態樣及/或實施例相關的簡要發明內容。因而,不應將以下發明內容視為與所有涵蓋之態樣及/或實施例相關的詳盡概述,亦不應認為以下發明內容識別與所有涵蓋之態樣及/或實施例相關的關鍵或至關重要之要素,或描繪與任何特定態樣及/或實施例相關聯之範疇。因此,以下發明內容具有以下唯一目的:以簡化形式呈現和與本文中所揭示的機制相關的一或多個態樣及/或實施例相關的某些概念以先於下文呈現的詳細描述。
根據各種態樣,一種用於組合載入或儲存指示之方法可包含:在一處理器管線中識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度;判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及在該處理器管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
根據各種態樣,一種裝置可包含一處理器,該處理器經組態以在與該處理器相關聯之一管線中識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用可用一匯流排寬度;判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及在與該處理器相關聯之該管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
根據各種態樣,一種裝置可包含用於在一處理器管線中識別多個記憶體存取指示之至少一種模式的構件,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度;用於判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標的構件;及用於在該處理器管線內用一個等效記憶體存取指示替換該多個記憶體存取指示的構件,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
根據各種態樣,一種電腦可讀儲存媒體可具有記錄於其上的電腦可執行指示,其中該電腦可執行指示可經組態以使得處理器執行以下操作:在與該處理器相關聯之一管線中識別多個記憶體存取指示之至少一種模式,該多記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度;判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及在與該處理器相關聯之該管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
熟習此項技術者基於隨附圖式及詳細描述將顯而易見與本文中所揭示之態樣及實施例相關聯的其他目標及優勢。
優先權主張
本專利申請案主張頒予至其受讓人的在2018年6月29日申請之標題為「COMBINING LOAD OR STORE INSTRUCTIONS」之美國非臨時專利申請案第16/024,725號之優先權,且特此明確地以全文引用之方式併入本文中。
在以下描述及相關圖式中揭示各種態樣及實施例以展示與例示性態樣及實施例相關之特定實例。對於熟習此項技術者而言,在閱讀本發明後,替代態樣及實施例將顯而易見,且可在不脫離本發明之範疇或精神的情況下建構及實踐該等替代態樣及實施例。此外,將不詳細地描述或可省略熟知元素以免混淆本文中所揭示之態樣及實施例之相關細節。
本文中使用字語「例示性」來意謂「充當實例、例子或說明」。本文中經描述為「例示性」之任何實施例未必經解釋為比其他實施例更佳或更有利。同樣,術語「實施例」並不要求所有實施例包括所論述特徵、優勢或操作模式。
本文所使用之術語僅描述特定實施例且不應經解釋為限制本文中所揭示之任何實施例。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一(a、an)」及「該(the)」意欲亦包括複數形式。熟習此項技術者將進一步理解,如本文中所使用的術語「包含(comprises、comprising)」及/或「包括(includes、including)」指定所陳述特徵、整體、步驟、操作、元件及/或組件之存在,但並不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或添加。
此外,可就待用例如計算器件之元件執行的動作序列而言描述各種態樣及/或實施例。熟習此項技術者將認識到,本文所述之各種動作可由特定電路(例如特殊應用積體電路(ASIC))、由正用一或多個處理器執行之程式指示、或由兩者之組合執行。此外,可認為本文所述之此等動作序列完全體現於任何形式之非暫時性電腦可讀媒體內,該非暫時性電腦可讀媒體上已儲存有相對應電腦指示集,該電腦指示集在被執行時將使得相關聯之處理器執行本文所述之功能性。因此,本文所述之各種態樣可以數個不同形式體現,其皆已被預期在所主張標的物之範疇內。此外,對於本文所述之態樣中之每一者,任何此類態樣之相對應形式可在本文中描述為例如「邏輯經組態以」及/或經組態以執行所描述動作之其他結構組件。
如本文中所使用,術語「電子器件」、「使用者器件」、「使用者設備(或「UE」)」、「使用者終端機」、「用戶端器件」、「通信器件」、「無線器件」、「無線通信器件」、「手持型器件」、「行動器件」、「行動終端機」、「行動台」、「手持話機」、「存取終端機」、「用戶器件」、「用戶終端機」、「用戶台」、「終端機」及其變體可互換地指任何適合之行動或固定器件。因此,如對一般熟習此項技術者來說將是顯而易見的,上述術語可適當地指代蜂巢式電話、智慧型電話、個人或行動多媒體播放機、個人資料助理、膝上型電腦、個人電腦、平板電腦、智慧書、掌上型電腦、無線電子郵件接收器、具網際網路功能之多媒體蜂巢式電話、無線遊戲控制器及具有可程式化處理器、記憶體及電路的類似器件中之任一者或所有。
本文揭示之各種態樣提供識別某些模式(或習慣用法)的機制,其中不能充分利用處理器與快取及/或記憶體之間的資料路徑中之所有可用頻寬的多個「窄」記憶體存取指示可組合成單個「更寬」記憶體存取指示,該單個「更寬」記憶體存取指示利用可用頻寬的更大部分。舉例而言,許多編譯器可生成具有多個載入指示(載入)或儲存指示(儲存)的代碼,該等代碼以相鄰記憶體或很可能位於同一快取線上的記憶體為目標。大體而言,此等載入/儲存指示通常在自一(1)至八(8)位元組中之任何位置,而現代處理器通常具有至/自相關聯快取及記憶體的至少128位元資料路徑。因而,由於硬體通常無法在同一週期內執行多個記憶體存取,因此可用記憶體頻寬之至少一部分可為未利用或未充分利用的。若可正確地偵測以相鄰記憶體或很可能位於同一快取線上之記憶體為目標之多個指示的模式,則可將該多個指示在管線的早期組合成單個「寬」載入/儲存指示,且從而改良利用率。舉例而言,用單個寬載入/儲存指示替換多個窄載入/儲存指示可在處理器管線之「前端」處留下可填充的孔,從而在處理器管線之「後端」處產生更多通量。在另一實例中,將「較新」載入指示與已經穿過一或多個管線階段之「較舊」載入指示組合可使得該較新載入指示之消費者更早接收適當資料。
因而,在高層級處,本文所述之各種態樣及實施例可經組態以識別、偵測或以其他方式識別某些模式,藉此指示管線包括可適當地組合成一個等效指示之多個載入指示及/或儲存指示,因為該多個載入及/或儲存指示不充分利用至/自快取及記憶體之可用資料路徑,且該多個載入及/或儲存指示以相鄰或相連記憶體或很可能位於同一快取線上之記憶體為目標。特定而言,資料路徑可包含匯流排,且該資料路徑頻寬可為該匯流排在一個操作(或週期)中可輸送的最大位元數。在彼上下文中,以下實例(用組合程式碼說明)展示其中多個「較小」或「窄」載入指示可組合成「較大」或「寬」載入指示的模式。 LDR X0, [SP, #8] ;自SP+8處之記憶體的載入X0 LDR X1, [SP, #16] ;自SP+16處之記憶體的載入X1
上文提供之兩個載入(LDR)指示可經識別為可用頻寬更高效之命令或命令序列替換的模式,因為各LDR指示使用頻寬之64位元(例如64位元之位元寬度),使得可存取記憶體兩次(一次至來自在與堆迭指標(SP)之正偏移為8處的記憶體之載入X0,及第二次至來自在與SP之正偏移為16處的記憶體之載入X1)。在此實例中,假設至/自快取及記憶體之資料路徑至少為128位元,則該兩個LDR指示可用等效(但頻寬更高效的)雙載入指示替換,該指示在一次存取記憶體時使用128位元之頻寬(例如128位元之位元寬度),如下: LDRD X0, X1, [SP, #8];自SP+8處之記憶體的載入X0及X1
因此,用「寬」指示替換多個「窄」指示可使得快取或記憶體之通量提高且減少總體指示計數。因此,本文所述之各種態樣及實施例可包括包括至少一個處理器(例如中央處理單元(CPU))之處理系統,該處理器經組態以識別可替換之記憶體存取指示(例如載入及/或儲存)之某些模式,且用利用更可用頻寬之等效記憶體存取指示替換各此類指示模式。就此而言,每次在指示管線中遇到可替換記憶體存取指示之模式時,可在處理系統中在執行中轉換各模式。因此,實施本文所述之各種態樣及實施例可在實質上不改變現有軟體的情況下完成。亦即,可在不包括根據本文所述之態樣及實施例操作之處理系統之器件上執行的軟體可在包括此處理系統的器件上執行,而不改變該軟體。包括根據本文所述之態樣及實施例操作之處理系統的器件可相對於不根據本文所述之態樣及實施例操作之器件以頻寬更高效之方式藉由在指示管線中執行期間組合至少一些載入及儲存指示來執行載入及儲存操作。
更特定而言,根據各種態樣,圖1說明例示性處理器101,該處理器經組態以識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換。大體而言,處理器101可用於任何適合之計算器件中,包括但不限於桌上型電腦、膝上型電腦、平板電腦、智慧型電話、物聯網(IoT)器件、可穿戴式器件、自動或遠程信息處理器件、機器人器件、或任何其他現有或將來開發之器件,該器件經組態以自記憶體132中讀取資料且將資料寫入該記憶體中。大體而言,處理器101可包括眾多變體,且圖1中所示之處理器101係出於說明性目的且不應被視為限制性的。舉例而言,處理器101可為中央處理單元(CPU)、圖形處理單元(GPU)、數位信號處理器(DSP)或另一適合之處理器。
在各種實施例中,處理器101可安置於積體電路上,該積體電路包括指示執行管線112及儲存指示圖表(SIT) 111。大體而言,處理器101可根據邏輯控制114執行指示執行管線112中之指示。在各種實施例中,指示執行管線112可為具有多個並行管線之超標量設計,包括但不限於並行指示執行管線112a及112b。指示執行管線112a、112b可包括在管道階段經組織之各種非架構型暫存器(或閂鎖) 116及一或多個算術邏輯單元(ALU) 118。指示執行管線112可耦接至具有各種架構暫存器121之實體暫存器檔案(PRF) 120。
指示執行管線112a、112b可自指示快取(I-快取) 122中提取指示,而指示側轉譯後援緩衝器(ITLB) 124可管理記憶體定址及權限。資料可自資料快取(D-快取) 126中存取,而主轉譯後援緩衝器(TLB) 128可管理記憶體定址及權限。在各種實施例中,ITLB 124可為TLB 128之部分的複本。在其他實施例中,可整合ITLB 124及TLB 128。類似地,在各種實施例中,可整合或聯合I-快取122及D-快取126。I-快取122及/或D-快取126中之未命中可導致存取較高層級快取(諸如L2或L3快取)或主(晶片外)記憶體132,該記憶體處於記憶體介面130之控制下。處理器101可包括輸入/輸出介面(I/O IF) 134,其可控制對各種周邊器件136之存取。
如圖1中所示,處理器101亦可包括模式偵測電路(PDC) 140。如本文中所使用,模式偵測電路140可包含任何適合之電路(例如邏輯閘),其經組態以識別經組態以自快取及/或記憶體中讀取或載入資料的多個指示之某些模式,以及經組態以在快取及/或記憶體中寫入或儲存資料的指示模式。舉例而言,與指示執行管線112 (或指示執行管線112a、112b)相關聯的是SIT 111,其可用於維護或以其他方式追蹤與穿過該指示執行管線112a、112b之載入、儲存及/或其他指示相關聯之各種屬性,使得可基於在SIT 111中追蹤之指示屬性識別模式。回應於識別此類指示模式,構成該圖案之多個指示可用等效指示替換,該等效指示相較該等經替換之指示為頻寬更高效的。
此外,在各種實施例中,可以基於兩個或更多個載入/儲存指示之不同大小及/或基礎位址偏移返回資料之方式來組織資料快取126,該載入/儲存指示經組合或以其他方式用等效指示替換,該等效指示相較經替換之指示為頻寬更高效的。舉例而言,在各種實施例中,可組織資料快取126,使得快取線之各種位元具有實體獨立的位元線,其可提供將所選快取線之所有位元讀取至該實體獨立的位元線上之能力而無任何字組/位元組衝突。類似地,此組織可允許將來自位元線之資料寫入記憶體132中而無任何衝突,且允許讀取該快取線之某些位元組/字組,同時寫入同一快取線之重疊或非重疊位元組。在各種實施例中,可進一步組織資料快取126,使得與不同資料字相關聯之位元線實體地交插。舉例而言,快取線之所有資料字之位元0 (bit0)可保持實體地相鄰,其中可使用讀取行多工器將來自各種資料字之實體相鄰的位元線一起多路複用,以讀取資料字中之一所選擇者。以類似方式,可實施兩個此類讀取多工器,以同時讀取與兩個載入指示相關聯之兩個資料字,該載入指示組合成單個更寬載入指示。類似地,可實施寫入行解多工器,以將與儲存指示相關聯之資料寫入所選資料字中之一者的位元線。亦可實施兩個此類寫入行解多工器,以同時寫入與兩個儲存指示相關聯之資料,該等儲存指示組合成更寬儲存指示。當兩個組合操作在快取線之同一位元組上執行時,可能會發生衝突。特定而言,兩個讀取之間的衝突可能導致位元線上的負載過大,且在此情況下僅啟用一個讀取行多工器,且隨後將來自所選讀取行多工器之讀取資料旁通至另一讀取行多工器之輸出。在兩個寫入之間,衝突可能導致高電流狀態,且在此情況下僅啟用一個所選寫入行多工器。
根據各種態樣,圖2說明例示性方法200,該方法可由適合之處理器執行以識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換。在至少一個實施例中,圖1中所示之PDC 140及SIT 111可用於執行圖2中所示的方法200。大體而言,方法200描繪一態樣,在該態樣中,處理器偵測存取相鄰記憶體或很可能在同一快取線上之記憶體的多個指示,且基於多個指示利用小於處理器可使用的所有記憶體頻寬用頻寬更高效之指示替換該等多個指示,如上文提及且在下文更詳細地描述。
在區塊210處,方法200開始於處理器(例如PDC 140)偵測多個管線化指示之模式以使用可用匯流排寬度之第一部分存取記憶體。如下文更詳細地描述,處理器可偵測模式,其中多個管線化指示為連續、非連續或交插載入/儲存指示,該等指示以相鄰(或相連)記憶體及/或很可能在同一快取線上之記憶體為目標。此外,如下文更詳細地描述,處理器可偵測模式,其中多個指示使用具有不同偏移之同一基極暫存器、使用相對於隨著指示執行而增加之程式計數器的位址或使用相對於堆迭指標的位址。
根據各種實施例,在區塊220處,處理器可回應於偵測模式而組合多個管線化指示,其中該多個管線化指示可組合成單個指示以使用比第一部分更寬的可用匯流排寬度之第二部分來存取記憶體。處理器可在將單個指示及可能其他(例如未改變)指示自解碼級傳遞至管線中之執行級之前,用該單個指示替換多個管線化指示之模式。
上述與圖2中所示之方法200相關的各種操作可使用任何具有執行相對應的功能(諸如處理器或處理系統之電路及/或模組)之能力的適當方法來執行。舉例而言,用於偵測管線化指示之模式以使用可用匯流排寬度之第一部分存取記憶體之構件可結合圖1中所示之SIT 111在圖1中所示之模式偵測電路140中實施。此外,用於將管線化指示組合成單個指示以使用比第一部分更寬的可用匯流排寬度之第二部分存取記憶體的構件可在圖1中所示之處理器101之任何適合電路中實施,該電路包括模式偵測電路140、管線112內的電路、控制邏輯114等。
根據各種態樣,處理器(例如圖1中之處理器101)可識別連續(例如背對背)載入(例如自位置載入資料的指示)或儲存(例如將資料儲存至位置的指示)作為以相連正偏移處的記憶體為目標的指示模式。舉例而言: STR W4, [X0] ;至X0+0處之記憶體的32b W4 STR W5, [X0, #4] ;至X0+4處之記憶體的32b W5 STRB W1, [SP, #-5] ;至SP-5處之記憶體的8b W1 STRB W2, [SP, #-4] ;至SP-4處之記憶體的8b W2 LDR D2, [X8, #8] ;自X8+8處之記憶體的64b D2 LDR D7, [X8, #16] ;自X8+16處之記憶體的64b D7
在第一對儲存暫存器(STR)指示中,來自暫存器W4之32位元值經寫入位於儲存於X0暫存器中之值的記憶體位置,且接著來自暫存器W5之32位元值經寫入比儲存於X0暫存器中之值高4位址(32位元)的記憶體位置。在第二對儲存暫存器位元組(STRB)指示中,來自暫存器W1之8位元值經寫入位於比儲存於堆疊指標(SP)中之值低5位址的記憶體位置,且接著來自暫存器W2之8位元值經寫入位於比儲存於SP (亦即,比寫入W1的位置高一位址或8位元)中之值低4位址的記憶體位置。在第三對載入暫存器(LDR)指示中,64位元值自位於比儲存於暫存器X8中之值高8位址的記憶體位置讀取至暫存器D2,且接著64位元值自位於比儲存於該暫存器X8中之值高16位址的記憶體位置讀取至暫存器D7 (亦即,比自第一LDR指示中讀取的位置高8位址或64位元)。根據本文所述之各種態樣操作的處理器可將存取相連正偏移(諸如上文之彼等)處之記憶體的連續指示識別為可用頻寬更高效之指示替換的模式。接著,處理器可用頻寬更高效之指示替換連續指示,如上文參看圖2所描述。舉例而言,第一對STR指示可用等效儲存暫存器雙字(STRD)指示替換,該指示將來自暫存器W4及W5之32位元值寫入位於儲存於X0暫存器中之值的記憶體位置。類似地,第二對STRB指示可用等效儲存暫存器半字(STRH)指示替換,且第三對LDR指示可用等效載入暫存器雙字(LDRD)指示替換。如熟習此項技術者而言將顯而易見,在64位元指示集架構中,整數LDR或等效指示可根據目的地暫存器載入/儲存64位元或32位元(例如當該目的地暫存器為X暫存器時為64位元或當該目的地暫存器為W暫存器時為32位元),而載入暫存器半字(LDRH)指示載入16位元且載入暫存器位元組(LDRB)指示載入8位元。熟習此項技術者將進一步瞭解本文提供之儲存指示及實例通常可遵循此記數法。
根據各種態樣,處理器亦可將不同大小之連續載入/儲存指示識別為以相連正或負偏移處之記憶體為目標的指示模式。舉例而言,以下指示模式說明不同大小之連續儲存指示及連續載入指示以相連正偏移處之記憶體為目標的情況: STR X4, [X0] ;至X0+0處之記憶體的64b X4 STR W5, [X0, #8] ;至X0+8處之記憶體的32b W5 LDRB W1, [X0] ;自X0處之記憶體的8b W1 LDRH W2, [X0, #1];自X0+1處之記憶體的16b W2
在第一對STR指示中,來自暫存器X4之64位元值經寫入至位於儲存於X0暫存器中之值的記憶體位置,且接著自暫存器W5中之32位元值經寫入至比儲存於X0暫存器中之值高8位址(64位元)的記憶體位置。在第二對指示中,第一載入暫存器位元組(LDRB)指示自位於儲存於暫存器X0中之值的記憶體位置將8位元值讀取至暫存器W1中,且接著載入暫存器半字(LDRH)指示自位於比儲存於暫存器X0中之值高之一位址(8位元)的記憶體位置將16位元值讀取至暫存器W2中。根據本文所述之各種態樣操作之處理器可識別此類連續指示為存取相連正偏移處之不同大小之記憶體,該等連續指示可用等效頻寬更高效之指示替換。此外,如上文關於圖1進一步詳細描述,可以處理與組合成等效頻寬有效指示之載入/儲存指示相關聯的不同大小之方式來組織資料快取(例如資料快取126)。
根據各種態樣,處理器亦可將以相連負偏移處之記憶體為目標之連續的載入/儲存指示識別為可用等效頻寬更高效之指示替換的模式。舉例而言: STR W6, [X0, #4] ;至X0+4處之記憶體的32b W6 STR W7, [X0] ;至X0+0處之記憶體的32b W7
在上述STR指示對中,來自暫存器W6之32位元值寫入比儲存於X0暫存器中之值高4位址(32位元)的記憶體位置,且接著來自暫存器W7之32位元值寫入位於儲存於X0暫存器中之值的記憶體位置。以如上文所描述之類似方式,根據本文所述之各種態樣操作之處理器可將此類連續指示識別為存取相連負偏移處之記憶體,該等連續指示可用等效頻寬更高效之指示替換。舉例而言,兩個STR指示可用等效指示替換,該指示將64位元值(包括來自暫存器W7之32位元值及來自暫存器W6之32位元值)寫入自儲存於X0暫存器中之值開始的記憶體位置。
根據各種態樣,處理器亦可將具有基礎更新之連續載入/儲存指示識別為可用等效頻寬更高效之指示替換的模式。如本文中所使用,術語「基礎更新」通常可指更改在指示模式中使用的含有位址之暫存器之值的指示。當考慮指示中之基礎更新時,處理器可識別指示模式以相鄰記憶體為目標。舉例而言,在以下LDR指示對中,由於第一LDR指示中之基礎更新,資料自相鄰記憶體位置中讀取。 LDR X7, [X0], #8 ;自X0處之記憶體的64b;X0=X0+8 LDR X3, [X0] ;自X0處之記憶體的64b
根據本文所述之各種態樣操作之處理器可將具有基礎更新之連續載入/儲存指示(諸如上文彼等)識別為可用頻寬更高效之載入/儲存指示替換的模式,且接著替換該等指示,如上文參看圖2所描述。
根據各種態樣,處理器亦可將連續程式計數器相關(PC相關)載入/儲存指示識別為可用等效頻寬更高效之指示替換的模式。舉例而言,當考慮對程式計數器(PC)進行更改時,處理器可識別載入/儲存指示之模式以相鄰記憶體為目標。舉例而言,在以下指示對中,由於在執行第一指示之後PC發生更改,因此資料自相鄰記憶體位置中讀取: LDR R1,[PC, #20] ;PC=X,自X+20+8處之記憶體的載入 LDR R2, [PC, #20] ;自X+4+20+8處的記憶體的載入
在上述指示對中,自位於比PC之第一值(X)高28個位置(224位元)的記憶體位置讀取32位元值,該PC為高級的4個位置,且接著自位於比該PC之該第一值(X)高32個位置(256位元)的記憶體位置讀取另一32位元值。因此,上述指示對可用以下等效指示替換: LDRD R1, R2, [PC, #20]
根據各種態樣,處理器亦可將以具有負偏移的很可能在同一快取線上的非相連記憶體為目標的連續載入/儲存指示識別為可替換模式。舉例而言: LDR X1, [SP, #32] ;自SP+32處的記憶體的64b X1 LDR X2, [SP, #8] ;自SP+8處的記憶體的64b X2
在上述LDR指示對中,將64位元值自比儲存於堆疊指標中之值更高的記憶體位置32位址讀取至暫存器X1中,且接著將64位元值自比儲存於堆疊指標中之值更高的記憶體位置8位址讀取至暫存器X2中。換言之,第二LDR指示以涵括自SP+8至SP+16之記憶體為目標,且第一LDR指示以涵括自SP+32至SP+40之記憶體為目標,其中兩個LDR指示中之目標記憶體為非相連的。然而,涵括自SP+8至SP+40之整個記憶體範圍為32位址或256位元。因此,假設其中快取線之大小為256位元或更高之組態,則可組合兩個指示以自單個快取線中讀取相關資料。熟習此項技術者將瞭解,情況將通常為此,因為現代處理器具有通常為64個位元組(512位元)或128個位元組(1024位元)的快取線。
根據各種態樣,處理器亦可將以具有正偏移的很可能在同一快取線上的非連記憶體為目標的具有基礎更新的連續載入/儲存指示識別為可替換模式基礎更新。舉例而言: LDR X3, [X10, #16];自X10處之記憶體的64b X3;X10=X10+16 LDR X4, [X10, #8] ;自X10+8處之記憶體的64b X4
在上述LDR指示對中,將64位元值自位於儲存於暫存器X10中之值的記憶體位置讀取至暫存器X3中,且接著儲存於暫存器X10中之值遞增16位址(或128位元)。接著第二LDR指示自比儲存於暫存器X10中之更新值高8位址(64位元)的記憶體位置將64位元值讀取至暫存器X4中。因此,以兩個LDR指示為目標之整個記憶體範圍再次涵括32位址或256位元,藉此假設快取線之大小為256位元或更大,則可組合兩個LDR指示以自單個快取線中讀取相關資料。
根據各種態樣,處理器亦可將多個非連續(例如非背對背)載入/儲存指示識別為可適當地用由於以相鄰記憶體或很可能位於同一快取線上的記憶體為目標的頻寬更高效之模式。特定而言,若不存在將更改以相鄰記憶體或很可能位於同一快取線上的記憶體為目標的多個載入/儲存指示中引用的位址暫存器的介入指示,則可以通常與以相鄰記憶體或很可能位於同一快取線上之記憶體為目標的連續載入/儲存指示類似的方式來組合該等載入/儲存指示並用頻寬更高效之指示來替換。舉例而言,在以下指示集中,資料在非連續LDR指示中自相鄰記憶體位置讀取,且兩個介入指示不更改該非連續LDR指示讀取的記憶體位置。 LDR X1, [X0] ;自X0處之記憶體的64b X1 MOV X2, #42 ;不更改位址暫存器(X0) ADD X3, X2, #20 ;不更改位址暫存器(X0) LDR X4, [X0, #8] ;自X0+8處之記憶體的64b X4
在上述指示集中,第一及第四指示可用以自由X0暫存器中之值指定的位置開始的16個相鄰記憶體位置為目標的單個LDRD指示替換,此係因為第二及第三指示不更改彼等十六個相鄰記憶體位置中之任一者。因此,以上所示之4個指示可用以下等效指示集替換: LDRD X1, X4, [X0] MOV X2, #42 ADD X3, X2, #20
雖然替換LDRD指示(用於初始第一及第四指示)在上述清單中展示為發生在介入MOV及ADD指示之前,但此順序僅係為方便起見且並不意欲為限制該等指示之順序,因為其經傳遞至管線之執行級。特定而言,替換LDRD指示可在介入指示之前、之間或之後傳遞至管線之執行級,因為該LDRD指示基本上獨立於介入MOV及ADD指示。
上文所述之模式可出現在非連續(例如非背對背)變體中。因此,根據本發明操作之處理器可用不更改目標記憶體位置中之任一者之介入指示識別先前所描述之模式中之任一者,且用頻寬更高效之等效指示替換該等識別模式。
舉例而言,在以下指示集中之每一者中,非連續指示自相鄰記憶體位置及/或很可能位於同一快取線上的記憶體讀取資料或將資料儲存於其中,且介入指示更改存取於可替換非連續指示中之記憶體位置中之任一者。 LDR R0, [SP, #8] ;自SP+8處之記憶體的載入R0 MOV R3, #60 ;不更改SP+8或SP+12處之記憶體 LDR R1, [SP, #12] ;自SP+12處之記憶體載入R1 STR R4, [R0] ;至R0+0處之記憶體的32b R4 MOV R2, #21 ;不更改R0或R0+4處之記憶體 TR R5, [R0, #4] ;至R0+4處之記憶體32b R5 STRB R1, [SP, #-5] ;至SP-5處之記憶體8b R1 MOV R2, #42 ;不更改SP-5或SP-4處之記憶體 STRB R2, [SP, #-4] ;至SP-4處之記憶體的8b R2 VLDR D2, [R8, #8] ;自R8+8處之記憶體的64b D2 ADD R1, R2 ;不更改R8+8或R8+16處之記憶體 VLDR D7, [R8, #16] ;自R8+16處之記憶體64b D2
在上述指示集中之每一者中,相鄰位置處及/或很可能位於同一快取線上的記憶體以與介入指示執行類似操作之指示為目標,介入指示不更改記憶體位置。根據本文所述之各種態樣操作之處理器可將非連續指示(諸如上述彼等)識別為可用頻寬更高效之模式替換,且接著在保持介入指示不變時替換如上文所描述之該等指示。
在另一實例中,可將具有基礎更新之非連續載入或儲存識別為可用頻寬更高效之指示替換的模式。舉例而言,在以下指示集中,由於第一指示中之基礎更新,資料自相鄰記憶體位置中讀取。 LDR R7, [R0], #4 ;自R0處之記憶體的32b;R0=R0+4 ADD R1,R2 ;不更改R0或R0+4處的記憶體 LDR R3, [R0] ;自R0處之記憶體的32b
因此,LDR指示可用LDRD指示替換,如下: LDRD R7, R3, [R0], #4 ADD R1, R2
在另一實例中,可將非連續PC相關的載入或儲存指示識別為可用頻寬更高效之指示替換的模式。舉例而言,在以下指示集中,由於在第一LDR指示之後的PC更改,資料自相鄰記憶體位置中讀取: LDR R1, [PC, #20] ;PC=X,自X+20+8處之記憶體載入 MOV R2, #42 ;不更改X+28或X+32處的記憶體 LDR R3, [PC, #16] ;自X+8+16+8處之記憶體的載入
因此,LDR指示可用LDRD指示替換,如下: LDRD R1, R3, [PC, #20] MOV R2, #42
根據各種態樣,適用於非連續變體之特殊模式可為有機會組合同一載入或儲存指示之多個動態例項。舉例而言,在以下指示集中,後向分支可導致以相鄰記憶體為目標之多個載入,藉此可將載入至暫存器X5之兩個動態例項組合成一個: 迴路:LDR X5, [X2], #8 ;自X2處之記憶體的64b X5;X2=X2+8 CMP X5, X0 ;比較X5及X0中之值 B.NE迴路 ;若X5不等於X0,則分支返回載入
在另一實例中,在以下指示集中,第一及最後一個指示為同一載入指示之多個實例,且4個介入指示不更改與兩個載入指示相關聯之基極暫存器,因此可適當地將其組合成單個載入指示: LDRB W3, [X1], #1 SUBS WZR, W2, #0x1 CCMP W2, W3, #0, CS B.EQ {pc}-0x10 ; 0x3ffb7ff6548 LDRB W2, [X0], #1 LDRB W3, [X1], #1
根據各種態樣,根據本發明操作之處理器可進一步識別先前所描述之與一或多個其他模式交插的模式中之任一者,使得兩個或更多個載入/儲存之模式可適合組合成頻寬更高效的等效指示。亦即,在指示組中,多個載入或多個儲存之兩個或更多個模式可適合用頻寬更有效之載入/儲存指示替換。舉例而言,在以下指示集中,資料藉由第一對指示自相鄰記憶體位置讀取,且藉由第二對指示自不同相鄰記憶體位置集讀取。 A:LDR R1, [R0], #4 ;自R0處之記憶體的32b;R0=R0+4 B:LDR R7, [SP] ;自SP處之記憶體的32b C:LDR R4, [R0] ;自R0 (與A成對)處之記憶體的32b D:LDR R5, [SP, #4] ;自SP+4 (與B成對)處之記憶體的32b
根據本文所述之各種態樣操作之處理器可識別可用頻寬更高效之指示替換的交插指示模式。因此,當根據本文所述之各種態樣操作之處理器遇到上述例示性模式時,第一及第三指示可用頻寬更高效之指示(例如第一LDRD指示)替換,且第二及第四指示可用另一頻寬更高效之指示(例如第二LDRD指示)替換。
根據各種態樣,先前所描述之模式中之任一者可藉由處理器檢查在給定指示之寬度之指示集窗口中之指示集來偵測。亦即,根據本文所述之各種態樣操作之處理器可檢查指示集窗口中之多個指示,以偵測存取相鄰記憶體位置且可用頻寬更高效之指示替換之指示模式。舉例而言,在執行期間,可偵測先前所描述之指示模式中之任一者,且用頻寬更高效之(例如「更寬」)指示替換。在一些情況下,模式識別及指示替換可在處理器之管線中執行,諸如圖1中所示之管線112。
根據各種態樣,圖3說明例示性基礎三級處理器管線300,該三級處理器管線可包含在根據本文所述之各種態樣操作之處理器中。例示性處理器管線300之三級為提取級302、解碼級304及執行級306。在用處理器(例如圖1中之處理器101)執行程式期間,指示由提取級302自記憶體及/或快取提取,傳遞至解碼級304且經解碼,並接著傳遞至執行級306且經執行。在說明之實例中,處理器管線300為三個寬度,其中各級可至多含有三個指示。然而,本發明並不限於此且適用於具有其他寬度及/或級之管線(例如記憶體存取及暫存器回寫級,如在精簡指示集電腦(RISC)管線中)。
如圖3中所示,在提取級302中所示之指示組傳遞至解碼級304,其中該等指示經由「x形成(xform)」邏輯310轉換。在轉換之後,指示經管線傳輸至執行級306。「x形成」邏輯310可識別到,載入指示320、322可用頻寬更高效之指示替換,該指示在此情況下為單個LDRD指示330。如圖所示,兩個初始載入指示320、322不傳遞至執行級。替代地,替換兩個初始LRD指示320、322之替換LDRD指示330以斜體文本說明。亦展示未更改之另一指示340。根據各種態樣,在本文中稱為儲存指示圖表(SIT) 308之圖表可能與解碼級304相關聯,且用於維護穿過解碼級304之載入/儲存之某些屬性,以使得「x形成」邏輯310可基於移動通過解碼級304之指示及/或已經穿過解碼級304之舊組中之指示來識別可替換的指示模式。
根據各種態樣,圖4說明可用於追蹤與最新指示相關聯之資訊的例示性儲存指示圖表(SIT) 400。在圖4中,說明SIT 400,當指示達到解碼級304時,該SIT將填充圖3中示出之指示組。關於穿過解碼級304之各指示之資訊可儲存於SIT 400之一列中,該SIT包括在所說明之實例中的4行。特定而言,索引行402可識別相對於當前在SIT 400中之其他指示的指示位置,且類型行404可識別該指示之類型(例如「載入」、「儲存」或「其他」中之任一者,其中「其他」用於既不自記憶體或快取中讀取亦不將任何指示寫入記憶體或快取之任何指示。此外,基極暫存器行406可指示在相對應的載入或儲存指示中用作基礎位址之暫存器,且偏移行408可儲存在執行指示時添加至該基極暫存器的立即值。此外,儘管圖4中所示之SIT 400僅含有關於自解碼級304之指示的資訊,但熟習此項技術者將瞭解,由於SIT 400可含有關於其他合適級之指示的資訊,因此本發明並不限於此。舉例而言,在具有較長管線之處理器中,SIT 400可具有關於已經穿過解碼級304之指示的資訊。
根據各種態樣,根據本文所述之各種態樣操作之處理器可應用邏輯以識別可用單個指示替換的多個指示之一或多個模式,其中該等模式可包括但不限於上文所述之彼等模式。若識別可替換之指示模式,則當該等指示流向執行級306時,處理器可將該等指示轉換成另一等效指示。
根據各種態樣,為偵測如本文所述之模式及合併指示,作用於SIT 400及處理器管線300之模式偵測電路可識別先前所描述之載入或儲存指示之模式,該等指示存取相鄰記憶體或很可能位於同一快取線上的記憶體。特定而言,模式偵測電路可將類型「載入」之各指示之基極暫存器及偏移與類型「載入」之每一其他指示之基極暫存器及偏移進行比較,且判定任何兩個「載入」指示是否具有導致兩個「載入」指示存取相鄰記憶體位置或很可能位於同一快取線上的非相連記憶體的同一基極暫存器及偏移。模式偵測電路亦可判定在比較「載入」指示之間發生的對基極暫存器之更改是否導致兩個指示存取相鄰記憶體或很可能位於同一快取線上的非相連記憶體。當模式偵測電路判定兩個「載入」指示存取相鄰記憶體或很可能位於同一快取線上的記憶體時,則模式偵測電路用等效的頻寬更高效的替換載入指示替換兩個「載入」指示。接著,模式偵測電路將替換指示傳遞至執行級306。模式偵測電路亦可對類型「儲存」之指示執行類似的比較及替換。模式偵測電路亦可判定將用於影響相關記憶體位置之「載入」指示的PC值,且接著使用該經判定之PC值(及包含於指示中之任何偏移)來判定是否兩個「載入」指示存取相鄰記憶體或很可能位於同一快取線上的記憶體。模式偵測電路可對影響PC相關記憶體位置之「儲存」指示執行類似PC值判定,且使用該經判定之PC值來判定是否兩個「儲存」指示存取相鄰記憶體或很可能位於同一快取線上的記憶體。
根據各種態樣,圖5說明根據用於識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換的另一例示性方法,如上文進一步詳細描述。更特定而言,在區塊510處,可識別具有同一類型及使用同一基極暫存器之多個「窄」指示,其中預期如本文所使用之術語「窄」意謂相對應的指示使用小於至/自記憶體及/或快取之資料路徑中之全部可用頻寬(例如在具有至/自記憶體及/或快取之128位元資料路徑之系統中的32位元或64位元載入/儲存)存取記憶體或快取。在各種實施例中,在區塊520處,可判定多個記憶體存取指示(例如多個載入或多個儲存)以相連記憶體或很可能位於同一快取線上的記憶體為目標,其可指示多個記憶體存取指示為潛在可組合的。舉例而言,當指示連續地出現在管線中或當指示非連續地出現在管線中時,多個記憶體存取指示可為可組合的,且任何介入指示不寫入與潛在可組合的指示相同的基極暫存器(亦即,介入指示不會產生記憶體風險)。因而,回應於在區塊530處判定多個指示連續出現在管線中,在區塊550處可用單個「更寬」指示替換多個指示,該「更寬」指示執行與組合指示等效的功能,同時亦利用至/自記憶體及/或快取之資料路徑中更多的可用頻寬。
或者,回應於在區塊530處判定多個指示不連續出現在管線中,仍可回應於在區塊540處判定介入指示不產生記憶體風險而在區塊550處替換多個指示。舉例而言,若介入指示並不包括任何儲存指示,則介入指示不產生記憶體風險,且在區塊550處可適當地用等效更寬指示替換多個載入/儲存指示。然而,若介入指示包括一或多個儲存指示,則可判定介入指示產生記憶體風險,從而使多個載入/儲存指示不組合或以其他方式用等效更寬指示替換,除非滿足某些條件。更特定而言,若介入儲存指示使用與經組合之多個載入/儲存指示相同的基極暫存器,且在介入儲存指示與經組合之載入/儲存指示之間沒有重疊位元組,則不存在記憶體風險,且在區塊550處多個載入/儲存指示可適當地用等效更寬指示替換。否則,當介入指示包括使用不同於經組合之多個載入/儲存指示的基極暫存器的一或多個儲存指示或在介入儲存指示與經組合之載入/儲存指示之間存在一或多個重疊位元組時,可存在潛在的記憶體風險,且指示無法組合,在此情況下,方法500可直接進行至區塊570。
在各種實施例中,當判定多個窄載入/儲存指示可組合成等效更寬載入/儲存指示時,服務經組合之指示的記憶體存取可在單個週期而非多個週期內完成,如若指示尚未經組合另外將所需的。此外,將多個窄載入/儲存指示組合成一個等效寬指示可在處理器管線之後端留下孔。因此,在各種實施例中,在區塊560處,處理器管線中之一或多個早期階段可填充孔,其可有利地改良後端處的處理器通量。在各種實施例中,在區塊570處,可更新儲存指示圖表以追蹤最新的指示,包括經組合成更寬指示及未經組合成頻寬更高效之指示的任何指示,以便可對所有穿過管線之指示進行評估,以用於用可穿過管線之一或多個後續指示進行潛在組合/替換。
圖6說明可有利地實施本文所述之各種態樣及實施例的例示性計算器件601。特定而言,如圖6中所示,計算器件601可整合處理器101,該處理器經組態以偵測多個「窄」指示之模式,該等指示使用小於所有可用頻寬(例如匯流排寬度)存取記憶體,且用使用可用頻寬之較大部分的「更寬」指示替換該等模式。圖1至圖5中描繪之所有裝置及方法可包括於計算器件601中或藉由該計算器件執行。亦可經由網路630將計算器件601連接至其他計算器件。大體而言,網路630可為電信網路及/或廣域網路(WAN)。在一特定態樣中,網路630為網際網路。大體而言,計算器件601可為任何適合之器件,其包括經組態以實施本文所述之該等技術以用利用該可用頻寬之較大部分的等效指示替換在至及自一或多個快取及/或記憶體之路徑中不充分利用該可用頻寬的某些記憶體存取指示(例如載入及/或儲存指示)的處理器,(例如桌上型電腦、伺服器、膝上型電腦、平板電腦、智慧型電話、物聯網(IoT)器件、可穿戴式器件、自動或遠程信息處理器件、機器人器件或任何其他現有或將來開發器件,該器件經組態以自記憶體中讀取資料且將資料寫入該記憶體中)。
計算器件601通常包括經由匯流排620連接至記憶體608的處理器101、網路介面器件618、儲存器609、輸入器件622及輸出器件624。計算器件601通常使用適合之作業系統(圖6中未明確展示)操作。可使用支援本文中所揭示之功能的任何作業系統。處理器101經包括為表示單個處理器、多個處理器、具有多個處理核心之單個處理器及類似者。網路介面器件618可為任何類型之網路通信器件,其允許計算器件601經由網路630而與其他計算器件通信。
在各種實施例中,儲存器609可為持久的儲存器件。儘管圖6中示出之儲存器609為單個單元,但熟習此項技術者將瞭解,該儲存器609可為固定及/或可拆卸儲存器件之組合,諸如固定光碟機、固態機、儲存區域網路(SAN)儲存器、網路附接儲存器(NAS)、可拆卸記憶卡、光學儲存器等。記憶體608及儲存器609可為涵括多個一級及/或二級儲存器件之一個虛擬位址空間的部分。
在各種實施例中,輸入器件622可為任何適合之可操作器件,以使使用者能將輸入提供至計算器件601。舉例而言,輸入器件622可為鍵盤及/或滑鼠。輸出器件624可為任何適合之可操作器件,以將輸出提供至計算器件601之使用者。舉例而言,輸出器件624可為任何習知顯示螢幕或揚聲器組。儘管與輸入器件622單獨地展示,但熟習此項技術者將瞭解,可適當地組合輸出器件624及輸入器件622。舉例而言,具有整合觸控式螢幕之顯示螢幕可為經組合之輸入器件622及輸出器件624。
熟習此項技術者將瞭解,可使用多種不同技藝與技術中之任一者來表示資訊及信號。舉例而言,可用電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子,或其任何組合來表示在貫穿以上描述中可能引用之資料、指示、命令、資訊、信號、位元、符號及晶片。
此外,熟習此項技術者將瞭解,結合本文所揭示之態樣所描述的各種說明性邏輯區塊、模組、電路及演算法步驟可實施為電子硬體、電腦軟體或兩者之組合。為了清楚地說明硬體與軟體之此可互換性,各種說明性組件、區塊、模組、電路及步驟已在上文大體按其功能性加以描述。此功能性實施為硬體抑或軟體取決於特定應用及強加於整個系統之設計約束。熟習此項技術者可針對各特定應用而以不同方式實施所描述功能性,但此類實施決策不應被解釋為脫離本文所述之各種態樣及實施例的範疇。
可藉由通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式閘陣列(FPGA)或經設計以執行本文所述之功能之其他可程式邏輯器件、離散閘或電晶體邏輯、離散硬體組件或其任何組合來實施或執行結合本文中所揭示之態樣描述之各種說明性邏輯區塊、模組及電路。通用處理器可為微處理器,但在替代例中,該處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可實施為計算器件之組合(例如DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器,或其他此類組態)。
結合本文中所揭示之態樣而描述的方法、序列及/或演算法可直接在硬體中、在由處理器執行之軟體模組中或在兩者之組合中直接體現。軟體模組可駐留於RAM、快閃記憶體、ROM、EPROM、EEPROM、暫存器、硬碟、可卸除式磁碟、CD-ROM,或此項技術中已知的任何其他形式之非暫時性電腦可讀媒體中。例示性非暫時性電腦可讀媒體可耦接至處理器,使得處理器可自非暫時性電腦可讀媒體讀取資訊,且將資訊寫入至非暫時性電腦可讀媒體。在替代例中,非暫時性電腦可讀媒體可與處理器成一體式。處理器及非暫時性電腦可讀媒體可駐留於ASIC中。ASIC可駐留於IoT器件中。在替代例中,處理器及非暫時性電腦可讀媒體可為使用者終端中之離散組件。
在一或多個例示性態樣中,本文中所述之功能可在硬體、軟體、韌體或其任何組合中予以實施。若在軟體中實施,則可將該等功能作為一或多個指示或程式碼而儲存於電腦可讀媒體上或經由電腦可讀媒體傳輸。電腦可讀媒體可包括儲存媒體及/或通信媒體,其包括可促進電腦程式自一處傳送至另一處的任何非暫時性媒體。儲存媒體可為可由電腦存取之任何可用媒體。藉助於實例而非限制,此類電腦可讀媒體可包含RAM、ROM、EEPROM、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存器件,或可用以攜載或儲存呈指示或資料結構之形式的所要程式碼且可用電腦存取的任何其他媒體。此外,任何連接被恰當地稱為電腦可讀媒體。舉例而言,若使用同軸電纜、光纖電纜、雙絞線、DSL或諸如紅外線、無線電及微波之無線技術自網站、伺服器或其他遠端源傳輸軟體,則同軸電纜、光纖電纜、雙絞線、DSL或諸如紅外線、無線電及微波之無線技術包括於媒體之定義中。可在本文中互換使用的術語「磁碟」與「光碟」包括CD、雷射光碟、光學光碟、DVD、軟碟及藍光光碟,此等各者通常以磁性方式及/或藉由雷射以光學方式再現資料。以上各者之組合亦應包括於電腦可讀媒體之範疇內。
儘管前述揭示內容展示說明性態樣及實施例,但熟習此項技術者將瞭解,可在不脫離由所附申請專利範圍限定的本發明之範疇之情況下在本文中進行各種改變及修改。此外,根據本文所述之各種說明性態樣及實施例,熟習此項技術者應瞭解,在上文所描述及/或隨附的任何方法請求項中敍述的任何方法中之功能、步驟及/或動作不必以任何特定次序執行。此外,就上文描述或所附申請專利範圍中以單數形式敍述任何元件來說,熟習此項技術者應瞭解,除非明確地陳述對於單數形式之限制,否則單數形式亦涵蓋複數。
101‧‧‧處理器 111‧‧‧儲存指示圖表 112‧‧‧指示執行管線 112a‧‧‧指示執行管線 112b‧‧‧指示執行管線 114‧‧‧控制邏輯 116‧‧‧非架構型暫存器(或閂鎖) 118‧‧‧算術邏輯單元 120‧‧‧實體暫存器檔案 121‧‧‧架構暫存器 122‧‧‧指示快取 124‧‧‧指示側轉譯後援緩衝器 126‧‧‧資料快取 128‧‧‧主轉譯後援緩衝器 130‧‧‧記憶體介面 132‧‧‧記憶體 134‧‧‧輸入/輸出介面 136‧‧‧周邊器件 140‧‧‧模式偵測電路 200‧‧‧方法 210‧‧‧區塊 220‧‧‧區塊 300‧‧‧三級處理器管線 302‧‧‧提取級 304‧‧‧解碼級 306‧‧‧執行級 308‧‧‧儲存指示圖表 310‧‧‧「x形成」邏輯 320‧‧‧載入指示 322‧‧‧載入指示 330‧‧‧LDRD指示 340‧‧‧指示 400‧‧‧儲存指示圖表 402‧‧‧索引行 404‧‧‧類型行 406‧‧‧基極暫存器行 408‧‧‧偏移行 500‧‧‧方法 510‧‧‧區塊 520‧‧‧區塊 530‧‧‧區塊 540‧‧‧區塊 550‧‧‧區塊 560‧‧‧區塊 570‧‧‧區塊 601‧‧‧計算器件 608‧‧‧記憶體 609‧‧‧儲存器 618‧‧‧網路介面器件 620‧‧‧匯流排 622‧‧‧輸入器件 624‧‧‧輸出器件 630‧‧‧網路 W1‧‧‧暫存器 W2‧‧‧暫存器 W4‧‧‧暫存器 W5‧‧‧暫存器 W6‧‧‧暫存器 W7‧‧‧暫存器 X0‧‧‧暫存器 X1‧‧‧暫存器 X2‧‧‧暫存器 X3‧‧‧暫存器 X4‧‧‧暫存器 X5‧‧‧暫存器 X8‧‧‧暫存器 X10‧‧‧暫存器 D2‧‧‧暫存器 D7‧‧‧暫存器
將易於獲得本文所述之各種態樣及實施例以及其許多伴隨優點之較完整瞭解,此係因為會在結合隨附圖式考慮時藉由參考以下詳細描述來更佳地理解該等態樣及實施例以及其伴隨優點,該等隨附圖式僅僅為了說明而非限制來呈現,且在隨附圖式中:
圖1說明根據各種態樣經組態以識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換的例示性處理器。
圖2說明根據各種態樣用於識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換的例示性方法。
圖3說明根據各種態樣的例示性處理器管線。
圖4說明根據各種態樣可用於追蹤與最新指示相關聯之資訊的例示性儲存指示圖表(SIT)。
圖5說明根據各種態樣用於識別多個記憶體存取指示之某些模式並用頻寬更高效之記憶體存取指示對其進行替換的另一例示性方法。
圖6說明可有利地實施本文所述之各種態樣及實施例的例示性計算器件。
500‧‧‧方法
510‧‧‧區塊
520‧‧‧區塊
530‧‧‧區塊
540‧‧‧區塊
550‧‧‧區塊
560‧‧‧區塊
570‧‧‧區塊

Claims (40)

  1. 一種用於組合載入或儲存指示之方法,其包含: 在一處理器管線中,識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度; 判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及 在該處理器管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
  2. 如請求項1之方法,其中回應於判定該多個記憶體存取指示連續地出現在該處理器管線中且以相連偏移處的該相鄰記憶體為目標,用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  3. 如請求項2之方法,其中該多個記憶體存取指示以相連正偏移處的該相鄰記憶體為目標。
  4. 如請求項2之方法,其中該多個記憶體存取指示以相連負偏移處的該相鄰記憶體為目標。
  5. 如請求項1之方法,其中該多個記憶體存取指示利用該可用匯流排寬度之不同部分。
  6. 如請求項1之方法,其進一步包含回應於該多個記憶體存取指示包括改變儲存於該共用基極暫存器中之一值的一第一記憶體存取指示及存取與儲存於該共用基極暫存器中之該改變值相鄰的一位置處的記憶體的一第二記憶體存取而判定該多個記憶體存取指示以該相鄰記憶體為目標。
  7. 如請求項1之方法,其進一步包含判定該多個記憶體存取指示非連續地出現在該處理器管線中,其中回應於判定在該等非連續記憶體存取指示之間沒有出現介入儲存指示而用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  8. 如請求項1之方法,其進一步包含判定該多個記憶體存取指示非連續地出現在該處理器管線中,其中回應於判定在該非連續記憶體存取指示之間出現的一或多個介入儲存指示使用該多個記憶體存取指示中引用的該共用基極暫存器,且判定在該非連續記憶體存取指示與該一或多個介入儲存指示之間沒有重疊位元組而用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  9. 如請求項1之方法,其中該多個記憶體存取指示包含該同一記憶體存取指示之多個動態例項。
  10. 如請求項1之方法,其中該多個記憶體存取指示包含多個載入指示或多個儲存指示。
  11. 一種裝置,其包含: 一處理器,其經組態以:在與該處理器相關聯之一管線中識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度;判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及在與該處理器相關聯之該管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
  12. 如請求項11之裝置,其中回應於該多個記憶體存取指示連續地出現在該管線中且以相連偏移處的該相鄰記憶體為目標,用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  13. 如請求項12之裝置,其中該多個記憶體存取指示以相連正向偏移處的該相鄰記憶體為目標。
  14. 如請求項12之裝置,其中該多個記憶體存取指示以相連負偏移處的該相鄰記憶體為目標。
  15. 如請求項11之裝置,其中該多個記憶體存取指示利用該可用匯流排寬度之不同部分。
  16. 如請求項11之裝置,其中該處理器進一步經組態以回應於該多個記憶體存取指示包括改變儲存於該共用基極暫存器中之一值的一第一記憶體存取指示及存取與儲存於該共用基極暫存器中之該改變值相鄰之一位置處的記憶體的一第二記憶體存取而判定該多個記憶體存取指示以該相鄰記憶體為目標。
  17. 如請求項11之裝置,其中該處理器進一步經組態以判定該多個記憶體存取指示非連續地出現在該處理器管線中,且若在該非連續記憶體存取指示之間沒有出現介入儲存指示,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  18. 如請求項11之裝置,其中該處理器進一步經組態以判定該多個記憶體存取指示非連續地出現在該處理器管線中,及若在該非連續記憶體存取指示之間出現的一或多個介入儲存指示使用該多個記憶體存取指示中引用的該共用基極暫存器,且在該等非連續記憶體存取指示與該一或多個介入儲存指示之間沒有重疊位元組,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  19. 如請求項11之裝置,其中該多個記憶體存取指示包含該同一記憶體存取指示之多個動態例項。
  20. 如請求項11之裝置,其中該多個記憶體存取指示包含多個載入指示或多個儲存指示。
  21. 一種裝置,其包含: 用於在一處理器管線中識別多個記憶體存取指示之至少一種模式的構件,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度; 用於判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標的構件;及 用於在該處理器管線內用一個等效記憶體存取指示替換該多個記憶體存取指示的構件,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
  22. 如請求項21之裝置,其中回應於該多個記憶體存取指示連續地出現在該處理器管線中且以相連偏移處之該相鄰記憶體為目標,用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  23. 如請求項22之裝置,其中該多個記憶體存取指示以相連正向偏移處的該相鄰記憶體為目標。
  24. 如請求項22之裝置,其中該多個記憶體存取指示以相連負偏移處的該相鄰記憶體為目標。
  25. 如請求項21之裝置,其中該多個記憶體存取指示利用該可用匯流排寬度之不同部分。
  26. 如請求項21之裝置,其進一步包含用於回應於該多個記憶體存取指示包括改變儲存於該共用基極暫存器中之一值的一第一記憶體存取指示及存取與儲存於該共用基極暫存器中之該改變值相鄰之一位置處的記憶體的一第二記憶體存取而判定該多個記憶體存取指示以該相鄰記憶體為目標的構件。
  27. 如請求項21之裝置,其進一步包含用於判定該多個記憶體存取指示非連續地出現在該處理器管線中的構件,其中若在該等非連續記憶體存取指示之間沒有出現介入儲存指示,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  28. 如請求項21之裝置,其進一步包含用於判定該多個記憶體存取指示非連續地出現在該處理器管線中的構件,其中若在該等非連續記憶體存取指示之間出現的一或多個介入儲存指示使用該多個記憶體存取指示中引用的該共用基極暫存器,且在該等非連續記憶體存取指示與該一或多個介入儲存指示之間沒有重疊位元組,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  29. 如請求項21之裝置,其中該多個記憶體存取指示包含該同一記憶體存取指示之多個動態例項。
  30. 如請求項21之裝置,其中該多個記憶體存取指示包含多個載入指示或多個儲存指示。
  31. 一種電腦可讀媒體,其具有記錄於其上的電腦可執行指示,該等電腦可執行指示經組態以使一處理器執行以下操作: 在與該處理器相關聯之一處理器管線中,識別多個記憶體存取指示之至少一種模式,該多個記憶體存取指示引用一共用基極暫存器且不充分利用一可用匯流排寬度; 判定該多個記憶體存取指示以可適配於一單個快取線上的相鄰記憶體或非相連記憶體為目標;及 在與該處理器相關聯之該管線內,用一個等效記憶體存取指示替換該多個記憶體存取指示,該等效記憶體存取指示利用比該等替換的記憶體存取指示中之任一者更多的可用匯流排寬度。
  32. 如請求項31之電腦可讀媒體,其中回應於該多個記憶體存取指示連續地出現在該管線中及以相連偏移處之該相鄰記憶體為目標,用一個等效記憶體存取指示替換該多個記憶體存取指示。
  33. 如請求項32之電腦可讀媒體,其中該多個記憶體存取指示以相連正偏移處的該相鄰記憶體為目標。
  34. 如請求項32之電腦可讀媒體,其中該多個記憶體存取指示以相連負偏移處的該相鄰記憶體為目標。
  35. 如請求項31之電腦可讀媒體,其中該多個記憶體存取指示利用該可用匯流排寬度之不同部分。
  36. 如請求項31之電腦可讀媒體,其中該等電腦可執行指示進一步經組態以使該處理器回應於該多個記憶體存取指示包括改變儲存於該共用基極暫存器中之一值的一第一記憶體存取指示及存取與儲存於該共用基極暫存器中之該改變值相鄰的一位置處的記憶體的一第二記憶體存取判定該多個記憶體存取指示以該相鄰記憶體為目標。
  37. 如請求項31之電腦可讀媒體,其中該等電腦可執行指示進一步經組態以使該處理器判定該多個記憶體存取指示非連續地出現在該處理器管線中,且若在該等非連續記憶體存取指示之間沒有出現介入儲存指示,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  38. 如請求項31之電腦可讀媒體,其中該等電腦可執行指示進一步經組態以使該處理器判定該多個記憶體存取指示非連續地出現在該處理器管線中,且若在該等非連續記憶體存取指示之間出現的一或多個介入儲存指示使用該多個記憶體存取指示中引用的該共用基極暫存器,且在該等非連續記憶體存取指示與該一或多個介入儲存指示之間沒有重疊位元組,則用該一個等效記憶體存取指示替換該多個記憶體存取指示。
  39. 如請求項31之電腦可讀媒體,其中該多個記憶體存取指示包含該同一記憶體存取指示之多個動態例項。
  40. 如請求項31之電腦可讀媒體,其中該多個記憶體存取指示包含多個載入指示或多個儲存指示。
TW108120950A 2018-06-29 2019-06-17 用於組合載入或儲存指示的方法、裝置及非暫時性電腦可讀媒體 TWI835807B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/024,725 2018-06-29
US16/024,725 US11593117B2 (en) 2018-06-29 2018-06-29 Combining load or store instructions

Publications (2)

Publication Number Publication Date
TW202001586A true TW202001586A (zh) 2020-01-01
TWI835807B TWI835807B (zh) 2024-03-21

Family

ID=

Also Published As

Publication number Publication date
WO2020005614A1 (en) 2020-01-02
EP3814892A1 (en) 2021-05-05
US11593117B2 (en) 2023-02-28
CN112639727A (zh) 2021-04-09
US20200004550A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
US11593117B2 (en) Combining load or store instructions
US20170249144A1 (en) Combining loads or stores in computer processing
CN101694613B (zh) 不对准存储器存取预测
US9424203B2 (en) Storing look-up table indexes in a return stack buffer
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
KR101496009B1 (ko) 루프 버퍼 패킹
TW201704991A (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
JP6511462B2 (ja) 浮動小数点レジスタエイリアシングのためのプロセッサ及び方法
US20110320763A1 (en) Using addresses to detect overlapping memory regions
US10481912B2 (en) Variable branch target buffer (BTB) line size for compression
US11599359B2 (en) Methods and systems for utilizing a master-shadow physical register file based on verified activation
GB2540940A (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
JP6352386B2 (ja) 定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法および装置
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20230367595A1 (en) Gather buffer management for unaligned and gather load operations
TWI835807B (zh) 用於組合載入或儲存指示的方法、裝置及非暫時性電腦可讀媒體
CN117270972B (zh) 指令处理方法、装置、设备和介质
CN104391563A (zh) 一种寄存器堆的循环缓冲电路及其方法,处理器装置
KR20220086590A (ko) 스레드 저장에 대한 섀도우 래치 구성 레지스터 파일의 섀도우 래치
CN116194885A (zh) 微处理机存储指令的融合
JPH07219772A (ja) データキャッシュ機構