KR102515106B1 - 보류 로드 및 스토어의 별도 추적 - Google Patents
보류 로드 및 스토어의 별도 추적 Download PDFInfo
- Publication number
- KR102515106B1 KR102515106B1 KR1020197020241A KR20197020241A KR102515106B1 KR 102515106 B1 KR102515106 B1 KR 102515106B1 KR 1020197020241 A KR1020197020241 A KR 1020197020241A KR 20197020241 A KR20197020241 A KR 20197020241A KR 102515106 B1 KR102515106 B1 KR 102515106B1
- Authority
- KR
- South Korea
- Prior art keywords
- counter
- store
- command
- load
- pair
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims description 24
- 238000013459 approach Methods 0.000 abstract description 10
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 11
- 239000004744 fabric Substances 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
별도의 보류 로드 및 스토어 카운터들을 관리하기 위한 시스템들, 장치들 및 방법들이 본 명세서에 개시된다. 일 실시 예에서, 시스템은 적어도 하나의 실행 유닛, 메모리 서브 시스템 및 각 실행 스레드에 대한 카운터들의 쌍을 포함한다. 일 실시 예에서, 시스템은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현한다. 일 실시 예에서, 실행 유닛(들)은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 지원하기 위한 카운터들을 유지한다. 실행 유닛(들)은 실행 시간 동안 종속성을 관리하기 위해 사용되는 명령들을 실행하도록 구성된다. 일 실시 예에서, 실행 유닛(들)은 계속해서 명령 시퀀스를 실행하기 전에 소정의 카운터가 지정된 값과 동일할 때까지 대기하기 위한 대기 명령들을 실행한다.
Description
프로세서들은 로드 메모리 연산들 및 스토어 메모리 연산들에 대한 지원을 포함하여 프로세서들과 프로세서들이 결합된 메모리 간에 데이터를 쉽게 전달할 수 있다. 일반적으로 말하면, 로드 메모리 연산은 메모리 위치로부터 프로세서로 데이터의 전달을 지정하는 연산이다. 메모리 위치는 메모리 계층 내의 위치를 지칭하며, 메모리 계층 구조는 하나 이상의 레벨의 캐시 및/또는 하나 이상의 레벨의 메모리를 포함한다. 스토어 메모리 연산은 프로세서로부터 메모리 계층 구조 내 위치로 데이터의 전달을 지정하는 연산이다.
본 명세서에서 사용될 때, "명령(instruction)"이라는 용어는 프로세서에 의해 수행될 하나 이상의 연산을 나타내는 정보를 지칭한다. "연산(operation)"은 소정의 처리 사이클 동안 아무것도 하지 않는(예를 들어, "nop"또는 "무연산(no-operation)" 명령 또는 조건이 거짓인 조건부 명령에 기초하여) 프로세싱 요소를 포함할 수 있다. 명령은 소정의 명령 세트 아키텍처(ISA)에 의해 정의될 수 있다. 또한 명령은 특정 ISA와 관련 있기 보다는 마이크로 아키텍처에 의해 정의될 수 있다. 예를 들어, ISA 명령은 하나 이상의 마이크로 연산으로 디코딩될 수 있으며, 이는 그것들이 프로세서에 의해 수행될 연산을 지정할 때 "명령들"이라고 지칭될 수도 있다. 그에 따라, "스토어 명령(store instruction)"은 ISA에 의해 정의될 수도 그렇지 않을 수도 있다. 스토어 명령은 스토어 연산이 수행되어야 함을 나타내는 정보를 포함하고 통상적으로 스토어의 타겟 메모리 위치를 나타내는 정보를 포함한다.
로드 및 스토어 메모리 연산들은 다양한 구현 예에서, 메모리 연산을 포함하는 명령의 암시적 부분일 수도, 또는 명시적 명령들일 수도 있다. "로드 메모리 연산들"은 본 명세서에서 "로드 명령들" 또는 "로드 연산들"이라고도 지칭된다. 유사하게, "스토어 메모리 연산들"은 본 명세서에서 "스토어 명령들" 또는 "스토어 연산들"이라고도 지칭된다. "로드 연산" 또는 "스토어 연산"이라는 용어는 "원자 단위 연산(atomic operation)"이라고 지칭될 수도 있음이 주의된다. 원자 단위 연산은 메모리 위치로부터의 데이터와 레지스터 위치로부터의 데이터의 산술 조합을 수행한다. 또한 "로드 연산"이라는 용어는 "샘플 연산(sample operation)"을 지칭하기 위해 사용될 수도 있음이 주의된다. 샘플 연산은 데이터 값이 메모리 위치로부터 판독된 후 샘플러 상수들을 사용하여 필터링을 데이터 값에 적용한다.
많은 로드 및 스토어 연산은 특히 다중 스레드가 데이터를 공유할 때 다중 스레드 프로그래밍 환경에서, 그 외 다른 연산들에 종속된다. 종속성이 해결된 시점을 기준으로 이러한 로드들 및 스토어들을 언제 실행할 지 결정하는 것은 어려울 수 있다.
본 명세서 설명되는 방법들 및 메커니즘들의 이점들은 첨부 도면들과 함께 이하의 구체적인 내용을 참조함으로써 더 잘 이해될 수 있으며, 첨부 도면들에서:
도 1은 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 2는 실행 유닛의 일 실시 예의 블록도이다.
도 3은 소프트웨어 환경의 일 실시 예의 블록도이다.
도 4는 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현하는 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 5는 보류 로드 및 스토어 카운터들을 관리하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 6은 보류 로드 및 스토어 연산들을 별도로 추적하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 7은 대기 명령을 구현하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 1은 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 2는 실행 유닛의 일 실시 예의 블록도이다.
도 3은 소프트웨어 환경의 일 실시 예의 블록도이다.
도 4는 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현하는 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 5는 보류 로드 및 스토어 카운터들을 관리하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 6은 보류 로드 및 스토어 연산들을 별도로 추적하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 7은 대기 명령을 구현하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
이하의 구체적인 내용에서, 본 명세서에 제시되는 방법들 및 메커니즘들에 대한 완전한 이해를 제공하기 위해 많은 구체적인 세부 사항이 제시된다. 그러나, 해당 기술분야의 통상의 기술자는 다양한 실시 예가 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 것을 인식해야 한다. 경우에 따라서는, 주지된 구조들, 구성요소들, 신호들, 컴퓨터 프로그램 명령들 및 기술들이 본 명세서에 설명되는 접근법들을 모호하게 하는 것을 방지하기 위해 구체적으로 제시되지 않았다. 도시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 요소들 중 일부의 치수들은 그 외 다른 요소들에 비해 과장될 수 있다.
별도의 보류 로드 및 스토어 카운터들을 관리하기 위한 시스템들, 장치들 및 방법들이 본 명세서에 개시된다. 일 실시 예에서, 시스템은 적어도 하나의 실행 유닛, 메모리 서브 시스템 및 각 실행 스레드에 대한 카운터들의 쌍을 포함한다. 일 실시 예에서, 시스템은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현한다. 일 실시 예에서, 시스템은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 지원하기 위한 카운터들을 유지한다. 시스템은 카운터들의 값들을 참조함으로써 실행 시간 동안 종속성을 관리하기 위해 사용되는 명령들을 실행하도록 구성된다.
일 실시 예에서, 시스템은 제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 제1 실행 유닛의 제1 카운터를 증가시키도록 구성된다. 또한 시스템은 로드 명령의 데이터가 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 제1 카운터를 감소시키도록 구성된다. 추가로, 시스템은 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 제1 실행 유닛의 제2 카운터를 증가시키도록 구성된다. 또한, 시스템은 스토어 명령이 완료되었다는 확인 응답을 메모리 서브 시스템으로부터 수신하는 것에 응답하여 제2 카운터를 감소시키도록 구성된다. 스토어 명령은 스토어 명령의 데이터가 메모리 서브 시스템에 기록될 때 그리고 데이터가 그 외 다른 스레드들에 보일 때 완료된다. 제1 실행 유닛은 소정의 카운터가 대기 명령에서 지정되는 소정의 값과 동일할 때까지 대기하기 위한 대기 명령을 실행하도록 구성된다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 컴퓨팅 시스템(100)은 메모리(150)에 결합되는 시스템 온 칩(SoC)(105)을 포함한다. SoC(105)는 집적 회로(IC)로 지칭될 수도 있다. 일 실시 예에서, SoC(105)는 중앙 처리 장치(CPU)(165)의 프로세싱 유닛들(175A-N), 입력/출력(I/O) 인터페이스들(155), 캐시들(160A-B), 패브릭(120, 그래픽 처리 장치(GPU)(130), 로컬 메모리(110) 및 메모리 제어기(들)(140)를 포함한다. 또한 SoC(105)는 도면을 모호하게 하는 것을 방지하기 위해 도 1에 도시되지 않은 그 외 다른 구성요소들도 포함할 수 있다. 프로세싱 유닛들(175A-N)은 임의의 수 및 유형의 프로세싱 유닛들을 나타낸다. 일 실시 예에서, 프로세싱 유닛들(175A-N)은 CPU 코어들이다. 다른 실시 예에서, 프로세싱 유닛들(175A-N)의 하나 이상은 그 외 다른 유형들의 프로세싱 유닛들(예를 들어, ASIC(application specific integrated circuit), FPGA(field programmable gate array) 및 DSP(digital signal processor))이다. CPU(165)의 프로세싱 유닛들(175A-N)은 캐시들(160A-B) 및 패브릭(120)에 결합된다.
일 실시 예에서, 프로세싱 유닛들(175A-N)은 특정 명령 세트 아키텍처(ISA)의 명령들을 실행하도록 구성된다. 각 프로세싱 유닛(175A-N)은 하나 이상의 실행 유닛, 캐시 메모리, 스케줄러, 분기 예측 회로 등을 포함한다. 일 실시 예에서, 프로세싱 유닛들(175A-N)은 시스템(100)의 메인 제어 소프트에어, 이를테면 운영 체제를 실행하도록 구성된다. 일반적으로, 사용 동안 프로세싱 유닛들(175A-N)에 의해 실행되는 소프트웨어는 시스템(100)의 목적하는 기능을 실형하도록 시스템(100)의 그 외 다른 구성요소들을 제어할 수 있다. 또한 프로세싱 유닛들(175A-N)은 그 외 다른 소프트웨어, 이를테면 응용 프로그램들을 실행할 수도 있다.
GPU(130)는 그래픽 또는 범용 프로세싱 위해 사용되는 임의의 수 및 유형의 컴퓨트 유닛들을 나타내는 적어도 카운터들(135) 및 컴퓨트 유닛들(145A-N)을 포함한다. 각 컴퓨트 유닛(145A-N)은 임의의 수의 실행 유닛을 포함하며, 컴퓨터 유닛에 대한 실행 유닛들의 수는 실시 예마다 달라진다. GPU(130)는 로컬 메모리(110) 및 패브릭(120)에 결합된다. 일 실시 예에서, 로컬 메모리(110)는 고대역폭 메모리(HBM)를 사용하여 구현된다. 일 실시 예에서, GPU(130)는 그래픽 파이프라인 연산들 이를테면 드로우 명령들, 픽셀 연산들, 기하학적 컴퓨테이션들 및 이미지를 디스플레이에 렌더링하기 위한 그 외 다른 연산들을 실행하도록 구성된다. 다른 실시 예에서, GPU(130)는 그래픽과 관련되지 않은 연산들을 실행하도록 구성된다. 추가 실시 예에서, GPU(130)는 그래픽 연산들 및 논-그래픽 연산들 양자를 실행하도록 구성된다.
일 실시 예에서, GPU(130)는 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현하기 위한 카운터들(135)을 이용한다. GPU(130)의 컴퓨트 유닛들(145)은 실행 시간 동안 종속성을 관리하기 위해 사용되는 명령들을 실행하도록 구성된다. 일 실시 예에서, GPU(130)의 컴퓨트 유닛들(145)은 계속해서 명령 시퀀스를 실행하기 전에 소정의 카운터가 지정된 값과 동일할 때까지 대기하기 위한 대기 명령들을 실행한다.
일 실시 예에서, GPU(130)는 제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 카운터들(135)의 제1 카운터를 증가시키도록 구성된다. 또한 GPU(130)는 로드 명령의 데이터가 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 제1 카운터를 감소시키도록 구성된다. 추가로, GPU(130)는 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 카운터들(135)의 제2 카운터를 증가시키도록 구성된다. 또한, GPU(130)는 스토어 명령이 완료되었다는 확인 응답을 캐시 또는 메모리로부터 수신하는 것에 응답하여 제2 카운터를 감소시키도록 구성된다. 스토어 명령은 스토어 명령의 데이터가 캐시 또는 메모리에 기록될 때 그리고 데이터가 그 외 다른 스레드들에 보일 때 완료된다. GPU(130)는 소정의 카운터가 대기 명령에서 지정되는 소정의 값과 동일할 때까지 대기하기 위한 대기 명령을 실행하도록 구성된다.
I/O 인터페이스들(155)은 패브릭(120)에 결합되고, I/O 인터페이스들(155)은 임의의 수 및 유형의 인터페이스들(예를 들어, PCI(peripheral component interconnect) 버스, PCI-X(PCI-Extended), PCIE(PCI Express) 버스, GBE(gigabit Ethernet) 버스, USB(universal serial bus) 버스)을 나타낸다. 다양한 유형의 주변 디바이스들이 I/O 인터페이스들(155)에 결합될 수 있다. 그러한 주변 디바이스들은 디스플레이들, 키보드들, 마우스들, 프린터들, 스캐너들, 조이스틱들 또는 그 외 다른 유형들의 게임 제어기들, 미디어 레코딩 디바이스들, 외부 저장 디바이스들, 네트워크 인터페이스 카드들 등을 포함한다(그러나, 이에 제한되지는 않는다).
SoC(105)는 메모리(150)에 결합되며, 이는 하나 이상의 메모리 모듈을 포함한다. 메모리 모듈들의 각각은 장착되는 하나 이상의 메모리 디바이스를 포함한다. 일부 실시 예에서, 메모리(150)는 SoC(105)가 또한 장착되는 마더보드 또는 그 외 다른 캐리어 상에 장착되는 하나 이상의 메모리 디바이스를 포함한다. 일 실시 예에서, 메모리(150)는 연산 동안 SoC(105)와 사용하기 위한 랜덤 액세스 메모리(RAM)를 구현하기 위해 사용된다. 구현되는 RAM은 정적 RAM(SRAM), 동적 RAM(DRAM), 저항성 RAM(ReRAM), 상 변화 RAM(PCRAM) 또는 임의의 그 외 다른 휘발성 또는 비휘발성 RAM일 수 있다. 메모리(150)를 구현하기 위해 사용되는 DRAM의 유형은 DDR(double data rate) DRAM, DDR2 DRAM, DDR3 DRAM 등을 포함한다. 도 1에 명시적으로 도시되지는 않았지만, SoC(105)는 또한 프로세싱 유닛들(175A-N) 및/또는 컴퓨트 유닛들(145A-N) 내부에 있는 하나 이상의 캐시 메모리를 포함할 수도 있다. 일부 실시 예에서, SoC(105)는 프로세싱 유닛들(175A-N)에 의해 이용되는 캐시들(160A-B)을 포함한다. 일 실시 예에서, 캐시들(160A-B)은 캐시 제어기를 포함하는 캐시 서브 시스템의 일부이다.
다양한 실시 예에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 디바이스, 서버 또는 임의의 다양한 그 외 다른 유형의 컴퓨팅 시스템들 또는 디바이스들일 수 있다. 컴퓨팅 시스템(100) 및/또는 SoC(105)의 구성요소들의 수는 실시 예마다 달라질 수 있음이 주의된다. 각 구성요소/서브 구성요소의 수가 도 1에 도시된 수보다 더 많거나 더 적을 수 있다. 예를 들어, 다른 실시 예에서, SoC(105)는 다수의 메모리에 결합되는 다수의 메모리 제어기를 포함할 수 있다. 또한 컴퓨팅 시스템(100) 및/또는 SoC(105)는 도 1에 도시되지 않은 그 외 다른 구성요소들도 포함할 수 있음이 주의된다. 추가로, 그 외 다른 실시 예들에서, 컴퓨팅 시스템(100) 및 SoC(105)는 도 1에 도시된 방식과 다른 방식들로 구조화될 수 있다.
이제 도 2를 참조하면, 실행 유닛(205)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 실행 유닛(205)은 적어도 제어 로직(220), 로드 카운터(225) 및 스토어 카운터(230)를 포함한다. 일 실시 예에서, 다수의 실행 유닛(205)이 컴퓨트 유닛들(145A-N)(도 1의)의 각각 내에 구현될 수 있다. "로드 카운터"라는 용어는 "벡터 메모리 로드 카운터"로 지칭될 수도 있음이 주의된다. 유사하게, "스토어 카운터"라는 용어는 "벡터 메모리 스토어 카운터"로 지칭될 수도 있음이 주의된다. 또한 실행 유닛(205)은 각 실행 스레드마다 별도의 로드 및 스토어 카운터들의 쌍을 유지한다.
실행 유닛(205)은 메모리 서브 시스템(210)에 결합되며, 메모리 서브 시스템(210)은 임의의 수 및 유형의 캐시들 및/또는 메모리 디바이스들을 포함한다. 예를 들어, 일 실시 예에서, 메모리 서브 시스템(210)은 레벨 1(L1) 캐시, 레벨 2(L2) 캐시 및 시스템 메모리를 포함한다. 그 외 다른 실시 예들에서, 메모리 서브 시스템(210)은 그 외 다른 수들의 캐시 레벨들 및/또는 그 외 다른 유형들의 메모리를 포함할 수 있다.
일 실시 예에서, 실행 유닛(205)이 로드 명령을 실행할 때, 실행 유닛(205)은 로드 카운터(225)를 증가시킨다. 로드 명령의 데이터가 메모리 서브 시스템(210)에서 검색되고 실행 유닛(205) 내에서 이용 가능할 때, 실행 유닛(205)은 로드 카운터(225)를 감소시킨다. 실행 유닛(205)이 스토어 명령을 실행할 때, 실행 유닛(205)은 스토어 카운터(230)를 증가시킨다. 실행 유닛(205)이 메모리 서브 시스템(210)으로부터 스토어 명령이 완료되었다는 확인 응답을 수신할 때, 실행 유닛(205)은 스토어 카운터(230)를 감소시킨다. 실행 유닛(205)은 지정된 카운터가 소정의 값과 동일할 때까지 후속 명령들을 실행하기를 기다릴 것을 지정하는 대기 명령들을 실행하도록 구성된다. 예를 들어, 일 실시 예에서, 대기 명령은 로드 카운터(225)가 제로와 동일할 때까지 기다릴 것을 지정한다. 대기 명령들은 지정된 카운터가 비-제로 값과 동일할 때까지 실행 유닛(205)이 대기할 것을 지정할 수도 있다.
이제 도 3을 참조하면, 소프트웨어 환경(300)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 소프트웨어 환경(300)은 컴퓨팅 시스템(예를 들어, 도1의 컴퓨팅 시스템(100)) 상에서 실행할 수 있는 실행 가능한 코드(315)를 생성하기 위해 이용된다. 컴파일러(310)는 소스 코드(305)를 수신하고 실행 가능한 코드(315)로 컴파일링하도록 구성된다. 컴파일러(310)가 소스 코드(305)에 관한 최적화를 수행할 때, 컴파일러(310)는 다양한 대기 명령을 실행 가능한 코드(315)로 삽입할 수 있는 유연성을 갖는다.
일 실시 예에서, 컴파일러(310)는 다중 스레드 실행 환경에서 명령들 간 소프트웨어 종속성을 관리하기 위한 대기 명령들을 실행 가능한 코드(315)에 삽입한다. 컴파일러(310)가 소정의 대기 명령을 실행 가능한 코드(315)로 삽입할 때, 소정의 대기 명령은 소정의 스레드에 대한 대응하는 로드 또는 스토어 카운터를 식별한다. 또한 대기 명령은 실행이 계속하도록 허용되기 전에 대기할 값을 식별한다. 예를 들어, 일 실시 예에서, 대기 명령은 대기할 비-제로 카운트 값을 지정할 수 있고, 지정된 카운터가 지정된 비-제로 카운트 값에 도달할 때, 명령 시퀀스로부터의 후속 명령이 실행될 수 있다.
이제 도 4를 참조하면, 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현하기 위한 방법(400)의 일 실시 예가 도시되어 있다. 이 실시 예에서의 단계들 및 도 5 내지 도 7에서의 단계들은 논의를 위해, 순차적인 순서로 도시되어 있다. 그러나, 설명되는 방법들의 다양한 실시 예에서, 설명되는 요소들 중 하나 이상의 요소가 동시에, 도시된 것과 상이한 순서로 또는 완전히 생략됨이 주의된다. 그 외 다른 추가 요소들이 또한 목적하는 대로 수행된다. 본 명세서에 설명된 다양한 시스템 또는 장치 중 임의의 시스템 또는 장치가 방법 (400)을 구현하도록 구성된다.
시스템은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 구현한다(블록(405)). 일 실시 예에서, 시스템(예를 들어, 도 1의 시스템(100))은 적어도 하나의 실행 유닛 및 메모리 서브 시스템을 포함한다. 또한 시스템은 실시 예에 따라 임의의 수의 그 외 다른 구성요소들을 포함할 수도 있다. 시스템은 명령들 간 종속성을 관리하기 위한 소프트웨어 기반 접근법을 지원하기 위한 복수의 카운터를 유지한다(블록(410)). 일 실시 예에서, 시스템은 각 실행 스레드마다 카운터들의 쌍을 유지하며, 제1 카운터는 다수의 보류 스토어 명령을 추적하고 제2 카운터는 다수의 보류 로드 명령을 추적한다. 시스템의 실행 유닛(들)은 카운터들의 값들을 참조함으로써 실행 시간 동안 종속성을 관리하기 위한 명령들을 실행하도록 구성된다(블록(415)). 블록(415) 이후, 방법(400)이 종료된다.
이제 도 5를 참조하면, 보류 로드 및 스토어 카운터들을 관리하기 위한 방법(500)의 일 실시 예가 도시되어 있다. 시스템은 제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 제1 실행 유닛의 제1 카운터를 증가시키도록 구성된다(블록(505)). 또한, 시스템은 로드 명령의 타겟이 된 데이터가 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 제1 카운터를 감소시키도록 구성된다(블록(510)). 추가로, 시스템은 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 제1 실행 유닛의 제2 카운터를 증가시키도록 구성된다(블록(515)). 더 나아가, 시스템은 스토어 명령이 완료되었다는 확인 응답을 메모리 서브 시스템으로부터 수신하는 것에 응답하여 제2 카운터를 감소시키도록 구성된다(블록(520)). 또한, 시스템은 제1 또는 제2 카운터 중 어느 하나가 소정의 값과 동일할 때까지 제1 실행 유닛의 기능을 정지하기 위한 대기 명령을 실행하도록 구성된다(블록(525)). 블록(525) 이후, 방법(500)이 종료된다.
이제 도 6을 참조하면, 보류 로드 및 스토어 명령들을 별도로 추적하기 위한 방법(600)의 일 실시 예가 도시되어 있다. 실행 유닛은 명령 시퀀스의 실행을 개시한다(블록(605)). 일 실시 예에서, 실행 유닛은 스토어 및 로드 명령들을 교차 배치하는 다중 스레드 명령 시퀀스를 실행한다. 실행 유닛이 로드 명령이 실행됨을 검출할 경우(조건부 블록(610), "예" 분기), 실행 유닛은 보류 로드 카운터를 증가시킨다(블록(615)). 실행 유닛이 스토어 명령이 실행됨을 검출할 경우(조건부 블록(620), "예" 분기), 실행 유닛은 보류 스토어 카운터를 증가시킨다(블록(625)). 실행 유닛이 보류 로드 명령의 데이터가 메모리 서브 시스템으로부터 검색되었다는 표시를 수신할 경우(조건부 블록(630), "예" 분기), 실행 유닛은 보류 로드 카운터를 감소시킨다(블록(635)). 추가적으로, 실행 유닛이 메모리 서브 시스템으로부터 스토어 명령이 완료되었다는 확인 응답을 수신할 경우(조건부 블록(640), "예" 분기), 실행 유닛은 보류 스토어 카운터를 감소시킨다(블록(645)). 블록(645) 이후, 방법(600)은 블록(610)으로 되돌아간다.
이제 도 7을 참조하면, 대기 명령을 구현하기 위한 방법(700)의 일 실시 예가 도시되어 있다. 프로세서가 명령 시퀀스에서 대기 명령을 검출하며, 대기 명령은 소정의 카운터에 대한 소정의 값을 지정한다(예를 들어, 로드 카운터, 스토어 카운터)(블록(705)). 다음으로, 프로세서는 대기 명령(블록(710))을 실행한다. 소정의 카운터가 소정의 값에 도달했을 경우(조건부 블록(715), "예" 분기), 프로세서는 명령 시퀀스에서 후속 명령을 실행한다(블록(720)). 블록(720) 이후, 방법(700)이 종료된다. 소정의 카운터가 소정의 값에 도달하지 않았을 경우(조건부 블록(715), "아니오" 분기), 프로세서는 명령 시퀀스에서 후속 명령들을 실행하는 것이 금지된다(블록(725)). 일 실시 예에서, 프로세서는 블록(725)에서 단지 특정 유형들의 명령들(예를 들어, 로드 명령들, 스토어 명령들)을 실행하는 것이 금지된다. 블록(725) 이후, 방법(700)은 조건부 블록(715)으로 되돌아간다.
다양한 실시 예에서, 소프트웨어 어플리케이션의 프로그램 명령들은 이전에 설명된 방법들 및/또는 메커니즘들을 구현하기 위해 사용된다. 프로그램 명령들은 C와 같은 상위 레벨 프로그래밍 언어로 하드웨어의 동작을 설명한다. 대안적으로, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 명령들은 비일시적 컴퓨터 판독 가능한 저장 매체에 저장된다. 많은 유형의 저장 매체가 이용 가능하다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령들 및 수반 데이터를 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령들을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한 실시 예들은 단지 구현의 비제한적인 예들일 뿐이라는 것이 강조되어야 한다. 상기한 개시 내용이 완전히 이해되면, 해당 기술분야의 통상의 기술자들에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구범위는 그러한 모든 변형 및 수정을 포함하는 것으로 해석되어야 한다.
Claims (20)
- 시스템으로서,
메모리 서브 시스템; 및
하나 이상의 실행 유닛을 포함하고,
상기 하나 이상의 실행 유닛 중 제1 실행 유닛은 상기 제1 실행 유닛의 실행의 복수의 스레드들 각각에 대한 복수의 카운터들의 쌍을 포함하고, 각 카운터들의 쌍은 보류 로드 카운터 및 보류 스토어 카운터를 포함하며,
상기 시스템은:
제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 상기 복수의 카운터들의 쌍 중 제1 쌍의 보류 로드 카운터를 증가시키도록;
상기 로드 명령의 타겟이 된 데이터가 상기 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 상기 보류 로드 카운터를 감소시키도록;
상기 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 상기 제1 쌍의 보류 스토어 카운터를 증가시키도록; 그리고
상기 스토어 명령이 완료되었다는 확인 응답을 상기 메모리 서브 시스템으로부터 수신하는 것에 응답하여 상기 보류 스토어 카운터를 감소시키도록 구성되는 회로를 포함하고,
상기 제1 실행 유닛은 제1 대기 명령을 실행하도록 구성되고, 상기 제1 대기 명령은, 상기 제1 쌍의 보류 로드 카운터가 상기 제1 대기 명령에 포함된 제1 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하는 제로 또는 제로가 아닌 값 중 하나로 설정 가능한 제1 값을 포함하는, 시스템. - 청구항 1에 있어서, 상기 제1 실행 유닛은 제2 대기 명령을 실행하도록 구성되고, 상기 제2 대기 명령은, 상기 제1 쌍의 보류 스토어 카운터가 상기 제2 대기 명령에 포함된 제2 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하는 제로 또는 제로가 아닌 값 중 하나로 설정 가능한 제2 값을 포함하는, 시스템.
- 삭제
- 삭제
- 삭제
- 청구항 2에 있어서, 상기 제1 쌍의 보류 스토어 카운터는 상기 제2 대기 명령에서 지정되는, 시스템.
- 삭제
- 방법으로서,
실행 유닛의 실행의 복수의 스레드들 각각에 대한 복수의 카운터들의 쌍을, 제어 로직에 의해 유지하는 단계 - 각 카운터들의 쌍은 로드 카운터 및 스토어 카운터를 포함함 - 와;
제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 상기 복수의 카운터들의 쌍 중 제1 쌍의 로드 카운터를, 상기 제어 로직에 의해 증가시키는 단계와;
상기 로드 명령의 타겟이 된 데이터가 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 상기 로드 카운터를, 상기 제어 로직에 의해 감소시키는 단계와;
상기 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 상기 제1 쌍의 스토어 카운터를, 상기 제어 로직에 의해 증가시키는 단계와;
상기 스토어 명령이 완료되었다는 확인 응답을 상기 메모리 서브 시스템으로부터 수신하는 것에 응답하여 상기 스토어 카운터를, 상기 제어 로직에 의해 감소시키는 단계와; 그리고
실행 유닛에 의해, 제1 대기 명령을 실행하는 단계를 포함하고,
상기 제1 대기 명령은, 상기 제1 쌍의 로드 카운터가 상기 제1 대기 명령에 포함된 제1 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하는 제로 또는 제로가 아닌 값 중 하나로 설정 가능한 제1 값을 포함하는, 방법. - 청구항 8에 있어서, 제2 대기 명령을 실행하는 단계를 더 포함하고, 상기 제2 대기 명령은, 상기 제1 쌍의 스토어 카운터가 상기 제2 대기 명령에 포함된 제2 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하는 제로 또는 제로가 아닌 값 중 하나로 설정 가능한 제2 값을 포함하는, 방법.
- 삭제
- 삭제
- 삭제
- 청구항 9에 있어서, 상기 제1 쌍의 스토어 카운터는 상기 제2 대기 명령에서 지정되는, 방법.
- 삭제
- 장치로서,
메모리 서브 시스템; 및
실행 유닛을 포함하고;
상기 실행 유닛은 상기 실행 유닛의 실행의 복수의 스레드들 각각에 대한 복수의 카운터들의 쌍을 포함하고, 각 카운터들의 쌍은 로드 카운터 및 스토어 카운터를 포함하며,
상기 실행 유닛은:
제1 스레드의 로드 명령이 실행됨을 검출하는 것에 응답하여 상기 복수의 카운터들의 쌍 중 제1 쌍의 로드 카운터를 증가시키도록;
상기 로드 명령의 타겟이 된 데이터가 상기 메모리 서브 시스템으로부터 검색되었음을 결정하는 것에 응답하여 상기 로드 카운터를 감소시키도록;
상기 제1 스레드의 스토어 명령이 실행됨을 검출하는 것에 응답하여 상기 제1 쌍의 스토어 카운터를 증가시키도록;
상기 스토어 명령이 완료되었다는 확인 응답을 상기 메모리 서브 시스템으로부터 수신하는 것에 응답하여 상기 스토어 카운터를 감소시키도록; 그리고
제1 대기 명령을 실행하도록 구성되는 회로를 포함하고;
상기 제1 대기 명령은, 상기 제1 쌍의 로드 카운터가 상기 제1 대기 명령에 포함된 제1 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하는 제로 또는 제로가 아닌 값 중 하나로 설정 가능한 제1 값을 포함하는, 장치. - 청구항 15에 있어서, 상기 실행 유닛은 제2 대기 명령을 실행하도록 구성되고, 상기 제2 대기 명령은 상기 제1 쌍의 스토어 카운터가 제2 값과 동일할 때까지 하나 이상의 명령의 실행을 방지하며, 상기 제2 값은: 상기 제2 대기 명령에서 지정되고 그리고 제로 또는 제로가 아닌 값 중 하나로 설정되는, 장치.
- 삭제
- 삭제
- 삭제
- 청구항 16에 있어서, 상기 제1 쌍의 스토어 카운터는 상기 제2 대기 명령에서 지정되는, 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/442,412 | 2017-02-24 | ||
US15/442,412 US11074075B2 (en) | 2017-02-24 | 2017-02-24 | Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value |
EP17159096.1A EP3367235B1 (en) | 2017-02-24 | 2017-03-03 | Separate tracking of pending loads and stores |
EP17159096.1 | 2017-03-03 | ||
PCT/US2018/019517 WO2018156951A1 (en) | 2017-02-24 | 2018-02-23 | Separate tracking of pending loads and stores |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190116260A KR20190116260A (ko) | 2019-10-14 |
KR102515106B1 true KR102515106B1 (ko) | 2023-03-28 |
Family
ID=58227989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197020241A KR102515106B1 (ko) | 2017-02-24 | 2018-02-23 | 보류 로드 및 스토어의 별도 추적 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11074075B2 (ko) |
EP (1) | EP3367235B1 (ko) |
JP (1) | JP7092783B2 (ko) |
KR (1) | KR102515106B1 (ko) |
CN (1) | CN110249308A (ko) |
WO (1) | WO2018156951A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11327759B2 (en) * | 2018-09-25 | 2022-05-10 | Marvell Asia Pte, Ltd. | Managing low-level instructions and core interactions in multi-core processors |
US20240184580A1 (en) * | 2022-12-02 | 2024-06-06 | SiFive, Inc. | Tracking of Data Readiness for Load and Store Operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010522920A (ja) * | 2007-03-26 | 2010-07-08 | イマジネイション テクノロジーズ リミテッド | パイプラインプロセッサにおける長い待ち時間命令の処理 |
US20150220341A1 (en) * | 2014-02-03 | 2015-08-06 | Nvidia Corporation | System, method, and computer program product for implementing software-based scoreboarding |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6073159A (en) | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US5961630A (en) * | 1997-12-30 | 1999-10-05 | Intel Corporation | Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency |
US6473832B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6978360B2 (en) * | 2001-05-11 | 2005-12-20 | International Business Machines Corporation | Scalable processor |
US7409500B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for employing speculative fills |
US8291431B2 (en) | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
US7877559B2 (en) | 2007-11-26 | 2011-01-25 | Globalfoundries Inc. | Mechanism to accelerate removal of store operations from a queue |
US7941584B2 (en) * | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US9280343B2 (en) * | 2009-08-10 | 2016-03-08 | Oracle America, Inc. | Store queue with token to facilitate efficient thread synchronization |
US8127057B2 (en) | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8966457B2 (en) * | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
US9229896B2 (en) * | 2012-12-21 | 2016-01-05 | Apple Inc. | Systems and methods for maintaining an order of read and write transactions in a computing system |
US9535695B2 (en) | 2013-01-25 | 2017-01-03 | Apple Inc. | Completing load and store instructions in a weakly-ordered memory model |
US9569362B2 (en) * | 2014-11-13 | 2017-02-14 | Cavium, Inc. | Programmable ordering and prefetch |
-
2017
- 2017-02-24 US US15/442,412 patent/US11074075B2/en active Active
- 2017-03-03 EP EP17159096.1A patent/EP3367235B1/en active Active
-
2018
- 2018-02-23 KR KR1020197020241A patent/KR102515106B1/ko active IP Right Grant
- 2018-02-23 WO PCT/US2018/019517 patent/WO2018156951A1/en active Application Filing
- 2018-02-23 JP JP2019546133A patent/JP7092783B2/ja active Active
- 2018-02-23 CN CN201880009818.6A patent/CN110249308A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010522920A (ja) * | 2007-03-26 | 2010-07-08 | イマジネイション テクノロジーズ リミテッド | パイプラインプロセッサにおける長い待ち時間命令の処理 |
US20150220341A1 (en) * | 2014-02-03 | 2015-08-06 | Nvidia Corporation | System, method, and computer program product for implementing software-based scoreboarding |
Also Published As
Publication number | Publication date |
---|---|
EP3367235A1 (en) | 2018-08-29 |
KR20190116260A (ko) | 2019-10-14 |
JP2020523652A (ja) | 2020-08-06 |
CN110249308A (zh) | 2019-09-17 |
WO2018156951A1 (en) | 2018-08-30 |
US20180246724A1 (en) | 2018-08-30 |
JP7092783B2 (ja) | 2022-06-28 |
US11074075B2 (en) | 2021-07-27 |
EP3367235B1 (en) | 2019-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240264813A1 (en) | Target architecture determination | |
US8484443B2 (en) | Running multiply-accumulate instructions for processing vectors | |
US20120239911A1 (en) | Value check instruction for processing vectors | |
US20120236010A1 (en) | Page Fault Handling Mechanism | |
JP7014810B2 (ja) | 可変ウェーブフロントサイズ | |
US10067710B2 (en) | Detecting buffer overflows in general-purpose GPU applications | |
KR102699710B1 (ko) | 데이터 처리장치, 데이터 처리방법 및 컴퓨터 프로그램 | |
AU2015357677B2 (en) | Method for accessing data in a memory at an unaligned address | |
US9311094B2 (en) | Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions | |
KR102515106B1 (ko) | 보류 로드 및 스토어의 별도 추적 | |
CN114610394A (zh) | 指令调度的方法、处理电路和电子设备 | |
US8683178B2 (en) | Sharing a fault-status register when processing vector instructions | |
US10558489B2 (en) | Suspend and restore processor operations | |
US10353708B2 (en) | Strided loading of non-sequential memory locations by skipping memory locations between consecutive loads | |
CN114218152B (zh) | 流处理方法、处理电路和电子设备 | |
US20120239910A1 (en) | Conditional extract instruction for processing vectors | |
US9367325B2 (en) | Common architecture state presentation for processor having processing cores of different types | |
KR102199342B1 (ko) | 스토어 리플레이 정책 | |
KR102644951B1 (ko) | 산술 논리 장치 레지스터 시퀀싱 | |
US10180789B2 (en) | Software control of state sets | |
CN115687179A (zh) | 具有排除指定存储器区域的条件围栏命令的处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |