KR102639415B1 - 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 - Google Patents

프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 Download PDF

Info

Publication number
KR102639415B1
KR102639415B1 KR1020230093167A KR20230093167A KR102639415B1 KR 102639415 B1 KR102639415 B1 KR 102639415B1 KR 1020230093167 A KR1020230093167 A KR 1020230093167A KR 20230093167 A KR20230093167 A KR 20230093167A KR 102639415 B1 KR102639415 B1 KR 102639415B1
Authority
KR
South Korea
Prior art keywords
lsu
interleaving
cache
data units
data
Prior art date
Application number
KR1020230093167A
Other languages
English (en)
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 메티스엑스 주식회사
Priority to KR1020230093167A priority Critical patent/KR102639415B1/ko
Application granted granted Critical
Publication of KR102639415B1 publication Critical patent/KR102639415B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Abstract

본 개시의 한 측면으로서, 복수의 스레드(thread)들 중 각각의 스레드에 관한 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법이 개시된다. 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행되는 것으로서, 상기 복수의 스레드들 중 적어도 하나의 스레드에 관한 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 단계; 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 복수의 제2 트랜잭션들을 서보디네이트(subordinate) 또는 캐시(cache)로 전달하는 단계; 상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계; 및 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계를 포함하되, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙(interleaving)을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성될 수 있다.

Description

프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서{METHOD FOR PROCESSING MULTIPLE TRANSACTIONS CONVERTED FROM SINGLE TRANSACTION IN PROCESSOR, AND PROCESSOR FOR PERFORMING SAME}
본 개시는 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서에 관한 것이다.
프로세서(processor)는 복수의 코어(core)들로 구성될 수 있다. 코어의 로드-스토어 유닛(load-store unit; LSU)은 코어의 레지스터와 메모리 사이에서 데이터를 전달하도록 구성된 컴포넌트이다. 메모리에 데이터를 저장하는 것을 스토어(store)라고 하고, 메모리로부터 데이터를 불러와서 레지스터로 취출하는 것을 로드(load)라고 할 수 있다. LSU를 보다 범용적인 측면에서 보자면, LSU는 코어가 다른 컴포넌트(예: 캐시(cache), 메모리(memory) 또는 버스(bus)를 통해 통신하는 다른 컴포넌트 등)와 인터페이싱할 수 있도록 구성된 코어의 컴포넌트라고 이해할 수 있다.
시스템 온 칩(System on Chip; SoC)은 여러가지 반도체 부품이 하나로 집적되는 기술 및 제품으로서, 여러 개의 반도체가 모여 시스템을 구성했던 예전과 달리 시스템이 하나의 칩 속에 존재한다. SoC를 구성하는 기능 블록들 간의 연결 및 관리 방법을 제공하는 데이터의 전달 경로를 구현하기 위해 버스가 사용될 수 있다.
버스 설계 규격으로 대표적인 아키텍처로는 AMBA(Advanced Microcontroller Bus Architecture)가 널리 사용되고 있다. AMBA는 ARM에서 개발하여 공개한 표준 시스템 버스 설계 구격이다. 표준 AMBA 버스를 사용하면, SoC 설계자 간의 의사소통이 용이하다는 점, 설계자 간의 아이디어를 표준에 맞게 공유할 수 있기 때문에 SoC 설계 시간이 단축된다는 점, IP(Intellenctual Property)의 재사용이 용이하다는 점, 외부의 표준 IP 도입으로 SoC 설계 시간이 단축된다는 점 등의 장점이 있다.
AMBA 버스의 종류로는 AHB(Advanced High-performance Bus), ASB(Advanced System Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface) 등으로 구별된다. 이 중에서도 AXI는 빠른 속도와 병목현상을 없앤 버스 프로토콜로서, 읽기(read), 쓰기(write), 쓰기 응답(write response) 등에 관한 채널이 각각 분리되어 독립적으로 동작하는 점, 주소/제어/데이터의 단계(address/control and data phases)를 분리할 수 있는 점, 비정렬 데이터 전송(unaligned data transfer)을 지원할 수 있는 점, 버스트 기반의 트랜잭션(burst-based transaction)을 사용할 수 있는 점, 비순차(out-of-order) 트랜잭션을 지원하는 점 등의 특징을 갖는다.
특히, AXI는 인터리빙(interleaving)을 지원하기 때문에, 매니저(manager) 컴포넌트로부터의 복수의 스레드(thread)에 의해 데이터를 읽어오기 위한 트랜잭션이 수행될 경우 각각의 스레드 ID의 데이터가 순서의 제약 없이 섞여서 전달될 수 있다. 비순차적 처리가 시스템의 성능 향상에 이로운 경우도 있으나, 상황에 따라서 비순차적 처리가 비효율적인 경우도 있다.
예를 들어, 범용 프로세서의 LSU는 메모리로부터 데이터를 로드할 경우에 코어 및 내부 캐시(또는 로컬 캐시) 내부 구조에 최적화되도록 로드를 여러 개의 트랜잭션으로 변환하여 전달하는 경우가 발생한다. 변환된 트랜잭션들은 LSU 내부에서 다시 하나의 트랜잭션으로 재변환해야 한다. 그런데 앞서 언급된 것처럼 복수의 스레드가 사용되면서 인터리빙을 지원하는 버스 프로토콜을 사용하는 상황에서는 버퍼의 저장 공간을 효율적으로 활용하기 어려운 문제점이 있었다.
본 개시는 하나의 스레드에 대응하는 복수의 트랜잭션들을 하나의 트랜잭션으로 재변환하는 시나리오에서, 재변환을 효율적으로 수행하는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 특정 스레드에 관한 트랜잭션이 복수의 트랜잭션들로 변환될 경우 LSU가 효율적으로 이들 트랜잭션들을 처리할 수 있도록 서보디네이트 또는 캐시로 인터리빙 비활성화 정보를 시그널링하는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 단일의 내부 데이터 버퍼만 구비하더라도 복수의 스레드 각각을 위한 복수의 데이터 유닛을 결합하는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 내부 데이터 버퍼를 위한 영역(area) 및 전력(power)를 최적화함으로써 컴퓨팅 성능을 개선할 수 있는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 한 측면으로서, 복수의 스레드(thread)들 중 각각의 스레드에 관한 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법이 개시된다. 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행되는 것으로서, 상기 복수의 스레드들 중 적어도 하나의 스레드에 관한 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 단계; 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 복수의 제2 트랜잭션들을 서보디네이트(subordinate) 또는 캐시(cache)로 전달하는 단계; 상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계; 및 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계를 포함하되, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙(interleaving)을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성될 수 있다.
일 실시예에서, 상기 인터리빙 비활성화 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
일 실시예에서, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시는 상기 복수의 데이터 단위들을 상기 LSU로 연속적으로 전달하도록 구성될 수 있다.
일 실시예에서, 상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계는, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시에 의해 상기 복수의 데이터 단위들 중 적어도 일부를 상기 LSU 내의 데이터 버퍼에 저장하는 단계 - 상기 복수의 데이터 단위들은 모두 동일한 스레드와 연관됨 - 를 포함할 수 있다.
일 실시예에서, 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계는, 상기 복수의 데이터 단위들 중 마지막 데이터 단위가 상기 LSU에 의해 수신되면 상기 LSU가 상기 마지막 데이터 단위 및 상기 데이터 버퍼에 저장되어 있는 데이터 단위들을 결합하는 단계를 포함할 수 있다.
일 실시예에서, 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계 이후에, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙을 다시 활성화하도록 하는 인터리빙 활성화 정보를 전달하도록 구성될 수 있다.
본 개시의 한 측면으로서, 복수의 스레드들 중 각각의 스레드에 관한 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 수행하는 프로세서가 개시된다. 상기 프로세서는 적어도 하나의 코어를 포함하고, 상기 방법은, 상기 복수의 스레드들 중 적어도 하나의 스레드에 관한 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 단계; 상기 코어의 로드-스토어 유닛(LSU)에 의해 상기 복수의 제2 트랜잭션들을 서보디네이트(subordinate) 또는 캐시(cache)로 전달하는 단계; 상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계; 및 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계를 포함하되, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙(interleaving)을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성될 수 있다.
일 실시예에서, 상기 인터리빙 비활성화 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
일 실시예에서, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시는 상기 복수의 데이터 단위들을 상기 LSU로 연속적으로 전달하도록 구성될 수 있다.
일 실시예에서, 상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계는, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시에 의해 상기 복수의 데이터 단위들 중 적어도 일부를 상기 LSU 내의 데이터 버퍼에 저장하는 단계 - 상기 복수의 데이터 단위들은 모두 동일한 스레드와 연관됨 - 를 포함할 수 있다.
일 실시예에서, 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계는, 상기 복수의 데이터 단위들 중 마지막 데이터 단위가 상기 LSU에 의해 수신되면 상기 LSU가 상기 마지막 데이터 단위 및 상기 데이터 버퍼에 저장되어 있는 데이터 단위들을 결합하는 단계를 포함할 수 있다.
일 실시예에서, 상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계 이후에, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙을 다시 활성화하도록 하는 인터리빙 활성화 정보를 전달하도록 구성될 수 있다.
본 개시의 다양한 실시예들에 의하면, 하나의 스레드에 대응하는 복수의 트랜잭션들을 하나의 트랜잭션으로 재변환하는 시나리오에서, 재변환을 효율적으로 수행하는 기법을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 특정 스레드에 관한 트랜잭션이 복수의 트랜잭션들로 변환될 경우 LSU가 효율적으로 이들 트랜잭션들을 처리할 수 있도록 서보디네이트 또는 캐시로 인터리빙 비활성화 정보를 시그널링하는 기법을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 단일의 내부 데이터 버퍼만 구비하더라도 복수의 스레드 각각을 위한 복수의 데이터 유닛을 결합하는 기법을 제공할 수 있다.
본 개시는 내부 데이터 버퍼를 위한 영역(area) 및 전력(power)를 최적화함으로써 컴퓨팅 성능을 개선할 수 있는 기법을 제공할 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다.
도 2는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다.
도 3은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다.
도 4는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서와 비교하기 위한 비교예를 개념적으로 도시한 도면이다.
도 5는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다.
도 6은 도 4에 나타난 비교예에 따른 트랜잭션 처리 동작을 개념적으로 도시한 도면이다.
도 7 및 도 8은 도 5에 나타난 본 개시의 일 실시예에 따른 트랜잭션 처리 동작을 개념적으로 도시한 도면이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1 및 도 2는 각각 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다. 도 1에 도시된 방법(100A)을 수행한 이후에 후속하여 도 2에 도시된 방법(100B)이 수행될 수 있다. 도 3은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다.
먼저, 도 3을 참조하여 일반적으로 프로세서에서 트랜잭션을 처리하는 과정에 대해서 설명한다. 참고로, 도 3은 본 개시의 예시적인 실시예들을 설명하기 위하여 프로세서 내의 코어(300)에 포함되는 컴포넌트들 중 일부만 도시한 것일 수 있다. 따라서, 도 3에 명시적으로 도시된 컴포넌트들 외에 코어(300)에 다른 컴포넌트들이 더 포함될 수 있음은 당연하다.
프로세서가 명령어를 수행하기 위해서는 일반적으로 인스트럭션 사이클(instruction cycle)이라고 불리는 과정을 거친다. 인스트럭션 사이클은 페치-디코드-익스큐트 사이클(fetch-decode-execute cycle)이라고도 불린다. 페치 스테이지에서 페치 회로는 코어(300)가 실행해야 할 명령어를 가져온다. 예컨대, 페치 회로는 프로그램 카운터(PC)를 입력으로 사용하여 명령어를 읽어올 수 있다. 디코드 스테이지에서는 디코도 회로가 명령어를 해석하여 어떤 연산이 수행되어야 하는지 결정하고, 연산의 수행에 필요한 제어 신호들을 생성할 수 있다. 이러한 제어 신호들은 파이프라인의 후속 단계에서 명령어가 올바르게 실행되도록 제어하는 데 사용될 수 있다. 익스큐트 스테이지에서 익스큐트 회로는 명령어에 따라 실제로 연산을 수행할 수 있다. 만약 명령어가 피연산자(operand)를 필요로 한다면 레지스터(320)로부터 명령어를 읽어 올 수도 있다. 익스큐트 스테이지는 ALU(Arithmetic Logic Unit) 또는 다른 실행 유닛이 작동하여 명령어에 따른 적절한 연산을 처리할 수도 있다.
전술한 인스트럭션 사이클을 통해 명령어가 실행되면, 연산의 완료 이후 산출된 결과 데이터가 레지스터(320)에 저장될 수 있다. 레지스터에 저장된 결과값은 레지스터(320)에 먼저 저장되지만, 결국에는 코어(300) 외부의 목적지로 전달될 수 있다. 코어(300) 외부의 목적지는 예컨대 도 3에 도시된 기타 컴포넌트(350)(예: 외부 캐시, 메모리, 서보디네이트(subordinate) 등)일 수 있다.
도 3에 도시된 바와 같이 코어(300) 외부의 기타 컴포넌트(350)와 인터페이싱하기 위해 코어(300)는 로드-스토어 유닛(load-store unit; LSU)(310)을 포함할 수 있다. 레지스터(320)에 저장된 데이터 값을 코어(300) 외부의 목적지에 전달하기 위해서는 LSU(310)를 사용할 수 있다.
LSU(310)는 로드-스토어 엔진 또는 로드 엔진이라고 지칭될 수도 있다. 본 개시에서 언급된 LSU(310)라는 용어는 코어(300) 외부의 다른 컴포넌트(350)(예: 외부 캐시, 메모리, 서보디네이트 등)와 버스(bus)를 통해서 인터페이싱할 수 있는 개념을 총칭하는 것으로 이해될 수 있다.
한편, 도 3에 도시되지는 않았으나, 코어(300)는 내부 캐시(또는 로컬 캐시)를 더 포함할 수 있다. 내부 캐시는 레지스터(320)보다는 속도가 느리지만 더 큰 저장 공간을 제공할 수 있다. 또한, 내부 캐시는 외부 캐시보다는 속도가 빠르고 더 적은 저장 공간을 제공하는 저장소일 수 있다. LSU(310)는 소정 주소의 데이터를 레지스터로 로드(load)하거나 소정 주소에 데이터를 메모리로 스토어(store)하는 동작을 수행함에 있어서 외부 캐시나 메모리와 인터페이싱하기 전에 내부 캐시로부터 해당 데이터를 획득할 수 있는지 먼저 확인할 수 있다. 내부 캐시에서 해당 주소의 데이터가 히트(hit)된 경우에는 외부 캐시나 메모리와 인터페이싱하지 않더라도 내부 캐시의 해당 위치에 데이터를 저장하거나 그로부터 데이터를 읽어올 수 있다.
캐시는 코어(300)의 외부에도 존재할 수 있다. 이러한 외부 캐시는 LSU(310)와 버스를 통해 인터페이싱할 수 있다는 점에서 내부 캐시와 구별될 수 있다. 캐시가 내부 캐시인지 외부 캐시인지 여부는 트랜잭션을 개시하는 매니저의 관점에서 정의될 수 있다.
다만, 본 명세서에서 사용되는 캐시라는 용어는 내부 캐시 또는 외부 캐시를 특별히 구별하여 언급하지 않는 이상, 기술적으로 구현 가능한 범위 내에서는 이들 중 어느 하나로 한정하여 해석되지 않는다. 즉, 캐시는 특정 주소 위치에 대한 데이터 값의 복사본을 보유할 수 있는 모든 캐시, 버퍼 또는 기타 저장소 구조를 총칭할 수 있다.
이하에서는 도 1 내지 도 3을 함께 참조하여 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 설명한다.
도 1에 도시된 바와 같이 본 개시의 일 실시예에 따른 트랜잭션 처리 방법(100A)은 매니저가 특정 스레드의 제1 트랜잭션을 개시(initiate)하는 단계(S110)를 포함할 수 있다. 매니저(manager)라는 용어는 마스터(master)라는 용어와 혼용될 수 있으며, 트랜잭션을 시작하는 에이전트를 의미할 수 있다. 매니저와 대비되는 개념으로서 서보디네이트(subordinate)라는 용어가 사용될 수 있는데, 서보디네이트는 슬레이브(slaver)라는 용어와 혼용될 수 있으며, 서보디네이트는 요청(request)을 수신하고 응답하는 에이전트를 의미할 수 있다. 매니저는 서보디네이트와 통신하기 위해 트랜잭션을 개시한다. 일반적으로 트랜잭션은 여러 채널을 통해 매니저와 서보디네이트가 교환해야 할 정보를 필요로 한다. 즉 매니저와 서보디네이트가 서로 정보를 교환하기 위해 매니저에 의해 트랜잭션이 개시되는 것으로 이해될 수 있다.
제1 트랜잭션 개시 단계(S110)에 후속하여, 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환해야 하는지 여부가 판단(S120)될 수 있다. 이러한 판단 단계(S120)는, 예를 들어, ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 동일한지 여부를 판단하는 것을 포함할 수 있다. 가령, ISA는 프로세서 내의 레지스터와 동일한 사이즈의 명령어를 지원하는 경우가 일반적이지만, 레지스터 사이즈보다 더 큰 명령어를 지원하는 경우도 있다. 예컨대, 레지스터 사이즈가 4바이트(즉, 32비트)이면서 8바이트(즉, 64비트)의 명령어를 지원하는 경우가 있다. 또는 레지스터 사이즈가 8바이트(즉, 64비트)이면서 16바이트(즉, 128비트)의 명령어를 지원하는 경우도 있다. 이는 프로세서를 효율적으로 사용하기 위한 확장성을 제공하면서, 사용자/개발자로 하여금 광범위한 소프트웨어 개발 도구를 폭 넓게 지원할 수 있는 수단이기도 하다.
판단 단계(S120)에서 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환할 필요가 없다고 판단될 경우, 해당 제1 트랜잭션을 특별히 변환하지 않고도 서보디네이트 또는 캐시로 전달할 수 있다(S130). 예컨대, 앞서 설명한 예시의 경우, 만약 ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 동일하면, LSU(310)는 해당 트랜잭션을 특별히 변환하지 않고도 서보디네이트 또는 캐시로 전달할 수 있다.
예를 들어, 레지스터 사이즈가 8바이트이고 ISA 명령어에 부합하는 트랜잭션의 사이즈도 8바이트이면, 인스트럭션 사이클을 통해 실행된 ISA 명령어의 실행 결과를 LSU(310)가 캐시로 전달할 수 있다. 도 1에 도시된 예시적인 실시예에서는 판단 단계(S120)에서 전달 단계(S130)로 넘어가는 과정 사이에 어떠한 중간 단계도 도시되어 있지 않지만, 판단 단계(S120)와 전달 단계(S130) 사이에 익스큐트 스테이지 등과 같은 추가적인 단계들이 더 포함될 수도 있다.
만약 판단 단계(S120)에서의 판단 결과, 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환해야 한다고 판단한다면, 제1 트랜잭션은 복수의 제2 트랜잭션들로 변환될 수 있다(S141). 예를 들어, ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 상이한 경우(예: 전자가 후자보다 큰 경우)에는 해당 트랜잭션을 코어의 레지스터 사이즈에 부합하는 복수의 트랜잭션들로 변환할 수 있다.
변환 단계(S141)에 후속하여, LSU(310)는 복수의 제2 트랜잭션들을 소정의 인터리빙 비활성화 정보와 함께 서보디네이트 또는 캐시로 전달하는 단계(S142)를 수행할 수 있다. 한편, 복수의 제2 트랜잭션들은 불연속적으로 전달되지 않고, LSU(310)가 이들 복수의 제2 트랜잭션들을 연속적으로 서보디네이트 또는 캐시에 전달하도록 구성될 수 있다.
변환 단계(S141)는 디코드 회로에 의해 수행될 수 있다. 도 1에 명시적으로 도시되지는 않았으나, 디코드 회로에 의해 변환 단계(S141)가 수행된 이후이면서 LSU(310)에 의해 전달 단계(S142)가 수행되기 이전의 스테이지로서, 익스큐트 회로에 의해 수행되는 익스큐트 스테이지가 더 포함될 수 있다.
한편, 변환 단계(S141)의 수행 주체는 디코드 회로로 한정되지 않는다. 구현 방식에 따라 변환 단계(S141)와 전달 단계(S142)가 모두 LSU(310)에 의해 수행되도록 구성할 수도 있다.
인터리빙 비활성화 정보는 인터리빙 동작을 일시적으로 정지시키기 위해 사용되는 시그널링 정보이다. 즉, 본 개시의 일 실시예에 의하면, 복수의 제2 트랜잭션들이 제1 트랜잭션으로부터 변환되었으니 인터리빙을 일시적으로 정지하라는 신호를 인터리빙 비활성화 정보를 사용하여 전달할 수 있다. 예를 들어, 인터리빙 비활성화 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
본 개시의 실시예들에 따르면, 이러한 인터리빙 비활성화 정보(즉, 하나의 제1 트랜잭션이 여러 개의 제2 트랜잭션들로 변환되었으므로 이들을 한꺼번에 효율적으로 처리할 수 있도록 인터리빙을 일시 정지시키는 정보)를 LSU(310)가 다른 컴포넌트로 전달할 수 있다. 이렇게 함으로써 서보디네이트 또는 캐시와 같은 다른 컴포넌트는 이들 트랜잭션을 별개의 서로 무관한 트랜잭션으로 처리하지 않고 서로 관련된 트랜잭션으로 처리할 수 있는 이점이 있다. 예를 들어, 단일의 로드(load) 또는 스토어(store) 트랜잭션이 레지스터 사이즈에 맞게 여러 개의 트랜잭션으로 변환되고, 이들 변환된 트랜잭션을 LSU(310)가 서보디네이트 또는 캐시로 전달하는 경우, 인터리빙 기능이 일시적으로 비활성화 되기 때문에 여러 개의 트랜잭션을 각각 개별적으로 처리하지 않을 수 있다. 즉, 하나의 트랜잭션으로 재결합하는 과정에서 효율적으로 처리할 수 있는 이점이 있다.
도 2를 참조하여 인터리빙 비활성화 정보의 활용 방식에 대해 더욱 구체적으로 살펴보겠다. 서보디네이트 또는 캐시는 인터리빙 비활성화 정보를 수신했는지 여부를 판단할 수 있다(S150). 예컨대, AXI 사용자 비트(user bit)를 이용하여 인터리빙 비활성화 정보를 표현할 경우, 해당 비트가 1이라면(단, 이는 예시적인 것으로서 구현방식에 따라 변환이 있다는 사실을 0으로 표현할 수도 있음), 인터리빙 기능을 비활성화해야 한다는 정보를 전달받은 것으로 해석될 수 있다.
만약 인터리빙 비활성화 정보 확인 단계(S150)를 수행한 결과, 인터리빙을 비활성화하라는 정보가 수신되었다고 판단되면, 인터리빙 비활성화 정보를 수신한 서보디네이트 또는 캐시는 LSU(310)와의 인터페이싱을 위한 버스 상에서 인터리빙 기능을 일시적으로 정지(즉, 비활성화)시킬 수 있다. 그리고 복수의 제2 트랜잭션들에 관한 복수의 데이터 단위들(예컨대, 서보디네이트가 매니저에게 전달해야 할 정보를 나타내는 복수의 데이터 단위들로서 각각이 제2 트랜잭션과 연관되는 데이터 단위)을 LSU로 전달할 수 있다(S161).
복수의 데이터 단위들을 전달하는 단계(S161)는, 인터리빙 비활성화 정보를 전달받은 서보디네이트 또는 상기 캐시에 의해 복수의 데이터 단위들 중 적어도 일부를 LSU 내의 데이터 버퍼에 저장하는 단계를 포함할 수 있고, 여기서 복수의 데이터 단위들은 모두 동일한 스레드와 연관될 수 있다. 이러한 단계의 구체적인 동작 방식에 대해서는 도 5, 도 7 및 도 8을 참조하여 후술하기로 한다.
복수의 데이터 단위들을 전달받은 LSU는 이들 데이터 단위들을 결합할 수 있다(S162). 그리고 LSU(310)는 결합된 데이터 단위를 레지스터(320)(예: GPR)에 로딩하기 위해 전달할 수 있다(S180). 여기서, 상기 결합하는 단계(S162)는 LSU(310)의 데이터 결합 유닛(data merge unit)에 의해 수행될 수 있다.
그러나 이와 달리 만약 인터리빙 비활성화 정보 확인 단계(S150)를 수행한 결과, 인터리빙을 비활성화 해야 하는 상황이 아니라는 점을 나타낸다면(혹은 어떠한 변환 정보도 서보디네이트 또는 캐시로 전달되지 못한 경우라면), 서보디네이트 또는 캐시는 수신한 트랜잭션(즉, 이러한 트랜잭션은 단계 S130를 거쳐서 전달된 트랜잭션으로서 분할 변환되지 않은 트랜잭션임)에 대해서 별도의 인터리빙 비활성화에 관한 처리 없이 제1 트랜잭션에 관한 데이터 단위(예컨대, 서보디네이트가 매니저에게 전달해야 할 정보를 나타내는 데이터 단위로서 제1 트랜잭션과 연관되는 데이터 단위)를 LSU로 전달할 수 있다(S170). 그리고 LSU(310)는 수신한 데이터 단위를 레지스터(320)(예: GPR)에 로딩하기 위해 전달할 수 있다(S180).
도 3에 도시된 바와 같이, LSU(310)는 개별 트랜잭션에 관한 정보를 저장하고 각각의 트랜잭션을 위한 시그널링을 수행하기 위한 트랜잭션 정보 유닛(311), 복수의 제2 트랜잭션들에 관한 복수의 데이터 단위들을 일시적으로 저장하기 위한 데이터 버퍼 유닛(312), 그리고 복수의 제2 트랜잭션들에 관한 복수의 데이터 단위들을 결합하기 위한 데이터 결합 유닛(313)을 포함할 수 있다.
이하에서는 도 4 및 도 6을 참조하여, 인터리빙을 중지하지 않고 트랜잭션들을 처리하는 개념을 먼저 제시한다. 그리고 이와 비교하여 도 5, 도 7 및 도 8을 참조하여, 인터리빙을 중지하고 트랜잭션들을 처리하는 개념을 설명한다. 후자에 관한 개념(즉, 도 5 및 도 7을 참조한 설명)이 본 개시의 실시예들에 관한 설명으로 이해될 수 있으며, 본 명세서에서 전자에 관한 개념(즉, 도 4 및 도 6을 참조한 설명)은 본 개시의 실시예들에 대한 비교예로서 제시되었음을 이해할 수 있다.
도 4는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서와 비교하기 위한 비교예를 개념적으로 도시한 도면이다. 도 6은 도 4에 나타난 비교예에 따른 트랜잭션 처리 동작을 개념적으로 도시한 도면이다.
도 4에서 로드 엔진(410)은 본 개시의 실시예들에 따른 LSU(310)와 대응할 수 있다. 또한, 도 4의 트랜잭션 정보 유닛(411), 데이터 버퍼 유닛(412), 데이터 결합 유닛(413)은 각각 본 개시의 실시예들에 따른 트랜잭션 정보 유닛(311), 데이터 버퍼 유닛(312), 데이터 결합 유닛(313)과 대응할 수 있다.
인터리빙을 지원하는 버스 프로토콜(예: AXI Specification)에 따르면, 읽기(read)의 경우 스레드들 사이에 순서의 제약이 없고 각각의 스레드들에 대하여 데이터가 번갈아 가며 섞여서 전달될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 스레드 식별자(Thread ID)가 각각 R1, R2, R3인 스레드에 대해서 각각의 스레드마다 데이터가 번갈아 가며 섞여서 전달될 수 있다.
구체적으로 설명하자면, R1과 R3는 도 1의 단계(S141)에 따른 분할 변환이 이루어지는 스레드이고, R2는 그렇지 않은 스레드임을 가정한다. 예를 들어, R1을 위해서는 복수의 데이터 유닛 D11 및 D12가 전달되고, R2를 위해서는 하나의 데이터 유닛 D2가 전달되고, R3를 위해서는 복수의 데이터 유닛 D31 및 D32가 전달되는 경우를 가정하겠다. 인터리빙이 지원되는 상황이기 때문에, 도 6에 도시된 바와 같이 스레드 R1, R2, R3에 대해서 각각 데이터가 번갈아 가며 섞여서 전달될 수 있다.
이 경우, 로드 엔진(410)이 R1에 관한 D11을 먼저 수신했다고 하더라도, D12를 수신하기 전에는 R1에 대한 처리가 완료된 것이 아니다. 그럼에도 불구하고 인터리빙 기능을 지원하기 때문에, 다른 데이터 유닛들(D31, D2)이 로드 엔진(410)으로 수신될 수 있다. 따라서, D12에 비해 먼저 수신된 D11은 로드 엔진(410) 내에서 D12가 수신되어 D11과 결합하기 전까지 별도의 버퍼(412)에 저장되어야 한다. 전술된 바와 같이, 여러 개의 트랜잭션으로 변환된 트랜잭션에 대해서는 로드 엔진(410)이 이들에 대해 전달받은 데이터 유닛을 전부 합쳐서 재변환(결합)하여 내부 동작을 해야 하기 때문이다. 결국, 선수신된 데이터 유닛(예: D11)은 마지막 데이터 유닛(예: D12)이 수신되기 전까지 데이터 버퍼 유닛(412)에 저장되어야 한다.
그런데 로드 엔진(410)은 복수의 트랜잭션들을 처리해야 하고, 이들 트랜잭션 사이에는 서로 순서 관계가 없기 때문에 트랜잭션을 식별하는 스레드 식별자(Thread ID)마다 선수신된 데이터 유닛을 저장하기 위한 버퍼 공간이 따로 마련되어야 한다. 즉, 도 4에 도시된 바와 같이, 트랜잭션 정보 유닛(411)에 저장된 스레드 식별자들(ID0 내지 ID7)의 개수만큼 데이터 버퍼 유닛(412)도 저장 공간을 따로 구비해야 한다. 스레드 식별자의 개수가 증가할수록 칩 설계에 필요한 공간과 복잡도는 더욱 증가할 수밖에 없다. 도 4에 도시된 바와 같이 스레드 식별자들(ID0 내지 ID7)마다 데이터 버퍼 유닛(412)의 저장 공간이 더 필요함은 당연하거니와, 데이터 버퍼 유닛(412) 내에서도 특정 저장 공간을 선택적으로 사용하기 위한 선택기(예: MUX 또는 셀렉터)가 더 구비되어야 하는 문제도 있다.
이와 비교하여, 본 개시의 실시예들에 따른 트랜잭션 처리 방법은 인터리빙 비활성화 정보를 활용함으로써 데이터 버퍼 유닛(312)의 저장 공간을 효율적으로 설계할 수 있는 장점이 있다. 이하에서는 도 5, 도 7 및 도 8을 참조하여 도 4 및 도 6에 도시된 비교예의 단점을 극복할 수 있는 본 개시의 실시예들에 따른 트랜잭션 처리 기법을 설명한다.
도 5는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다. 도 7 및 도 8은 도 5에 나타난 본 개시의 일 실시예에 따른 트랜잭션 처리 동작을 개념적으로 도시한 도면이다.
도 5에서 로드 엔진(510)은 앞서 도 3을 참조하여 설명된 LSU(310)와 대응할 수 있다. 또한, 도 5의 트랜잭션 정보 유닛(511), 데이터 버퍼 유닛(512), 데이터 결합 유닛(513)은 각각 도 3에 나타난 본 개시의 실시예들에 따른 트랜잭션 정보 유닛(311), 데이터 버퍼 유닛(312), 데이터 결합 유닛(313)과 대응할 수 있다.
본 개시의 실시예들에 따르면, 로드 엔진(510)은 서보디네이트 또는 캐시(550)로 하여금 인터리빙을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성될 수 있다. 인터리빙 비활성화 정보가 전달되면, 버스를 통한 인터리빙 동작은 일시 정지될 수 있다. 이 경우 로드 엔진(510)이 서보디네이트 또는 캐시(550)로부터 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계는, 인터리빙 비활성화 정보를 전달받은 서보디네이트 또는 캐시(550)에 의해 복수의 데이터 단위들 중 적어도 일부를 로드 엔진(510) 내의 데이터 버퍼(512)에 저장할 수 있다. 여기서, 복수의 데이터 단위들은 모두 동일한 스레드와 연관될 수 있다.
예를 들어, 도 7에 도시된 바와 같이, 스레드 식별자(Thread ID)가 각각 R1, R2, R3인 스레드에 대해서 각각의 스레드마다 데이터가 전달되는 상황을 가정할 수 있다. 도 7에 나타난 바와 같이, 하나의 스레드에 대한 복수의 데이터 단위들은 모두 순차적으로 전달될 수 있다.
구체적으로 설명하자면, R1과 R3는 도 1의 단계(S141)에 따른 분할 변환이 이루어지는 스레드이고, R2는 그렇지 않은 스레드임을 가정한다. 예를 들어, R1을 위해서는 복수의 데이터 유닛 D11 및 D12가 전달되고, R2를 위해서는 하나의 데이터 유닛 D2가 전달되고, R3를 위해서는 복수의 데이터 유닛 D31 및 D32가 전달되는 경우를 가정하겠다. 인터리빙이 지원되지 않는 상황이기 때문에, 도 7에 도시된 바와 같이 스레드 R1, R2, R3에 대해서 각각의 스레드에 대한 데이터 전달이 완료되기 전까지는 다른 스레드에 관한 데이터가 번갈아 가며 섞여서 전달될 수 없다.
이 경우, R1이 D11을 먼저 수신한 상황에서 D12를 수신하기 전에 다른 데이터 유닛들(D2, D31, D32)은 로드 엔진(510)으로 수신될 수 없다. 인터리빙 비활성화 정보에 의해 인터리빙 기능이 일시적으로 정지되었기 때문이다.
도 4에 도시된 비교예에서는 로드 엔진(410) 내에 복수의 스레드 식별자들 전부를 위한 버퍼(412)를 구비하였지만, 이와 달리 도 6에 도시된 본 개시의 일 실시예에서는 로드 엔진(510)에 복수의 스레드 식별자들 전부를 위한 버퍼는 불필요 하다. 로드 엔진(510)에 의해 서보디네이트 또는 캐시(550)로 전달되기 전에 여러 개의 트랜잭션으로 변환된 개별 트랜잭션에 대해서는, 로드 엔진(510)이 전달받은 데이터 유닛을 재변환(결합)해야 하기 때문에 적어도 하나의 데이터 버퍼 유닛(512)이 필요할 뿐이다. 즉, 복수의 스레드 식별자를 위한 버퍼는 불필요하고, 하나의 스레드 식별자를 위한 버퍼만 필요할 수 있다.
인터리빙이 비활성화된 상태에서는, 특정 스레드 식별자(예: R1)에 대한 마지막 데이터 유닛(예: D12)이 수신되어 데이터 결합 유닛(513)에서의 결합이 수행되기 전까지, 데이터 버퍼 유닛(512)은 오로지 해당 스레드 식별자(예: R1)와 관련하여 선수신된 데이터 유닛(예: D11)만 버퍼(512)에 저장하면 된다.
따라서, 본 개시의 일 실시예에 따르면, 트랜잭션 정보 유닛(511)에 저장된 스레드 식별자들(ID0 내지 ID7)의 개수와 무관하게, 데이터 버퍼 유닛(512)은 적어도 하나의 스레드 식별자를 위한 저장 공간만 포함할 수 있다. 그러므로 본 개시의 일 실시예에 따르면 스레드 식별자의 개수가 증가하더라도 칩 설계에 필요한 공간과 복잡도는 더 이상 증가할 필요가 없으므로, 내부 데이터 버퍼를 위한 영역(area) 및 전력(power)를 최적화할 수 있고, 전체적인 컴퓨팅 성능을 개선할 수 있는 장점이 있다.
본 개시의 일 실시예에 따르면, 로드 엔진(510)이 복수의 데이터 단위들을 결합하는 단계는 데이터 결합 유닛(513)에 의해 수행될 수 있다. 예컨대, 인터리빙 기능이 일시적으로 정지된 동안, 하나의 스레드(R1)와 연관된 복수의 데이터 단위들(D11, D12) 중 마지막 데이터 단위(D12)가 로드 엔진(510)에 의해 수신되면 로드 엔진(510)은 이미 데이터 버퍼(512)에 저장되어 있는 데이터 단위(들)(D11)을 마지막 데이터 단위(D12)와 결합할 수 있다. 한편, 마지막 데이터 단위(D12)가 수신되기 전까지 미리 저장된 데이터 단위(D11)는 1개일 수도 있으나, 이는 예시적인 것일 뿐이며 복수의 데이터 단위들이 미리 저장되어 있을 수도 있다. 예컨대, 구현 방식에 따라, 데이터 단위 D11, D12, D13, ?? D1N이 모두 동일한 스레드 식별자와 관련된 것일 수 있다.
본 개시의 일 실시예에 따르면, 인터리빙 기능은 비활성화된 이후에 다시 재활성화될 수도 있다. 예컨대, 한번 비활성화된 인터리빙 기능이 시스템을 사용하는 동안 종국적으로 계속해서 사용 불가한 것은 아님에 주의해야 한다. 인터리빙 기능을 재활성화하는 동작의 예시에 대해서는 도 8을 참조하여 설명하기로 한다.
예를 들어, 로드 엔진(510)은 복수의 데이터 단위들을 결합하여 레지스터(520)(예: GPR)로 결합된 데이터를 전달한 이후에, 서보디네이트 또는 캐시(550)로 하여금 인터리빙을 다시 활성화하도록 할 수 있다. 가령, 도 2의 결합 단계(S162) 또는 레지스터 로딩 단계(S180) 이후에, LSU(310)(또는 로드 엔진(510))가 서보디네이트 또는 캐시(350, 550)로 하여금 인터리빙을 다시 활성화하도록 하는 인터리빙 활성화 정보를 전달하도록 구성될 수 있다.
인터리빙 활성화 정보는 인터리빙 비활성화 정보와 동일 또는 유사한 방식으로 시그널링될 수 있다. 예를 들어, 인터리빙 활성화 정보(또는 인터리빙 재활성화 정보)는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
도 8에서도, R1과 R3는 도 1의 단계(S141)에 따른 분할 변환이 이루어지는 스레드이고, R2는 그렇지 않은 스레드임을 가정한다. 예를 들어, R1을 위해서는 복수의 데이터 유닛 D11 및 D12가 전달되고, R2를 위해서는 하나의 데이터 유닛 D2가 전달되고, R3를 위해서는 복수의 데이터 유닛 D31 및 D32가 전달되는 경우를 가정하겠다.
도 8에 도시된 바와 같이, 스레드 식별자 R1에 대해서 복수의 데이터 유닛 D11과 D12가 모두 전달되어 결합되면, 그 이후 인터리빙 활성화 정보가 시그널링될 수 있다. 그리하여 LSU(310)와 서보디네이트 또는 캐시(350) 사이의 버스에서의 인터리빙 기능은 다시 활성화될 수 있다.
이를테면, R1에 대한 처리 이후에는 인터리빙 기능이 다시 활성화될 수 있다. 그리하여 스레드 식별자 R2에 대한 처리가 시작될 때에는 인터리빙 기능이 활성화된 상태에서 R2의 요청이 LSU(310)를 통해 서보디네이트 또는 캐시(350)로 전달될 수 있다. 그리고 R2에 대한 처리가 완료되지 않은 상황에서 추가적으로 스레드 식별자 R3의 요청이 LSU(310)를 통해 서보디네이트 또는 캐시(350)로 전달되는 상황을 가정한다.
만약 R3의 첫번째 데이터 유닛(D31)에 비하여 R2가 먼저 자신의 데이터 유닛(D2)을 전달받게 되면, 도 7에 도시된 예시와 같은 방식으로 데이터의 전송 및 결합은 순차적으로 처리되는 것으로 이해될 수 있다.
그러나 만약 R2의 데이터 유닛(D2)에 비하여 R3의 첫번째 데이터 유닛(D31)이 먼저 전달되면, 도 8에 도시된 예시와 같은 방식으로 데이터의 전송 및 결합이 이루어질 수 있다. D2에 비하여 D31이 먼저 전달될 경우, D31을 처리하는 R3에 의하여 인터리빙 기능은 비활성화 되어야 한다. 이 경우 인터리빙 기능이 비활성화된 상태이기 때문에 D31과 D32의 사이에는 D2가 전달될 수 없다. D32의 수신 이후에 D31과 D32의 결합이 완료되어 R3에 대해 레지스터(320)로의 로딩이 완료되어야, 그 이후에 D2에 관한 처리가 수행될 수 있다.
요약하자면, R2는 분할된 트랜잭션을 처리하지 않기 때문에 R2의 처리가 진행되는 동안은 인터리빙이 활성화되어도 무방하나, R2의 처리가 완료되지 않은 사이에 R3의 처리가 개시되고 R3의 첫번째 데이터 유닛 D31이 수신되면 D32가 수신되기 전까지 D2는 수신될 수 없음을 이해할 수 있다.
이상 도 1 내지 도 8을 참조하여 본 개시의 실시예들에 따른 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 설명했다. 이들 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행될 수 있다. 여기서 '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신, 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA), DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있음은 앞서 설명한 바와 같다. 또한, 프로세서는 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)일 수도 있다. 그리고, 프로세서는 도 3을 참조하여 설명된 컴포넌트들 전부 또는 이들 중 적어도 일부를 포함할 수 있다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 프로그램가능 반도체 소자를 포함하는 전자 장치일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (12)

  1. 복수의 스레드(thread)들 중 각각의 스레드에 관한 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법으로서 - 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행됨 -,
    상기 복수의 스레드들 중 적어도 하나의 스레드에 관한 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 단계;
    상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 복수의 제2 트랜잭션들을 서보디네이트(subordinate) 또는 캐시(cache)로 전달하는 단계;
    상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계; 및
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계
    를 포함하되,
    상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙(interleaving)을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성된, 트랜잭션 처리 방법.
  2. 제1항에 있어서,
    상기 인터리빙 비활성화 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달되는, 트랜잭션 처리 방법.
  3. 제1항에 있어서,
    상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시는 상기 복수의 데이터 단위들을 상기 적어도 하나의 스레드 외의 다른 스레드에 대한 데이터가 섞이지 않도록 상기 LSU로 순차적으로 전달하도록 구성된, 트랜잭션 처리 방법.
  4. 제1항에 있어서,
    상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계는, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시에 의해 상기 복수의 데이터 단위들 중 적어도 일부를 상기 LSU 내의 데이터 버퍼에 저장하는 단계 - 상기 복수의 데이터 단위들은 모두 동일한 스레드와 연관됨 - 를 포함하는, 트랜잭션 처리 방법.
  5. 제4항에 있어서,
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계는, 상기 복수의 데이터 단위들 중 마지막 데이터 단위가 상기 LSU에 의해 수신되면 상기 LSU가 상기 마지막 데이터 단위 및 상기 데이터 버퍼에 저장되어 있는 데이터 단위들을 결합하는 단계를 포함하는, 트랜잭션 처리 방법.
  6. 제1항에 있어서,
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계 이후에, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙을 다시 활성화하도록 하는 인터리빙 활성화 정보를 전달하도록 구성된, 트랜잭션 처리 방법.
  7. 복수의 스레드들 중 각각의 스레드에 관한 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 수행하는 프로세서로서,
    상기 프로세서는 적어도 하나의 코어를 포함하고,
    상기 방법은,
    상기 복수의 스레드들 중 적어도 하나의 스레드에 관한 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 단계;
    상기 코어의 로드-스토어 유닛(LSU)에 의해 상기 복수의 제2 트랜잭션들을 서보디네이트(subordinate) 또는 캐시(cache)로 전달하는 단계;
    상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계; 및
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계
    를 포함하되,
    상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙(interleaving)을 비활성화하도록 하는 인터리빙 비활성화 정보를 더 전달하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
  8. 제7항에 있어서,
    상기 인터리빙 비활성화 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달되는, 트랜잭션 처리 방법을 수행하는 프로세서.
  9. 제7항에 있어서,
    상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시는 상기 복수의 데이터 단위들을 상기 적어도 하나의 스레드 외의 다른 스레드에 대한 데이터가 섞이지 않도록 상기 LSU로 순차적으로 전달하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
  10. 제7항에 있어서,
    상기 LSU가 상기 서보디네이트 또는 상기 캐시로부터 상기 제2 트랜잭션들에 관한 복수의 데이터 단위들을 전달받는 단계는, 상기 인터리빙 비활성화 정보를 전달받은 상기 서보디네이트 또는 상기 캐시에 의해 상기 복수의 데이터 단위들 중 적어도 일부를 상기 LSU 내의 데이터 버퍼에 저장하는 단계 - 상기 복수의 데이터 단위들은 모두 동일한 스레드와 연관됨 - 를 포함하는, 트랜잭션 처리 방법을 수행하는 프로세서.
  11. 제10항에 있어서,
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계는, 상기 복수의 데이터 단위들 중 마지막 데이터 단위가 상기 LSU에 의해 수신되면 상기 LSU가 상기 마지막 데이터 단위 및 상기 데이터 버퍼에 저장되어 있는 데이터 단위들을 결합하는 단계를 포함하는, 트랜잭션 처리 방법을 수행하는 프로세서.
  12. 제7항에 있어서,
    상기 LSU가 상기 복수의 데이터 단위들을 결합하는 단계 이후에, 상기 LSU는 상기 서보디네이트 또는 상기 캐시로 하여금 인터리빙을 다시 활성화하도록 하는 인터리빙 활성화 정보를 전달하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
KR1020230093167A 2023-07-18 2023-07-18 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 KR102639415B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230093167A KR102639415B1 (ko) 2023-07-18 2023-07-18 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230093167A KR102639415B1 (ko) 2023-07-18 2023-07-18 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Publications (1)

Publication Number Publication Date
KR102639415B1 true KR102639415B1 (ko) 2024-02-23

Family

ID=90041746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230093167A KR102639415B1 (ko) 2023-07-18 2023-07-18 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Country Status (1)

Country Link
KR (1) KR102639415B1 (ko)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100662804B1 (ko) * 2006-10-09 2006-12-29 피앤피네트워크 주식회사 디인터리빙 장치
KR20090025295A (ko) * 2006-06-30 2009-03-10 인텔 코오퍼레이션 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
KR20100016347A (ko) * 2007-05-10 2010-02-12 프리스케일 세미컨덕터, 인크. 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령
WO2012020505A1 (ja) * 2010-08-13 2012-02-16 富士通株式会社 メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法
KR20150106657A (ko) * 2014-03-12 2015-09-22 삼성전자주식회사 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US20180067762A1 (en) * 2015-06-26 2018-03-08 International Business Machines Corporation Multithreaded transactions
KR20190067088A (ko) * 2017-12-06 2019-06-14 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스
KR20230075480A (ko) * 2020-09-30 2023-05-31 어드밴스드 마이크로 디바이시즈, 인코포레이티드 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090025295A (ko) * 2006-06-30 2009-03-10 인텔 코오퍼레이션 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
KR100662804B1 (ko) * 2006-10-09 2006-12-29 피앤피네트워크 주식회사 디인터리빙 장치
KR20100016347A (ko) * 2007-05-10 2010-02-12 프리스케일 세미컨덕터, 인크. 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령
WO2012020505A1 (ja) * 2010-08-13 2012-02-16 富士通株式会社 メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法
KR20150106657A (ko) * 2014-03-12 2015-09-22 삼성전자주식회사 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US20180067762A1 (en) * 2015-06-26 2018-03-08 International Business Machines Corporation Multithreaded transactions
KR20190067088A (ko) * 2017-12-06 2019-06-14 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스
KR20230075480A (ko) * 2020-09-30 2023-05-31 어드밴스드 마이크로 디바이시즈, 인코포레이티드 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서

Similar Documents

Publication Publication Date Title
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
US10949249B2 (en) Task processor
US20170357536A1 (en) Task processing device
US9405552B2 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US20140115272A1 (en) Deadlock-Avoiding Coherent System On Chip Interconnect
JP2001521216A (ja) マルチスレッド式プロセッサ・システムでのスレッド切替え制御
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
TWI334537B (en) An apparatus for data transfer and a computer system thereof
JPH03177924A (ja) 複数のマイクロプログラム制御式処理装置を備えるプロセッサ
JPH07175666A (ja) データプロセッサおよびその割込み要求処理方法
JPH06314205A (ja) 割り込み源間の優先順位確立方法及びデータ処理システム
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
TWI668574B (zh) 服務品質序數修正之計算裝置、系統單晶片及方法
JPH0135367B2 (ko)
JP4585647B2 (ja) パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
US20150268985A1 (en) Low Latency Data Delivery
KR102639415B1 (ko) 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서
US20170147345A1 (en) Multiple operation interface to shared coprocessor
JPH02306361A (ja) マイクロプロセッサ
JP2023070069A (ja) 仮想マシンにおけるユーザレベル割り込み
US10983932B2 (en) Processor and information processing apparatus
WO2021037124A1 (zh) 一种任务处理的方法以及任务处理装置
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
KR19980034568A (ko) 마이크로 프로세서의 버스 인터페이스 유닛
KR102619406B1 (ko) 메모리 액세스 장치 및 이를 이용하여 코어를 프로그래밍 엔진에 할당하기 위한 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant