TWI468937B - 產生分支記錄的方法與系統及儲存分支記錄的處理器 - Google Patents

產生分支記錄的方法與系統及儲存分支記錄的處理器 Download PDF

Info

Publication number
TWI468937B
TWI468937B TW100124086A TW100124086A TWI468937B TW I468937 B TWI468937 B TW I468937B TW 100124086 A TW100124086 A TW 100124086A TW 100124086 A TW100124086 A TW 100124086A TW I468937 B TWI468937 B TW I468937B
Authority
TW
Taiwan
Prior art keywords
transaction
branch
processor
lbr
register
Prior art date
Application number
TW100124086A
Other languages
English (en)
Other versions
TW201224749A (en
Inventor
Ravi Rajwar
Peter Lachner
Laura A Knauth
Konrad K Lai
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201224749A publication Critical patent/TW201224749A/zh
Application granted granted Critical
Publication of TWI468937B publication Critical patent/TWI468937B/zh

Links

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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • G06F9/30101Special purpose registers
    • 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 or look ahead
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

產生分支記錄的方法與系統及儲存分支記錄的處理器
本發明關係於交易式記憶體之最後分支記錄指示碼。
由於技術的進展,電腦系統包含形式為多處理器系統之較多數的處理器,例如,經由可同時執行多個執行緒(thread)之一或多個多核心處理器。一般而言,在一執行緒存取一被共享資源之前,該執行緒可先取得對該被共享資源之鎖定(lock)。在該被共享資源是記憶體中儲存的一資料結構之情況中,嘗試存取該相同資源的所有執行緒可按照該鎖定機構提供的互斥性而將對其操作的執行序列化。此種方式對系統效能可能是不利的,且可能由於諸如死鎖(deadlock)或其他非所願的行為而造成程式錯誤。
一系統中愈來愈多的核心及邏輯處理器能夠執行更多的軟體執行緒。然而,可同時執行的軟體執行緒的數目之增加已產生了使該等軟體執行緒共享的資料同步之問題。在多核心或多邏輯處理器系統中存取被共享的資料之一種常見的解決方案使用了鎖定,以便保證對被共享的資料的多個存取之互斥性。然而,執行多個軟體執行緒的愈來愈強大之能力有可能導致假競爭(false contention)及執行的序列化。
為了減少因利用鎖定機構而造成的效能損失,某些電腦系統可能使用交易式記憶體(Transactional Memory;簡稱TM)。交易式記憶體通常意指一種可讓多個執行緒同時存取一被共享的資源而無須利用鎖定機構之同步模型。
交易式執行通常可包括以推測方式執行一些組的微運算(micro-operation)、運算、或指令。現有的TM系統包括:處理器硬體被用來執行交易之硬體TM系統、以軟體執行交易之軟體TM系統、以及硬體及軟體都可被用來執行交易之混合TM系統。硬體TM系統通常可能是最有效率的,但是如果一交易變得太大(例如,硬體記憶體溢位時),則通常重新開始該交易。此時,執行該交易到溢位為止所耗用的時間可能浪費掉了。
處理器包含各種硬體,且也可能提供用於測試、除錯、及其他操作之硬體。例如,可在一處理器中提供各種暫存器,用以執行處理器檢查點、異常回報、及分支記錄。然而,此類效能監視硬體通常不被用於交易式記憶體的環境。
在一實施例中,一處理器包含一執行單元、以及用來儲存程式執行期間被採取的分支的位址資訊之至少一最後分支記錄(Last Branch Record;簡稱LBR)暫存器。該暫存器可進一步儲存用來指示該分支在一交易式記憶體(TM)交易期間是否被採取之一交易指示碼。該暫存器可進一步儲存用來指示是否由一交易異常中止(abort)導致該分支之一異常中止指示碼。本發明也說明了其他實施例,且申請該等其他實施例之專利範圍。
在各實施例中,可記錄一程式的執行期間所取得之分支資訊,然後用於交易式記憶體交易的剖析(profiling)、除錯、及/或最佳化之用途。在此種方式下,可實現改良的交易式記憶體操作及程式碼。在各實施例中,這些暫存器中包含的資訊可包括最後分支資訊,其中可記錄於程式執行期間所採取與分支有關之資訊。除了這些分支的身分之外,亦可記錄與交易式記憶體的待處理交易的執行有關之資訊。可使用該資訊而實現交易式記憶體交易的除錯及其他操作。
交易式執行通常包括將複數個指令或運算分組成程式碼的一交易、不可分割的(atomic)部分、或關鍵性部分。在某些例子中,術語指令意指由複數個運算構成之巨集指令,而在其他例子中,指令可意指諸如微運算(uop)等的較小之運算。通常有兩種識別交易的方式。第一種情形包括以軟體區分交易。此處,某些軟體區分被包含在用來識別交易之程式碼。在可配合上述軟體區分而實施的另一實施例中,以硬體將各交易分組,或以指示一交易的開始及一交易的終止之指令辨識各交易。
在一處理器中,以推測方式或以非以推測方式執行一交易。在第二種情形中,以某一形式的鎖定或對將要被存取的記憶體位置的保證有效存取之方式執行一組指令。在替代實施例中,交易的推測式執行是更常見的,其中一交易被以推測方式執行,且於該交易結束時被提交(commit)。在本說明書的用法中,待處理的交易意指已開始執行且尚未被提交或被異常中止的(亦即,待處理的)交易。
在一交易的推測式執行期間,在該交易被提交之前,不使對記憶體的更新成為全域可見。當交易仍然處於待處理狀態時,追蹤自一記憶體載入及被寫到該記憶體的位置。在成功地驗證了那些記憶體位置之後,該交易被提交,且使該交易期間所作的更新成為全域可見。然而,如果在該交易的待處理期間使該交易無效,則重新開始該交易,而不使該等更新成為全域可見。
在各實施例中,可在一處理器中提供最後分支記錄功能。這些功能可將分支記錄儲存在一組暫存器,而該一實施例可以是機器或機型專用暫存器(Machine or Model Specific Register;簡稱MSR)。例如,一處理器可包含由一些MSR堆疊之一最後分支記錄(LBR),用以儲存與最近被採取的分支有關之資訊。在一實施例中,一分支記錄包含一對暫存器,其中一暫存器被用來儲存可以是線性位址之一分支來自指令位址及一分支到指令位址。在某些實施例中,可自動讀取該等暫存器,而在其他實施例中,一控制信號可使該堆疊將分支記錄以分支追蹤訊息(Branch Trace Message;簡稱BTM)傳送到一被選擇的目標位置。
請注意,可將各LBR暫存器之操作控制成被啟用或被停用。例如,一LBR旗標可出現在一除錯控制MSR中,使該處理器能夠自動記錄被採取的分支之分支記錄。請注意,在某些實施例中,除了各LBR之外,亦可將與中斷及異常有關之資訊儲存在該等LBR暫存器,但是在其他實施例中,可為這些情況提供一些獨立的記錄設施。
在一實施例中,一除錯器可將一LBR堆疊中之各位址用來啟用自一特定錯誤的表現形式朝向其來源的一反向追蹤。
注意,在不同的實施例中,該LBR堆疊中之MSR的數目可以有所不同。例如,在不同的實施例中,該LBR堆疊的大小可以是4、8、或16,但是本發明之範圍不限於這方面。如前文所述,最後分支記錄機構不只是可追蹤分支指令(諸如跳越(jump)、迴圈(loop)、及呼叫(call)指令),而且也可追蹤造成指令指標改變的其他操作(諸如外部中斷、陷阱(trap)、及錯誤(fault))。
現在請參閱第1圖,示出根據本發明的一實施例的一LBR暫存器之一方塊圖。如第1圖所示,暫存器對10可包含兩個MSR,亦即,一第一MSR 12及一第二MSR 14。如圖所示,MSR 12可儲存一來源位址。亦即,該暫存器可儲存一最近分支之來源位址,亦即,發生一分支之"來自"位址。然後,暫存器14可儲存一目標位址,亦即,該分支轉移控制之"到"位址。除了用來儲存一指令指標位址的一位址欄位15之外,這些暫存器中可存在一些額外的欄位。具體而言,在第1a圖所示之實施例中,可使一交易指示碼16及一異常中止指示碼17與每一暫存器相關聯。更具體而言,當在一交易的執行期間發生對應的分支時,可設定交易指示碼16。然後,可為一交易被異常中止之後發生的一第一分支設定異常中止指示碼17。更具體而言,一異常中止造成跳越到一異常中止處理常式(handler)。然後將該跳越記錄在該異常中止指示碼被設定的LBR中。該異常中止指示碼被用來將該分支與其他分支區分。下文中將說明與異常中止事件有關的資訊的儲存相關之細節。在此種方式下,可記錄與發生分支的交易的執行有關之資訊。如於下文中將進一步說明的,使用該資訊時,可得到對交易的執行之更清楚的了解,因而可能經由諸如最佳化或其他方式而改善交易。
如前文所述,除了用於分支資訊的暫存器對之外,可儲存與異常中止事件有關的資訊。具體而言,如第1圖所示,一額外的暫存器對20可包含與使待處理交易發生異常中止之指令有關的資訊。具體而言,暫存器22可儲存使交易異常中止的指令之指令指標。該對的第二暫存器(亦即,暫存器24)可儲存一目標位址,該目標位址可以是對應於程式碼或邏輯等而能夠自異常中止恢復的一異常中止處理常式之位址。雖然在第1圖的實施例中只示出這兩個暫存器對,但是我們應可了解:一LBR堆疊可包含許多額外的對。此外,在不同的實施例中,該等LBR中包含的結構、配置、及資訊可以是不同的。例如,在某些實施例中,可以一循環陣列之方式實施該LBR儲存器。
注意,該等LBR暫存器中可存在額外的資訊。例如,在某些實施例中,可提供一預測指示碼,該預測指示碼被設定時,將指示已正確地預測了該被採取的分支。否則,可清除該指示碼,以便指示錯誤預測了該分支。當然,這些暫存器中可提供一些額外的指示碼及其他資訊。
在某些實施例中,最後分支記錄堆疊頂端(Top-Of-Stack;簡稱TOS)指標可儲存該LBR堆疊中含有被記錄的最近分支、中斷、或異常的MSR之指標。
如將於下文中說明的,在某些實施例中,一除錯儲存(Debug Store;簡稱DS)機構可將各BTM儲存在可以是諸如一硬體緩衝器、快取記憶體、或系統記憶體等的一記憶體階層的一特定部分的一部分之一分支追蹤儲存區(Branch Trace Store;簡稱BTS)。在一實施例中,當該除錯控制MSR中之BTS旗標被設定時,將在偵測到一被採取的分支、中斷、或異常時將一分支記錄儲存在該DS儲存區中之BTS緩衝區。
在某些實施例中,可經由一LBR選擇暫存器而實現對最後分支記錄的過濾,其中該LBR選擇暫存器可提供用來指定將不會在該LBR中被擷取的分支的子集之條件。例如,該暫存器可包含用來過濾在預定特權等級等中發生的分支之欄位。
因此,在一實施例中,每一分支記錄包含兩個線性位址,用以代表一分支、中斷、或異常之"來自"及"到"指令指標。該"來自"及"到"位址之內容可能根據分支之來源而有所不同。當該記錄是用於一被採取的分支時,該"來自"位址是分支指令之位址,且該"到"位址是分支之目標指令。當該記錄是用於一中斷時,該"來自"位址是為該中斷儲存的返回指令指標(Return Instruction Pointer;簡稱RIP),且該"到"位址是中斷處理常式中之第一指令之位址。該RIP是在自該中斷處理常式返回之後要被執行的次一指令之線性位址。當該記錄是用於一異常時,該"來自"位址是促使該異常產生的指令之線性位址,且該"到"位址是異常處理常式中之第一指令之位址。
現在請參閱第2圖,圖中示出根據本發明的一實施例的一處理器核心之一方塊圖。如第2圖所示,處理器核心100可以是一多級管線化非循序處理器。第2圖中以較簡化之圖式示出處理器核心100,以便例示配合根據本發明的一實施例的分支記錄回報而使用的各種特徵。此外,我們應可了解:如前文所述,一處理器可以或可以不提供對TM交易的硬體支援。為了便於解說,假定核心100包含此種硬體支援。然而,在某些實施例中,若使用各LBR中儲存之交易狀態資訊,則縱然在缺少此種硬體支援之情形下,亦可進行對交易式執行的分析。在此種方式下,可得到對在一交易期間進行了哪些分支或一分支造成一交易異常中止等的情況之了解。然後,可利用該資訊進行除錯、最佳化、剖析、或其他活動。
如第2圖所示,核心100包含一些前端單元110,該等前端單元110可被用來提取要被執行的指令,且準備該等指令,以供稍後被用於該處理器。例如,前端單元110可包含一提取單元101、一指令快取記憶體103、以及一指令解碼器105。在某些實施例中,前端單元110可進一步包含一追蹤快取記憶體(trace cache)、以及微碼儲存器及一微運算儲存器。提取單元101可自諸如記憶體或指令快取記憶體103提取巨集指令,且將該等巨集指令傳送到指令解碼器105,以便將該等巨集指令解碼為一些基元(primitive)(亦即,可供該處理器執行之微運算)。
一指令派發器115被耦合到前端單元110與執行單元120之間,該指令派發器115在非循序執行實施例中可被實施為非循序邏輯,用以接收微指令,且準備該等微指令以供執行。更具體而言,指令派發器115可包含各種緩衝器,用以分配執行所需的各種資源,且提供對暫存器檔130及延伸暫存器檔135等的各種暫存器檔內之儲存位置上的邏輯暫存器之更名(renaming)。暫存器檔130可包括用於整數及浮點運算之各別的暫存器檔。延伸暫存器檔135可提供用於諸如每一暫存器有256或512位元等的向量大小的單元之儲存器。
如第2圖所示,處理器100可包含一組MSR 125。如前文所述,可將各種類型的機型專用資訊儲存在此類暫存器。在第2圖所示之實施例中,示出一組LBR 128,而如前文所述,該組LBR 128可儲存與程式碼的執行期間被採取的分支有關之資訊。這些或類似的暫存器可進一步包含與諸如中斷、陷阱、及異常等的其他執行事件有關之資訊。
執行單元120中可能存在其中包括諸如各種整數、浮點、及單一指令多重資料(Single Instruction Multiple Data;簡稱SIMD)邏輯單元以及其他專用硬體之各種資源。例如,這些執行單元可包括一或多個如算術邏輯單元(Arithmetic Logic Unit;簡稱ALU)122。此外,執行單元可進一步包括一效能監視單元(Performance Monitoring Unit;簡稱PMU)124。在各實施例中,PMU 124可被用來控制諸如剖析計數器及MSR中之資訊等的各種資訊之取得。在本發明的特定實施中,PMU 124及其他此類邏輯可被用來控制包括與LBR 128中之交易執行有關的資訊之資訊的記錄,且可被用來進一步取得此種資訊以供進一步的使用。可將結果提供給引退邏輯(retirement logic)(亦即,一重新排序緩衝區(Reorder Buffer;簡稱ROB)140。更具體而言,ROB 140可包含各種陣列及邏輯,用以接收與被執行的指令相關聯之資訊。然後由ROB 140檢查該資訊,以便決定是否可使該等指令有效地引退且將結果資料提交到該處理器的架構狀態,或者是否發生了阻止該等指令的適當引退之一或多個異常。當然,ROB 140可處理與引退相關聯的其他操作。
如第2圖所示,ROB 140被耦合到一快取記憶體150,該快取記憶體150在一實施例中可以是低階(例如,L1快取記憶體),但是本發明之範圍不限於這方面。如圖所示,在一實施例中,快取記憶體150可包含可儲存諸如自LBR 128接收的分支資訊之一分支追蹤緩衝區152。例如,PMU 124可控制來自LBR 128的分支目標訊息之產生以及將該分支目標訊息自LBR 128傳送到分支追蹤緩衝區152。由此,可諸如經由一剖析最佳化器(profiler optimizer)等而擷取資訊,以便能夠分析與交易執行有關的資訊。此外,執行單元120亦可被直接耦合到快取記憶體150。雖然在第2圖的實施例中係以高階之方式示出,但應了解的是本發明之範圍不限於這方面。
第3圖是根據本發明的一實施例而可以硬體執行交易式記憶體存取要求的處理器核心之方塊圖。使用諸如核心206等的一核心時,可利用自該核心之硬體取得的資訊而設定各LBR之交易狀態指示碼。如第3圖所示,處理器核心206可包含一提取單元202,用以提取指令以供核心206執行。核心206亦可包含一解碼單元204,用以將該被提取的指令解碼。例如,解碼單元204可將該被提取的指令解碼為複數個微運算。
此外,核心206可包含一排程單元207。排程單元207可執行與(諸如自解碼單元204接收的)被解碼的指令的儲存相關聯之各種操作,直到該等指令已準備好可供派發為止,例如,直到可取得被解碼的指令之所有來源值為止。在一實施例中,排程單元207可將被解碼的指令排程,且/或將該等指令發出(或派發)到一或多個執行單元208以供執行。執行單元208可包括一記憶體執行單元、一整數執行單元、一浮點執行單元、或其他執行單元。一引退單元210可在提交了被執行的指令之後引退該等指令。在一實施例中,該等被執行的指令之引退可導致自指令的執行提交處理器狀態以及停止分配被該等指令使用的實體暫存器。
一記憶體排序緩衝區(Memory Order Buffer;簡稱MOB)218可包含一載入緩衝區、儲存緩衝區及邏輯,用以儲存尚未被載入或寫回到一主記憶體的待處理之記憶體操作。在各實施例中,一核心可包含諸如快取記憶體216的一私有快取記憶體之一區域快取記憶體,其可包含一或多個快取線224(例如,快取線0至W),且被快取邏輯239管理。在一實施例中,快取記憶體216的每一快取線可包含用於在核心206中執行的每一執行緒之一交易讀取位元226及/或一交易寫入位元228。位元226及228可被設定或清除,以便指示一交易式記憶體存取要求對於對應的快取線之(載入及/或儲存)存取。請注意,雖然在第3圖所示之實施例中將每一快取線224示為具有各別的位元226及228,但是其他的組態也是可能的。例如,一交易讀取位元226(或交易寫入位元228)可對應於快取記憶體216之一被選擇部分(例如,快取記憶體216的一快取區塊或其他部分)。此外,位元226及/或228可被儲存在快取記憶體216之外的其他位置。因此,此類硬體中之資訊可被用來設定各LBR之各種指示碼。
為了協助執行TM操作,核心206可包含一交易深度計數器230,用以儲存對應於仍然未被提交的交易式記憶體存取要求的數目之一值。例如,計數器230中儲存之值可指示對應於相同執行緒的多個交易式記憶體存取要求之巢套深度(nesting depth)。在一例子中,當(諸如經由一程式館呼叫(library call)或其他巢套程序而)在一待處理交易內開始一交易時,可能造成多個交易式記憶體存取要求。可將計數器230實施為諸如一硬體暫存器或一記憶體(例如,系統記憶體或快取記憶體216)中儲存之一變數等的任何類型之儲存裝置。核心206亦可包含一交易深度計數器邏輯232,用以更新計數器230中儲存之值。核心206可包含:一交易檢查點邏輯234,用以檢查(或儲存)核心206的各組件之狀態;以及一交易恢復邏輯236,用以在諸如一特定交易發生異常中止時恢復核心206的各組件之狀態。此外,核心206可包含對應於各種交易式記憶體存取要求之一或多個額外的暫存器240,例如,可一交易狀態及控制暫存器(TXSR)、一交易指令指標(TXIP)(例如,該TXIP可以是在對應的交易的開始處(或開始處之前的位置)上的一指令之一指令指標)、及/或交易堆疊指標(TXSP)(例如,該TXSP可以是儲存核心206的一或多個組件的各種狀態的一堆疊的頭部之一堆疊指標)。此外,為了能夠擷取分支之交易資訊,亦可設有MSR 250,該等MSR 250除了可儲存分支資訊之外,還可儲存諸如一交易存在指示碼及一交易異常中止指示碼等的交易狀態資訊。
現在請參閱第4圖,圖中示出根據本發明的一實施例的一方法之一流程圖。在第4圖所示之實施例中,方法300可被用來將資訊填入根據本發明的一實施例之一LBR記錄暫存器。例如,可使用諸如一PMU邏輯等的處理器邏輯實施方法300。如圖所示,方法300可開始於菱形310,此時決定程式執行期間是否發生了異常中止。可藉由分析交易中內部狀態,而決定是否發生了異常中止,其中當一交易通過一交易終點標記(可能是一指令)時,或當一交易異常中止時,該交易中內部狀態被設定為假。請注意,異常中止不是一狀態,而是造成自目前的執行流所在處跳越到異常中止處理常式位置之一事件。
如果在菱形310中決定已發生了一異常中止,則控制轉移到方塊320,此時可分配一次一LBR條目。如前文所述,不同類型的分支記錄條目也是可能的。例如,一單一暫存器可包含只有目標的資訊,而一暫存器對可儲存來源及目標資訊等。因此,在某些實施例中,可將多個分支位址加入該條目。具體而言,一來源及目標位址可被儲存(請注意,此處之該目標位址可以是用於異常中止處理常式)。此外,如方塊330所示,亦可設定該條目之交易及異常中止指示碼,因而指示已發生了一待處理交易之一異常中止。
控制然後轉移到方塊340,此時可採取次一被執行的指令。如圖所示,這造成方法300再度開始以前文所述之方式決定是否有一異常中止。這次替代地假定在菱形310中決定並未發生一異常中止,因而控制替代地轉移到菱形350,此時可決定是否發生了一分支。如前文所述,諸如跳越或呼叫等的一些特定指令類型可能發生此類分支。如果並未發生分支,則該方法作出與該分支有關的最後結論,且控制轉移到方塊340而採取次一被執行的指令。
請仍然參閱第4圖,如果替代地決定一特定指令是一分支指令,則可儲存各種資訊。具體而言,如第4圖所示,在方塊360中,可分配一次一LBR條目,且將分支位址資訊儲存到該條目。
然後,可在菱形370中決定在一交易期間是否發生了該分支。例如,在一實施例中,當執行了表示一交易的開始之一指令時,可將一內部處理器狀態"交易中"設定為真。如果並非如此,則控制轉移到前文所述之方塊340(也可了解於此處可清除該等交易及異常中止指示碼)。
如果替代地在菱形370中決定於一交易執行期間發生了該分支,則控制轉移到方塊380,此時可設定該LBR條目之一交易指示碼,以便指示在交易執行期間發生了分支。然後,如前文所述,控制轉移到方塊340。雖然示出了第4圖的實施例中之該特定實施方式,但是我們應可了解本發明之範圍不限於這方面。
現在請參閱第5圖,圖中示出使用根據本發明的一實施例的分支記錄的方法之流程圖。如第5圖所示,可以諸如除錯器、分析器、或最佳化器等的各種邏輯實施方法400。方法400開始時,可在方塊410中將最後分支記錄儲存到一分支追蹤緩衝區。例如,在一特定實施例中,可提供有限數目的MSR對,用以儲存在最後分支記錄。因此,當這些對已被填滿時,諸如一PMU或專用LBR邏輯等的邏輯可回應一控制暫存器等之一控制位元,而產生一些BTM,以便將資訊傳送到該緩衝區。然後,在方塊420中,可自該緩衝區取得這些記錄。例如,一最佳化器或其他的此類邏輯可取得這些記錄。
請仍然參閱第5圖,根據該等記錄中之資訊,在一或多個交易的環境內發生的分支可根據該等交易指示碼而被識別。例如,假定第一條目有一被清除的交易指示碼且一後續的條目具有一被設定的交易指示碼,則意指該第二條目是交易區內的第一分支。替代性地假定該第一條目有一被設定的交易指示碼且該第二條目有一被清除的交易指示碼,則意指該第一條目是一交易區內的最後分支。再度假定被分析的一組記錄中之所有條目都有一被清除的交易指示碼,則意指交易執行期間並未發生該等分支中之任何分支,而替代性地如果所有這些交易指示碼都被設定,則意指自一TM交易的環境中發生了所有的分支。
請仍然參閱第5圖,然後在方塊440中,可識別被識別為一被異常中止的交易區的一部分之任何分支。具體而言,根據該等交易指示碼及異常中止指示碼之一組合,可決定該資訊。具體而言,具有被設定的指示碼之一第一條目指示在該LBR條目之前發生了異常中止。因此,可自該資訊產生一分支反向追蹤。例如,在方塊450中,可將該資訊用來將程式碼最佳化。假定一程式碼部分包含造成該交易異常中止的一分支,則一最佳化器可使該程式碼被修改成使該分支不被採取,或可將該分支修改成於未來執行該程式碼區段時避免一交易異常中止。當然,對該交易狀態資訊的其他使用也是可能的,例如,用來在一除錯工具內了解一交易是否被異常中止以及在哪一指令上被異常中止。
由於交易的本質,於發生異常中止時,外部無法得知任何架構上可見的狀態。該交易資訊可重建其他方式無法看見且未知的至異常中止位置為止之程式流。因此,各實施例能夠將該等LBR暫存器中儲存之資訊用於產生一執行反向追蹤。然後可以線上或離線之方式使用該執行反向追蹤。例如,一除錯工具可將該執行反向追蹤用來檢查TM交易內之程式碼流。或者,一離線分析工具可將該執行反向追蹤用來進行一事後分析(post mortem)程式碼流檢查。雖然示出了第5圖的實施例中之該特定實施方式,但是我們應可了解本發明之範圍不限於這方面。
可以許多不同的系統類型實施各實施例。現在請參閱第6圖,圖中示出根據本發明的一實施例的系統方塊圖。如第6圖所示,多處理器系統500是一點對點互連系統,且包含經由一點對點互連550而被耦合之一第一處理器570及一第二處理器580。如第6圖所示,處理器570及580中之每一處理器可以是其中包含第一及第二處理器核心(亦即,處理器核心574a及574b以及處理器核心584a及584b)之多核心處理器,但是該等處理器中可能存在了更多的核心。這些核心可包含根據本發明的一實施例的LBR暫存器,以便能夠分析TM交易內發生的分支。
請仍然參閱第6圖,第一處理器570進一步包含一記憶體控制中心(Memory Controller Hub;簡稱MCH)572以及點對點(Point-to-Point;簡稱P-P)介面576及578。同樣地,第二處理器580包含一MCH 582以及P-P介面586及588。如第6圖所示,MCH 572及582將該等處理器耦合到各別的記憶體(亦即,一記憶體532及一記憶體534),該等記憶體可以是在本地被連接到該等各別的處理器之主記憶體(例如,一動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM))的一些部分。可分別經由P-P互連552及554而將第一處理器570及第二處理器580耦合到一晶片組590。如第6圖所示,晶片組590包含P-P介面594及598。
此外,晶片組590包含一介面592,用以經由一P-P互連539而將晶片組590耦合到一高效能圖形引擎538。然後,晶片組590可經由一介面596而被耦合到一第一匯流排516。如第6圖所示,各種輸入/輸出(Input/Output;簡稱I/O)裝置514可被耦合到第一匯流排516,且一匯流排橋接器518將第一匯流排516耦合到一第二匯流排520。其中包括諸如一鍵盤/滑鼠522、一些通訊裝置526、以及諸如一磁碟機或其他大量儲存裝置等的一資料儲存單元528(該資料儲存單元528在一實施例中可包含程式碼530)之各種裝置可被耦合到第二匯流排520。此外,一音訊I/O裝置524可被耦合到第二匯流排520。
可以程式碼實施各實施例,且可將各實施例儲存在一儲存媒體,該儲存媒體上儲存了一些指令,該等指令可被用來將一系統程式化成執行該等指令。該儲存媒體可包括(但不限於)其中包括軟碟、光碟、固態硬碟(Solid State Drive;簡稱SSD)、唯讀光碟(Compact Disk Read-Only Memory;簡稱CD-ROM)、可覆寫式光碟(Compact Disk Rewritable;簡稱CD-RW)、磁光碟等的任何類型之儲存碟、諸如唯讀記憶體(Read Only Memory;簡稱ROM)、動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)、靜態機存取記憶體(Static Random Access Memory;簡稱SRAM)等的隨機存取記憶體(Random Access Memory;簡稱RAM)、可抹除可程式唯讀記憶體(Erasable Programmable Read-Only Memory;簡稱EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(Electrically Erasable Programmable Read-Only Memory;簡稱EEPROM)等的半導體裝置、磁卡或光學卡、或適於儲存電子指令之任何其他類型的媒體。
雖然已參照有限數目的實施例而說明了本發明,但是熟悉此項技術者將可了解本發明的許多修改及變化。最後的申請專利範圍將涵蓋在本發明的真實精神及範圍內之所有此類修改及變化。
10,20...暫存器對
12...第一機器專用暫存器
14...第二機器專用暫存器
15...位址欄位
16...交易指示碼
17...異常中止指示碼
22,24,240...暫存器
100,206,574a,574b,584a,584b...處理器核心
110...前端單元
101,202...提取單元
103...指令快取記憶體
105...指令解碼器
115...指令派發器
120,208...執行單元
130...暫存器檔
135...延伸暫存器檔
125,250...機器專用暫存器
128...最後分支記錄
122...算術邏輯單元
124...效能監視單元
140...重新排序緩衝區
150,216...快取記憶體
204...解碼單元
224...快取線
239...快取邏輯
226...交易讀取位元
228...交易寫入位元
230...交易深度計數器
232...交易深度計數器邏輯
234...交易檢查點邏輯
236...交易恢復邏輯
500...多處理器系統
539,550,552,554...點對點互連
570...第一處理器
580...第二處理器
572,582...記憶體控制中心
576,578,586,588,594,598...點對點介面
532,534...記憶體
590...晶片組
592,596...介面
538...高效能圖形引擎
516...第一匯流排
514...輸入/輸出裝置
518...匯流排橋接器
520...第二匯流排
522...鍵盤/滑鼠
526...通訊裝置
528...資料儲存單元
530...程式碼
524...音訊輸入/輸出裝置
第1圖是根據本發明的一實施例的最後分支暫存器對之一方塊圖。
第2圖是根據本發明的一實施例的一處理器核心之一方塊圖。
第3圖是根據本發明的另一實施例的一處理器核心之一方塊圖。
第4圖是根據本發明的一實施例而產生分支記錄的一方法之一流程圖。
第5圖是根據本發明的一實施例而使用分支記錄的一方法之一流程圖。
第6圖是根據本發明的一實施例的一系統之一方塊圖。
10,20...暫存器對
12...第一機器專用暫存器
14...第二機器專用暫存器
15...位址欄位
16...交易指示碼
17...異常中止指示碼
22,24...暫存器

Claims (22)

  1. 一種用以儲存分支記錄的處理器,包含:一處理器核心,其包含一執行單元、以及用來儲存程式執行期間所採取的分支的來源及目標位址資訊中之至少一者的至少一最後分支記錄(LBR)暫存器,該至少一LBR暫存器進一步包含一交易指示碼,用以指示該分支在一交易式記憶體(TM)交易期間是否被採取。
  2. 如申請專利範圍第1項之處理器,其中該至少一LBR暫存器進一步儲存一異常中止指示碼,用以指示在該分支被採取之前是否發生了該TM交易的一異常中止。
  3. 如申請專利範圍第2項之處理器,進一步包含用來將來源及目標位址資訊、該交易指示碼、以及該異常中止指示碼之該至少一者儲存到該至少一LBR暫存器之邏輯。
  4. 如申請專利範圍第1項之處理器,進一步包含一異常中止交易暫存器,用以儲存造成該TM交易異常中止的一指令之第一位址資訊、以及回應該異常中止而接收控制的一處理常式之第二位址資訊。
  5. 如申請專利範圍第1項之處理器,進一步包含一分支追蹤緩衝區(BTB),用以儲存來自該至少一LBR暫存器的資訊,其中該至少一LBR暫存器包含複數個LBR暫存器對。
  6. 如申請專利範圍第5項之處理器,進一步包含一最佳化器,以使用執行反向追蹤於至少部分地根據該BTB中儲存之該資訊而取得的該TM交易。
  7. 如申請專利範圍第1項之處理器,進一步包含一除錯工具,以允許經由使用該TM交易之一執行反向追蹤根據該至少一LBR暫存器中儲存之資訊,而檢查該TM交易內之一程式碼流。
  8. 如申請專利範圍第1項之處理器,進一步包含一分析工具,該分析工具能夠經由使用該TM交易之一執行反向追蹤根據該至少一LBR暫存器中儲存之資訊,而以事後檢查(post mortem inspection)該TM交易之一程式碼流。
  9. 一種產生分支記錄的方法,其包含:當一分支在程式執行期間被採取時,將分支位址資訊插入一處理器的一最後分支記錄(LBR)條目;如果該分支在一交易式記憶體(TM)交易的執行期間被採取,則寫入該LBR條目的一交易指示碼,否則,不寫入該交易指示碼;以及如果在該TM交易的一異常中止之後發生該分支,則寫入該LBR條目的一異常中止指示碼,否則,不寫入該異常中止指示碼。
  10. 如申請專利範圍第9項之方法,進一步包含下列步驟:將該處理器的交易狀態資訊用來決定該分支是否發生在該TM交易內。
  11. 如申請專利範圍第9項之方法,進一步包含將來自複數個LBR條目的資訊儲存到該處理器的一快取記憶體之一分支追蹤緩衝區。
  12. 如申請專利範圍第11項之方法,進一步包含根據 該分支追蹤緩衝區中儲存之一或多個交易指示碼而識別該TM交易內之一或多個分支。
  13. 如申請專利範圍第12項之方法,進一步包含識別根據該分支追蹤緩衝區中儲存之一或多個異常中止指示碼被異常中止的該TM交易的一區域期間被採取之一或多個分支。
  14. 如申請專利範圍第13項之方法,進一步包含根據對該等被採取的分支之識別而將該區域的程式碼最佳化。
  15. 一種產生分支記錄的系統,包含:一處理器,其包含一執行單元、以及分別用來儲存程式執行期間所採取的分支的來源及目標位址資訊的複數個最後分支記錄(LBR)暫存器對,該等LBR暫存器對中每一LBR暫存器對進一步包含用來指示該分支在一交易式記憶體(TM)交易期間是否被採取之一交易指示碼、以及用來指示在該分支被採取之前是否發生了該TM交易的一異常中止之一異常中止指示碼;以及被耦合到該處理器之一動態隨機存取記憶體(DRAM)。
  16. 如申請專利範圍第15項之系統,其中該處理器包含對該TM交易之硬體支援。
  17. 如申請專利範圍第16項之系統,其中該硬體支援包含一快取記憶體,該快取記憶體具有分別用來儲存與該TM交易有關的交易中介資料之複數個條目。
  18. 如申請專利範圍第15項之系統,其中該處理器進 一步包含用來將該來源及目標位址資訊、該交易指示碼、以及該異常中止指示碼儲存到該複數個LBR暫存器對之邏輯。
  19. 如申請專利範圍第15項之系統,其中該處理器進一步包含一異常中止交易暫存器,用以儲存造成該TM交易異常中止的一指令之第一位址資訊、以及回應該異常中止而接收控制的一處理常式之第二位址資訊。
  20. 如申請專利範圍第15項之系統,其中該處理器進一步包含儲存了一分支追蹤緩衝區(BTB)之一快取記憶體,用以儲存來自該複數個LBR暫存器對的資訊。
  21. 如申請專利範圍第20項之系統,進一步包含用來將一信號發出到該複數個LBR暫存器對而使該複數個LBR暫存器對之內容被寫到該BTB之邏輯。
  22. 如申請專利範圍第15項之系統,進一步包含一最佳化器,該最佳化器使用執行反向追蹤於至少部分地根據該等LBR暫存器對中儲存之該資訊而取得的該TM交易。
TW100124086A 2010-07-28 2011-07-07 產生分支記錄的方法與系統及儲存分支記錄的處理器 TWI468937B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/845,554 US8479053B2 (en) 2010-07-28 2010-07-28 Processor with last branch record register storing transaction indicator

Publications (2)

Publication Number Publication Date
TW201224749A TW201224749A (en) 2012-06-16
TWI468937B true TWI468937B (zh) 2015-01-11

Family

ID=45527938

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100124086A TWI468937B (zh) 2010-07-28 2011-07-07 產生分支記錄的方法與系統及儲存分支記錄的處理器

Country Status (8)

Country Link
US (4) US8479053B2 (zh)
KR (1) KR101423480B1 (zh)
CN (1) CN103154908B (zh)
DE (1) DE112011105042B4 (zh)
GB (1) GB2504858B (zh)
IN (1) IN2013CN00694A (zh)
TW (1) TWI468937B (zh)
WO (1) WO2012016085A2 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US20130013899A1 (en) * 2011-07-06 2013-01-10 International Business Machines Corporation Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions
US20130205284A1 (en) * 2012-02-02 2013-08-08 Dhruva Chakrabarti Ownership acquire policy selection
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8966324B2 (en) * 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9772854B2 (en) * 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9268598B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9519586B2 (en) 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
US9535744B2 (en) 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
WO2015030748A1 (en) * 2013-08-28 2015-03-05 Intel Corporation Hardware and software execution profiling
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9442853B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9305167B2 (en) 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US10049211B1 (en) 2014-07-16 2018-08-14 Bitdefender IPR Management Ltd. Hardware-accelerated prevention of code reuse attacks
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
GB2533650B (en) * 2014-12-23 2021-07-21 Advanced Risc Mach Ltd Debugging data processing transactions
US10007549B2 (en) * 2014-12-23 2018-06-26 Intel Corporation Apparatus and method for a profiler for hardware transactional memory programs
US11048516B2 (en) * 2015-06-27 2021-06-29 Intel Corporation Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
GB2548845B (en) * 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
US10600141B2 (en) * 2016-09-23 2020-03-24 Nvidia Corporation Monitoring execution in a graphics processing unit
US10140056B2 (en) * 2016-09-27 2018-11-27 Intel Corporation Systems and methods for differentiating function performance by input parameters
US20180211046A1 (en) * 2017-01-26 2018-07-26 Intel Corporation Analysis and control of code flow and data flow
CN107506638B (zh) * 2017-08-09 2020-10-16 南京大学 一种基于硬件机制的内核控制流异常检测方法
US10445211B2 (en) * 2017-08-28 2019-10-15 Microsoft Technology Licensing, Llc Logging trace data for program code execution at an instruction level
CN108681500B (zh) * 2018-04-28 2021-09-07 格兰菲智能科技有限公司 具有事务记录能力的系统和事务记录方法
US11354440B1 (en) * 2019-06-21 2022-06-07 NortonLifeLock Inc. Analyzing and mitigating privacy issues on a computing device using cookie generation flows
WO2021035006A1 (en) * 2019-08-20 2021-02-25 Northrop Grumman Systems Corporation Simd controller and simd predication scheme

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658557B1 (en) * 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
US20070162728A1 (en) * 2004-09-30 2007-07-12 Fujitsu Limited Information processing apparatus, replacing method, and computer-readable recording medium on which a replacing program is recorded
US20070240158A1 (en) * 2006-04-06 2007-10-11 Shailender Chaudhry Method and apparatus for synchronizing threads on a processor that supports transactional memory
TW200817894A (en) * 2006-06-30 2008-04-16 Intel Corp Global overflow method for virtualized transactional memory
TW200905474A (en) * 2007-06-08 2009-02-01 Microsoft Corp Cache metadata for implementing bounded transactional memory
US20090172654A1 (en) * 2007-12-28 2009-07-02 Chengyan Zhao Program translation and transactional memory formation
US20090271597A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporations Branch Prediction In A Computer Processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US9798590B2 (en) 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658557B1 (en) * 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
US20070162728A1 (en) * 2004-09-30 2007-07-12 Fujitsu Limited Information processing apparatus, replacing method, and computer-readable recording medium on which a replacing program is recorded
US20070240158A1 (en) * 2006-04-06 2007-10-11 Shailender Chaudhry Method and apparatus for synchronizing threads on a processor that supports transactional memory
TW200817894A (en) * 2006-06-30 2008-04-16 Intel Corp Global overflow method for virtualized transactional memory
TW200905474A (en) * 2007-06-08 2009-02-01 Microsoft Corp Cache metadata for implementing bounded transactional memory
US20090172654A1 (en) * 2007-12-28 2009-07-02 Chengyan Zhao Program translation and transactional memory formation
US20090271597A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporations Branch Prediction In A Computer Processor

Also Published As

Publication number Publication date
US8479053B2 (en) 2013-07-02
CN103154908A (zh) 2013-06-12
US8782382B2 (en) 2014-07-15
US9354878B2 (en) 2016-05-31
KR101423480B1 (ko) 2014-07-25
KR20130041295A (ko) 2013-04-24
GB2504858A (en) 2014-02-12
US10073719B2 (en) 2018-09-11
US20130179668A1 (en) 2013-07-11
WO2012016085A2 (en) 2012-02-02
TW201224749A (en) 2012-06-16
IN2013CN00694A (zh) 2015-07-03
GB201314780D0 (en) 2013-10-02
GB2504858B (en) 2018-06-20
WO2012016085A3 (en) 2012-05-31
DE112011105042T5 (de) 2014-01-02
US20120030518A1 (en) 2012-02-02
US20160232041A1 (en) 2016-08-11
DE112011105042B4 (de) 2020-12-03
US20140258695A1 (en) 2014-09-11
CN103154908B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
TWI468937B (zh) 產生分支記錄的方法與系統及儲存分支記錄的處理器
US10956163B2 (en) Processor support for hardware transactional memory
TWI423123B (zh) 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體
US8738862B2 (en) Transactional memory system with efficient cache support
US7721076B2 (en) Tracking an oldest processor event using information stored in a register and queue entry
EP2972885B1 (en) Memory object reference count management with improved scalability
TWI758319B (zh) 用於處置針對向量指令的元素間位址危害的裝置及資料處理方法
US9558118B2 (en) Tracing mechanism for recording shared memory interleavings on multi-core processors
JP6306261B2 (ja) トランザクションメモリプログラムのためのソフトウェアリプレイヤ
US10007549B2 (en) Apparatus and method for a profiler for hardware transactional memory programs
KR20210028653A (ko) 트랜잭션 비교-및-폐기 명령
US10810039B2 (en) Monitoring utilization of transactional processing resource
CN112236750A (zh) 处理支持事务存储器的设备中的独占式加载指令
US9400655B2 (en) Technique for freeing renamed registers
JP4420055B2 (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
TWI818114B (zh) 用於異動式記憶體的設備與資料處理方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees