KR102642962B1 - 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 - Google Patents
프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 Download PDFInfo
- Publication number
- KR102642962B1 KR102642962B1 KR1020230093168A KR20230093168A KR102642962B1 KR 102642962 B1 KR102642962 B1 KR 102642962B1 KR 1020230093168 A KR1020230093168 A KR 1020230093168A KR 20230093168 A KR20230093168 A KR 20230093168A KR 102642962 B1 KR102642962 B1 KR 102642962B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- transaction
- transactions
- core
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 title claims abstract description 16
- 238000006243 chemical reaction Methods 0.000 claims abstract description 43
- 238000003672 processing method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 description 25
- 230000014509 gene expression Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006798 recombination Effects 0.000 description 4
- 238000005215 recombination Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 개시의 한 측면으로서, 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법이 개시된다. 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행되는 것으로서, 명령어 집합 구조(instruction set architecture; ISA)에 따른 명령어에 부합하는 제1 트랜잭션을 상기 코어의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환하는 단계; 및 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 복수의 제2 트랜잭션들을 캐시(cache)로 전달하는 단계를 포함하되, 상기 LSU는 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 변환 정보를 상기 캐시로 더 전달하도록 구성될 수 있다.
Description
본 개시는 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서에 관한 것이다.
ISA(Instruction set architecture)란 프로세서가 인식해서 기능을 이해하고 실행할 수 있는 명령어 집합 구조를 말한다. ISA는 어셈블리 언어 프로그래머나 컴파일러 작성자가 보는 프로세서의 프로그래밍 모델과 대략 동일하다. ISA는 명령어(instructions), 실행 모델(execution model), 프로세서 레지스터(processor register), 주소(address) 및 데이터 형식(data format) 등을 포함한다. ISA는 최하위 레벨의 프로그래밍 인터페이스로 이해될 수 있으며, ISA를 물리적으로 구현하는 방법은 다양하다. 예를 들어, 인텔의 펜티엄과 AMD의 애슬론은 동일한 ISA를 서로 다른 마이크로아키텍처로 구현할 수 있다.
ISA는 프로세서 내의 레지스터와 동일한 사이즈의 명령어를 지원하는 경우가 일반적이다. 예컨대, 레지스터 사이즈(즉, 레지스터 데이터 폭(register data width))가 8바이트(byte)라면 ISA의 명령어도 8바이트까지만 지원하는 상황의 아키텍처가 일반적이다. 그러나 ISA가 레지스터 사이즈보다 더 큰 명령어를 지원하는 경우도 있으며, 이를테면 레지스터 사이즈는 8바이트이지만 ISA의 명령어는 16바이트를 지원하도록 구성된 아키텍처도 존재할 수 있다.
후자의 경우(즉, 아키텍처가 레지스터 사이즈보다 큰 ISA 명령어를 지원하는 경우), 하나의 트랜잭션(transaction)을 레지스터 사이즈에 맞게 여러 개의 트랜잭션으로 변환하여 프로세서 내에서 처리하는 과정을 거치게 된다. 그러나 이들 여러 개의 트랜잭션들은 다시 하나의 트랜잭션으로 재변환하는 과정이 보장되지 않으므로, 여러 개의 변환된 트랜잭션들은 재변환 과정을 거치지 않은 채 독립적인 개별 트랜잭션으로 취급된다.
코어의 로드-스토어 유닛(load-store unit; LSU)은 코어의 레지스터와 메모리 사이에서 데이터를 전달하도록 구성된 컴포넌트이다. 메모리에 데이터를 저장하는 것을 스토어(store)라고 하고, 메모리로부터 데이터를 불러와서 레지스터로 취출하는 것을 로드(load)라고 할 수 있다. LSU를 보다 범용적인 측면에서 보자면, LSU는 코어가 다른 컴포넌트(예: 캐시(cache), 메모리(memory) 또는 버스(bus)를 통해 통신하는 서보디네이트(subordinate) 등)와 인터페이싱할 수 있도록 구성된 코어의 컴포넌트라고 이해할 수 있다.
만약, ISA 명령어에 부합하는 하나의 트랜잭션이 레지스터 사이즈에 부합하는 여러 개의 트랜잭션으로 변환된 이후에 LSU가 다른 컴포넌트에게 이들 변환된 트랜잭션을 전달하면, 다른 컴포넌트는 트랜잭션들이 애초에 하나의 트랜잭션에서 유래했다는 점을 알 수 없다. 그렇기 때문에 다른 컴포넌트는 이들 트랜잭션을 별개의 서로 무관한 트랜잭션으로 처리한다. 예를 들어, 단일의 로드 또는 스토어 트랜잭션이 레지스터 사이즈에 맞게 여러 개의 트랜잭션으로 변환되고, 이들 변환된 트랜잭션을 LSU가 캐시로 전달하는 경우, 캐시는 변환이 이루어졌는지 여부를 알 수 없기 때문에 여러 개의 트랜잭션을 각각 개별적으로 처리하게 된다. 그러나 이들 트랜잭션을 개별적으로 처리하는 것은 비효율적이다.
프로세서의 개발은 제한된 물리적 공간에서 다수의 기능을 최대한 효율적으로 집약적으로 구성하는 방향으로 전개되고 있다. 따라서 다수의 트랜잭션들을 종래기술에 따라 처리하는 것은, 프로세서 개발에 있어서 제한된 자원을 효율적으로 활용하지 못하는 문제점으로 귀결되어 왔다.
본 개시는 ISA 명령어에 부합하는 단일 트랜잭션이 코어의 레지스터 사이즈에 부합하는 복수의 트랜잭션들로 변환되는 시나리오에서, 복수의 트랜잭션들을 캐시가 효율적으로 처리하는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 단일 트랜잭션이 복수의 트랜잭션들로 변환될 경우 내부 캐시가 효율적으로 이들 트랜잭션들을 처리할 수 있도록 LSU로부터 내부 캐시로 변환 정보를 시그널링하는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 코어의 내부 캐시가 코어 외부의 다른 컴포넌트와 버스를 통해 데이터를 송수신할 때, 버스의 데이터 폭이 코어의 레지스터 사이즈보다 큰 경우 버스의 데이터 폭에 최적화된 하나의 트랜잭션으로 복수의 트랜잭션들을 결합함으로써 컴퓨팅 성능을 개선할 수 있는 기법을 제공하는 것을 기술적 과제로 한다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 한 측면으로서, 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법이 개시된다. 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행되는 것으로서, 명령어 집합 구조(instruction set architecture; ISA)에 따른 명령어에 부합하는 제1 트랜잭션을 상기 코어의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환하는 단계; 및 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 복수의 제2 트랜잭션들을 캐시(cache)로 전달하는 단계를 포함하되, 상기 LSU는 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 변환 정보를 상기 캐시로 더 전달하도록 구성될 수 있다.
일 실시예에서, 상기 변환 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
일 실시예에서, 상기 LSU는 상기 복수의 제2 트랜잭션들을 상기 캐시로 연속적으로 전달하도록 구성될 수 있다.
일 실시예에서, 상기 방법은, 상기 변환 정보가 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었음을 나타내는 경우, 상기 변환 정보를 수신한 상기 캐시에 의해 상기 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 캐시는 하나의 코어에 의해서만 사용되는 내부 캐시이고, 상기 결합하는 단계는 상기 캐시의 캐시 컨트롤러에 의해 수행될 수 있다.
일 실시예에서, 상기 캐시가 사용하는 버스(bus)의 데이터 폭은 상기 코어의 레지스터 사이즈보다 클 수 있다.
일 실시예에서, 상기 제3 트랜잭션은 상기 캐시가 사용하는 상기 버스의 데이터 폭에 부합하도록 구성될 수 있다.
본 개시의 한 측면으로서, 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 수행하는 프로세서가 개시된다. 상기 프로세서는 적어도 하나의 코어를 포함하고, 상기 방법은, 명령어 집합 구조(ISA)에 따른 명령어에 부합하는 제1 트랜잭션을 상기 코어의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환하는 단계; 및 상기 코어의 로드-스토어 유닛(LSU)에 의해 상기 복수의 제2 트랜잭션들을 캐시로 전달하는 단계를 포함하되, 상기 LSU는 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 변환 정보를 상기 캐시로 더 전달하도록 구성될 수 있다.
일 실시예에서, 상기 변환 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다.
일 실시예에서, 상기 LSU는 상기 복수의 제2 트랜잭션들을 상기 캐시로 연속적으로 전달하도록 구성될 수 있다.
일 실시예에서, 상기 방법은, 상기 변환 정보가 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었음을 나타내는 경우, 상기 변환 정보를 수신한 상기 캐시에 의해 상기 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 캐시는 하나의 코어에 의해서만 사용되는 내부 캐시이고, 상기 결합하는 단계는 상기 캐시의 캐시 컨트롤러에 의해 수행될 수 있다.
일 실시예에서, 상기 캐시가 사용하는 버스(bus)의 데이터 폭은 상기 코어의 레지스터 사이즈보다 클 수 있다.
일 실시예에서, 상기 제3 트랜잭션은 상기 캐시가 사용하는 상기 버스의 데이터 폭에 부합하도록 구성될 수 있다.
본 개시의 다양한 실시예들에 의하면, ISA 명령어에 부합하는 단일 트랜잭션이 코어의 레지스터 사이즈에 부합하는 복수의 트랜잭션들로 변환된 경우 이를 캐시가 효율적으로 처리하는 기법을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 단일 트랜잭션이 복수의 트랜잭션들로 변환된 경우 이를 캐시가 효율적으로 처리할 수 있도록 변환 정보를 시그널링하는 기법을 제공할 수 있다.
본 개시의 다양한 실시예들에 의하면, 캐시가 다른 컴포넌트와 데이터를 송수신할 때 사용하는 버스의 데이터 폭이 코어의 레지스터 사이즈보다 큰 경우, 캐시가 복수의 트랜잭션들을 버스의 데이터 폭에 최적화된 트랜잭션으로 결합함으로써 컴퓨팅 성능을 개선할 수 있는 기법을 제공할 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다.
도 2는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다.
도 3은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다.
도 4는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 과정을 개념적으로 도시한 도면이다.
도 5는 종래기술에 따른 트랜잭션 처리 방법에 있어서 복수의 제2 트랜잭션들을 재결합하지 않고 버스를 통해 전송하는 과정을 개념적으로 도시한 도면이다.
도 6은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 과정을 개념적으로 도시한 도면이다.
도 7은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 제3 트랜잭션을 버스를 통해 전송하는 과정을 개념적으로 도시한 도면이다.
도 2는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 도시한 순서도이다.
도 3은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 수행하는 프로세서를 개념적으로 도시한 도면이다.
도 4는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 과정을 개념적으로 도시한 도면이다.
도 5는 종래기술에 따른 트랜잭션 처리 방법에 있어서 복수의 제2 트랜잭션들을 재결합하지 않고 버스를 통해 전송하는 과정을 개념적으로 도시한 도면이다.
도 6은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 과정을 개념적으로 도시한 도면이다.
도 7은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 제3 트랜잭션을 버스를 통해 전송하는 과정을 개념적으로 도시한 도면이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(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을 참조하여 일반적으로 프로세서에서 ISA 명령어를 처리하는 과정에 대해서 설명한다. 참고로, 도 3은 본 개시의 예시적인 실시예들을 설명하기 위하여 프로세서 내의 코어(300)에 포함되는 컴포넌트들 중 일부만 도시한 것일 수 있다. 따라서, 도 3에 명시적으로 도시된 컴포넌트들 외에 코어(300)에 다른 컴포넌트들이 더 포함될 수 있음은 당연하다.
프로세서가 명령어를 수행하기 위해서는 일반적으로 인스트럭션 사이클(instruction cycle)이라고 불리는 과정을 거친다. 인스트럭션 사이클은 페치-디코드-익스큐트 사이클(fetch-decode-execute cycle)이라고도 불린다. 페치 스테이지에서 페치 회로(310)는 코어(300)가 실행해야 할 ISA 명령어를 가져온다. 예컨대, 페치 회로(310)는 프로그램 카운터(PC)를 입력으로 사용하여 명령어를 읽어올 수 있다. 디코드 스테이지에서는 디코도 회로(320)가 명령어를 해석하여 어떤 연산이 수행되어야 하는지 결정하고, 연산의 수행에 필요한 제어 신호들을 생성할 수 있다. 이러한 제어 신호들은 파이프라인의 후속 단계에서 명령어가 올바르게 실행되도록 제어하는 데 사용될 수 있다. 익스큐트 스테이지에서 익스큐트 회로(330)는 명령어에 따라 실제로 연산을 수행할 수 있다. 만약 명령어가 피연산자(operand)를 필요로 한다면 레지스터로부터 명령어를 읽어 올 수도 있다. 익스큐트 스테이지는 ALU(Arithmetic Logic Unit) 또는 다른 실행 유닛이 작동하여 명령어에 따른 적절한 연산을 처리할 수도 있다.
전술한 인스트럭션 사이클을 통해 명령어가 실행되면, 연산의 완료 이후 산출된 결과 데이터가 레지스터에 저장될 수 있다. 레지스터에 저장된 결과값은 레지스터에 먼저 저장되지만, 결국에는 코어(300) 외부의 목적지로 전달될 수 있다. 코어(300) 외부의 목적지는 예컨대 도 3에 도시된 기타 컴포넌트(400)(예: 외부 캐시, 메모리, 서보디네이트(subordinate) 등)일 수 있다.
도 3에 도시된 바와 같이 코어(300) 외부의 기타 컴포넌트(400)와 인터페이싱하기 위해 코어(300)는 로드-스토어 유닛(load-store unit; LSU)(340)을 포함할 수 있다. 레지스터에 저장된 데이터 값을 코어(300) 외부의 목적지에 전달하기 위해서는 LSU(340)를 사용할 수 있다.
LSU(340)는 로드-스토어 엔진 또는 로드 엔진이라고 지칭될 수도 있다. 본 개시에서 언급된 LSU(340)라는 용어는 코어(300) 외부의 다른 컴포넌트(400)(예: 외부 캐시, 메모리, 서보디네이트 등)와 버스(bus)를 통해서 인터페이싱할 수 있는 개념을 총칭하는 것으로 이해될 수 있다.
한편, 도 3에 도시된 바와 같이 코어(300)는 내부 캐시(350)를 더 포함할 수 있다. 내부 캐시(350)는 레지스터보다는 속도가 느리지만 더 큰 저장 공간을 제공할 수 있다. 또한, 내부 캐시(350)는 외부 캐시보다는 속도가 빠르고 더 적은 저장 공간을 제공하는 저장소일 수 있다.
LSU(340)는 소정 주소의 데이터를 레지스터로 로드(load)하거나 소정 주소에 데이터를 메모리로 스토어(store)하는 동작을 수행함에 있어서 외부 캐시나 메모리와 인터페이싱하기 전에 내부 캐시(350)로부터 해당 데이터를 획득할 수 있는지 먼저 확인할 수 있다. 내부 캐시(350)에서 해당 주소의 데이터가 히트(hit)된 경우에는 외부 캐시나 메모리와 인터페이싱하지 않더라도 내부 캐시(350)의 해당 위치에 데이터를 저장하거나 그로부터 데이터를 읽어올 수 있다.
내부 캐시(350)는 L0 캐시일 수 있으나, 이에 한정되는 것은 아니다. 구현 방식에 따라, 복수의 코어가 포함되는 프로세서에서 각각의 코어(300)마다 하나의 L1 캐시가 부여된다면, 이러한 L1 캐시가 이하 설명되는 내부 캐시(350)로 사용될 수도 있다. 예를 들어, 각각의 코어(300)가 사용하는 내부 캐시(350)가 L0 캐시이고, 복수의 코어(300)들이 공유하는 캐시가 L1 캐시인 경우, 본 개시의 일 실시예에 따른 내부 캐시(350)는 L0 캐시일 수 있다. 또는 각각의 코어(300)가 개별적으로 사용하는 내부 캐시(350)가 L1 캐시이고, 복수의 코어(300)들이 공유하는 캐시가 L2 캐시인 경우, 본 개시의 일 실시예에 따른 내부 캐시(350)는 L1 캐시일 수 있다. 다만, 본 개시의 실시예들을 보다 간결하고 명확하게 설명하기 위하여, 내부 캐시(350)가 L0 캐시인 시나리오를 주로 설명할 것이지만, 본 개시의 보호범위가 이러한 시나리오로 제한되는 것은 아니다.
이하에서는 도 1 내지 도 3을 함께 참조하여 본 개시의 일 실시예에 따른 트랜잭션 처리 방법을 설명한다.
도 1에 도시된 바와 같이 본 개시의 일 실시예에 따른 트랜잭션 처리 방법(100A)은 ISA 명령어를 페치(fetch)하고 디코드(decode)하는 단계(S110)를 포함할 수 있다. 단계(S110)에서 페치 과정은 앞서 설명된 페치 스테이지에 대응할 수 있고, 디코드 과정은 앞서 설명된 디코드 스테이지의 일부일 수 있다.
페치 및 디코드 단계(S110)에 후속하여, ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 동일한지 여부가 판단(S120)될 수 있다. 이러한 판단 단계(S120)는 디코드 회로(320)에 의해 디코드 스테이지에서 수행될 수 있다. ISA는 프로세서 내의 레지스터와 동일한 사이즈의 명령어를 지원하는 경우가 일반적이지만, 레지스터 사이즈보다 더 큰 명령어를 지원하는 경우도 있다. 예컨대, 레지스터 사이즈가 4바이트(즉, 32비트)이면서 8바이트(즉, 64비트)의 명령어를 지원하는 경우가 있다. 또는 레지스터 사이즈가 8바이트(즉, 64비트)이면서 16바이트(즉, 128비트)의 명령어를 지원하는 경우도 있다. 이는 프로세서를 효율적으로 사용하기 위한 확장성을 제공하면서, 사용자/개발자로 하여금 광범위한 소프트웨어 개발 도구를 폭 넓게 지원할 수 있는 수단이기도 하다. 이하에서는 본 개시의 실시예들이 레지스터 사이즈가 8바이트이면서 16바이트의 명령어를 지원하는 ISA를 가정하여 예시적으로 설명된다. 다만, 이러한 수치는 본 개시의 실시예들을 보다 쉽게 설명하기 위한 예시에 불과하며, 본 개시의 보호범위가 이러한 수치에 제한되는 것은 아니다.
만약 ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 동일하면, LSU(340)는 해당 트랜잭션을 특별히 변환하지 않고도 캐시(350)로 전달할 수 있다(S130). 예를 들어, 레지스터 사이즈가 8바이트이고 ISA 명령어에 부합하는 트랜잭션의 사이즈도 8바이트이면, 인스트럭션 사이클을 통해 실행된 ISA 명령어의 실행 결과를 LSU(340)가 캐시(350)로 전달할 수 있다. 도 1에 도시된 예시적인 실시예에서는 판단 단계(S120)에서 전달 단계(S130)로 넘어가는 과정 사이에 어떠한 중간 단계도 도시되어 있지 않지만, 판단 단계(S120)와 전달 단계(S130) 사이에 익스큐트 스테이지 등과 같은 추가적인 단계들이 더 포함될 수도 있다.
만약 판단 단계(S120)에서의 판단 결과, ISA 명령어에 부합하는 트랜잭션의 사이즈가 코어(300)의 레지스터 사이즈와 상이한 경우(예: 전자가 후자보다 큰 경우)에는 해당 트랜잭션을 코어의 레지스터 사이즈에 부합하는 복수의 트랜잭션들로 변환할 수 있다. 즉, ISA 명령어에 부합하는 제1 트랜잭션을 코어(300)의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환할 수 있다(S141).
도 4는 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 제1 트랜잭션을 복수의 제2 트랜잭션들로 변환하는 과정을 개념적으로 도시한 도면이다. 도 4에 도시된 바와 같이, 트랜잭션 T0와 T1은 16바이트(즉, 128비트) 크기를 갖는다. 만약 코어(300)의 레지스터 사이즈가 8바이트(즉, 64비트)라면 트랜잭션 T0와 T1은 코어(300)에서 수행되기 위해 8바이트 사이즈로 변환될 수 있다. 예를 들어, 16바이트 사이즈의 T0는 8바이트 사이즈의 T00와 T01로 변환될 수 있고, 16바이트 사이즈의 T1은 8바이트 사이즈의 T10와 T11로 변환될 수 있다. 도 4에 도시된 예시적인 실시예는 도 1에 도시된 변환 단계(S141)를 수행하는 과정을 도식화한 것으로 이해될 수 있다.
변환 단계(S141)에 후속하여, LSU(340)는 복수의 제2 트랜잭션들을 소정의 변환 정보와 함께 캐시(350)로 전달하는 단계(S142)를 수행할 수 있다. 한편, 복수의 제2 트랜잭션들은 불연속적으로 전달되지 않고, LSU(340)가 이들 복수의 제2 트랜잭션들을 연속적으로 캐시(350)에 전달하도록 구성될 수 있다.
변환 단계(S141)는 디코드 회로(320)에 의해 수행될 수 있다. 도 1에 명시적으로 도시되지는 않았으나, 디코드 회로(320)에 의해 변환 단계(S141)가 수행된 이후이면서 LSU(340)에 의해 전달 단계(S142)가 수행되기 이전의 스테이지로서, 익스큐트 회로(330)에 의해 수행되는 익스큐트 스테이지가 더 포함될 수 있다.
한편, 변환 단계(S141)의 수행 주체는 디코드 회로(320)로 한정되지 않는다. 구현 방식에 따라 변환 단계(S141)와 전달 단계(S142)가 모두 LSU(340)에 의해 수행되도록 구성할 수도 있다.
변환 정보는 복수의 제2 트랜잭션들이 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 정보이다. 본 개시의 일 실시예에 따르면, LSU(340)가 캐시(350)로 이러한 변환 정보를 전달함으로써 제2 트랜잭션들을 캐시(350)가 재결합할 수 있도록 하는 단초를 제공할 수 있다. 예를 들어, 변환 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달될 수 있다. 즉, 변환 정보는 AMBA AXI(Advanced Microcontroller Bus Architecture eXtensible Interface) 버스에서 사용되는 사용자 신호 또는 사이드밴드 신호를 사용하여 전달될 수 있다.
본 개시의 실시예들에 따르면, 이러한 변환 정보(즉, ISA 명령어에 부합하는 하나의 트랜잭션이 레지스터 사이즈에 부합하는 여러 개의 트랜잭션으로 변환되었다는 점을 나타내는 정보)를 LSU(340)가 다른 컴포넌트(예: 캐시(350))로 전달할 수 있다. 이렇게 함으로써 캐시(350)와 같은 다른 컴포넌트는 이들 트랜잭션을 별개의 서로 무관한 트랜잭션으로 처리하지 않고 서로 관련된 트랜잭션으로 처리할 수 있는 이점이 있다. 예를 들어, 단일의 로드(load) 또는 스토어(store) 트랜잭션이 레지스터 사이즈에 맞게 여러 개의 트랜잭션으로 변환되고, 이들 변환된 트랜잭션을 LSU(340)가 캐시(350)로 전달하는 경우, 캐시(350)는 트랜잭션의 변환 여부를 상기 변환 정보를 통해 알 수 있기 때문에 여러 개의 트랜잭션을 각각 개별적으로 처리하지 않을 수 있다. 즉, 하나의 트랜잭션으로 재결합하여 효율적으로 처리할 수 있는 이점이 있다.
도 2를 참조하여 변환 정보의 활용 방식에 대해 더욱 구체적으로 살펴보겠다. 캐시(350)가 변환 정보를 수신하고 이를 확인하면, 복수의 제2 트랜잭션들이 제1 트랜잭션으로부터 변환되었는지 여부를 캐시(350)가 스스로 판단할 수 있다(S151). 예컨대, AXI 사용자 비트(user bit)를 이용하여 변환 정보를 표현할 경우, 해당 비트가 1이라면(단, 이는 예시적인 것으로서 구현방식에 따라 변환이 있다는 사실을 0으로 표현할 수도 있음), 하나의 트랜잭션으로부터 변환된 복수의 트랜잭션들이 전달될 예정이니 이들 트랜잭션들을 하나로 다시 결합하라는 의미로 해석될 수 있다.
만약 변환 정보 확인 단계(S151)를 수행한 결과, 복수의 제2 트랜잭션들이 제1 트랜잭션으로부터 변환되었음을 변환 정보가 나타낸다면, 변환 정보를 수신한 캐시(350)는 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합할 수 있다(S152). 그리고 캐시(350)는 결합된 트랜잭션(즉, 제3 트랜잭션)을 버스를 통해 외부로 전달할 수 있다(S153). 여기서, 캐시(350)는 하나의 코어에 의해서만 사용되는 내부 캐시일 수 있고, 상기 결합하는 단계(S152)는 캐시(350)의 캐시 컨트롤러(cache controller)에 의해 수행될 수 있다.
그러나 이와 달리 만약 변환 정보 확인 단계(S151)를 수행한 결과, 복수의 제2 트랜잭션들이 제1 트랜잭션으로부터 변환된 것이 아니라는 점을 변환 정보가 나타낸다면(혹은 어떠한 변환 정보도 캐시(350)로 전달되지 못한 경우라면), 캐시(350)는 수신한 트랜잭션(즉, 이러한 트랜잭션은 단계 S130를 거쳐서 전달된 트랜잭션으로서 분할 변환되지 않은 트랜잭션임)에 대해 재결합 과정(S152)을 수행할 필요가 없다. 즉, 캐시(350)는 해당 트랜잭션에 대한 별도의 처리 없이, 버스를 통해 트랜잭션을 외부로 전달할 수 있다(S153).
이하에서는 도 4 내지 도 7을 참조하여, 트랜잭션들을 재결합하지 않고 버스를 통해 외부로 전달하는 개념을 먼저 제시하고, 트랜잭션들을 캐시(350)에서 재결합하여 버스를 통해 외부로 전달하는 개념을 이어서 제시한다. 그리고 내부 캐시(350)에서의 재결합이 없는 경우와 재결합이 있는 경우의 효율성 차이에 대해 예로서 설명한다.
도 4에 도시된 바와 같이, ISA에 따른 명령어에 부합하는 제1 트랜잭션(예: T0 및 T1)은 코어(300)의 레지스터 사이즈에 부합하는 제2 트랜잭션들(예: T00, T01, T10 및 T11)로 변환될 수 있다. 이는 앞서 도 1을 참조하여 단계(S120) 및 단계(S141) 등을 참조하여 설명한 과정과 실질적으로 동일하다.
LSU(340)가 제2 트랜잭션을 캐시(350)로 전달하더라도, 만약 LSU(340)가 캐시(350)로 변환 정보를 제공하지 않는다면, 캐시(350)는 이들 제2 트랜잭션이 하나의 트랜잭션으로부터 유래했음을 알 수 없기 때문에 이들을 재결합할 수 없다. 즉, 캐시(350)는 제2 트랜잭션들을 각각 별개의 트랜잭션으로 처리하게 된다. 다시 말해, 캐시(350)가 만약 제2 트랜잭션들(예: T00, T01, T10 및 T11)을 재결합하지 못하고 각각 별개의 트랜잭션으로 처리해야만 한다면, 캐시(350)가 버스를 통해 외부의 기타 컴포넌트(400)로 제2 트랜잭션을 전달하는 경우에도 도 5에 도시된 바와 같이 제2 트랜잭션들(예: T00, T01, T10 및 T11)의 개수만큼 총 4회의 전송 과정을 거쳐야만 한다.
그러나 캐시(350)가 사용하는 버스(예컨대, 도 3의 실시예에서 캐시(350)와 기타 컴포넌트(400) 사이에 존재하는 버스)의 데이터 폭이 코어(300)의 레지스터 사이즈보다 큰 경우라면, 위에서 설명한 4회의 전송 과정은 매우 비효율적이다. 예컨대, 캐시(350)가 사용하는 버스의 데이터 폭이 16바이트(즉, 128비트)이고, 레지스터 사이즈가 8바이트(즉, 64비트)라면, 본 개시의 일 실시예에 따른 재결합 과정을 수행함으로써 버스를 더욱 효율적으로 사용할 수 있다.
이를테면, 도 6은 본 개시의 일 실시예에 따른 트랜잭션 처리 방법에 있어서 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 과정을 개념적으로 도시한 도면이다. 도 2의 결합 단계(S152)를 수행하면, 도 6에 도시된 바와 같이 제2 트랜잭션들(예: T00, T01, T10 및 T11)을 결합하여 버스의 데이터 폭에 맞게끔 제3 트랜잭션(예: T'0 및 T'1)을 구성할 수 있다. 여기서, 제3 트랜잭션은 캐시(350)가 사용하는 버스의 데이터 폭에 부합하도록 구성될 수 있다.
도 7에 도시된 바와 같이, 8바이트 사이즈의 제2 트랜잭션들(예: T00, T01, T10 및 T11)을 16바이트 사이즈의 제3 트랜잭션(예: T'0 및 T'1)으로 결합하고, 결합된 제3 트랜잭션을 버스를 통해 전송하게 되면, 전송 과정은 총 2회로 줄어들 수 있다.
결국, 도 5에 도시된 4회의 전송 과정에 비하여 도 7에 도시된 2회의 전송 과정은 상당히 효율적이다. 이는 단순히 전송 횟수가 반으로 줄었기 때문이 아니다. 전송 과정이 총 2회 줄어들었을 뿐만 아니라, 그 시간 동안 버스를 다른 용도로 활용할 수 있는 장점도 있다. 즉, 다른 컴포넌트들로 하여금 버스를 사용할 수 있도록 버스 자원을 제공할 수 있으므로, 시스템 전체의 효율에 미치는 영향력은 더욱 크다.
이상 도 1 내지 도 7을 참조하여 본 개시의 실시예들에 따른 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 설명했다. 이들 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행될 수 있다. 여기서 '프로세서'는 범용 프로세서, 중앙 처리 장치(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 (14)
- 단일 트랜잭션(transaction)으로부터 변환된 복수의 트랜잭션들을 처리하는 방법으로서 - 상기 방법은 적어도 하나의 코어를 포함하는 프로세서에 의해 수행됨 -,
상기 코어의 디코드 회로에 의해 명령어 집합 구조(instruction set architecture; ISA)에 따른 명령어에 부합하는 제1 트랜잭션의 사이즈가 상기 코어의 레지스터 사이즈와 동일한지 여부를 판단하는 단계;
상기 제1 트랜잭션의 사이즈가 상기 코어의 레지스터 사이즈보다 크다고 판단한 것에 응답하여, 상기 디코드 회로 또는 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 제1 트랜잭션을 상기 코어의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환하는 단계; 및
상기 LSU에 의해 상기 복수의 제2 트랜잭션들을 상기 코어의 캐시(cache)로 전달하는 단계
를 포함하되,
상기 LSU는 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 변환 정보를 상기 캐시로 더 전달하도록 구성된, 트랜잭션 처리 방법.
- 제1항에 있어서,
상기 변환 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달되는, 트랜잭션 처리 방법.
- 제1항에 있어서,
상기 LSU는 상기 복수의 제2 트랜잭션들을 상기 캐시로 연속적으로 전달하도록 구성된, 트랜잭션 처리 방법.
- 제1항에 있어서,
상기 변환 정보가 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었음을 나타내는 경우, 상기 변환 정보를 수신한 상기 캐시에 의해 상기 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 단계
를 더 포함하는, 트랜잭션 처리 방법.
- 제4항에 있어서,
상기 캐시는 하나의 코어에 의해서만 사용되는 내부 캐시이고,
상기 결합하는 단계는 상기 캐시의 캐시 컨트롤러에 의해 수행되는, 트랜잭션 처리 방법.
- 제5항에 있어서,
상기 캐시가 사용하는 버스(bus)의 데이터 폭은 상기 코어의 레지스터 사이즈보다 큰, 트랜잭션 처리 방법.
- 제6항에 있어서,
상기 제3 트랜잭션은 상기 캐시가 사용하는 상기 버스의 데이터 폭에 부합하도록 구성된, 트랜잭션 처리 방법.
- 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법을 수행하는 프로세서로서,
상기 프로세서는 적어도 하나의 코어를 포함하고,
상기 방법은,
상기 코어의 디코드 회로에 의해 명령어 집합 구조(ISA)에 따른 명령어에 부합하는 제1 트랜잭션의 사이즈가 상기 코어의 레지스터 사이즈와 동일한지 여부를 판단하는 단계;
상기 제1 트랜잭션의 사이즈가 상기 코어의 레지스터 사이즈보다 크다고 판단한 것에 응답하여, 상기 디코드 회로 또는 상기 코어의 로드-스토어 유닛(load-store unit; LSU)에 의해 상기 제1 트랜잭션을 상기 코어의 레지스터 사이즈에 부합하는 복수의 제2 트랜잭션들로 변환하는 단계; 및
상기 LSU에 의해 상기 복수의 제2 트랜잭션들을 상기 코어의 캐시로 전달하는 단계
를 포함하되,
상기 LSU는 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었는지 여부를 나타내는 변환 정보를 상기 캐시로 더 전달하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제8항에 있어서,
상기 변환 정보는 AXI 프로토콜의 사용자 신호(user signal) 또는 사이드밴드 신호(sideband signal)를 사용하여 전달되는, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제8항에 있어서,
상기 LSU는 상기 복수의 제2 트랜잭션들을 상기 캐시로 연속적으로 전달하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제8항에 있어서,
상기 방법은, 상기 변환 정보가 상기 복수의 제2 트랜잭션들이 상기 제1 트랜잭션으로부터 변환되었음을 나타내는 경우, 상기 변환 정보를 수신한 상기 캐시에 의해 상기 복수의 제2 트랜잭션들을 제3 트랜잭션으로 결합하는 단계를 더 포함하는, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제11항에 있어서,
상기 캐시는 하나의 코어에 의해서만 사용되는 내부 캐시이고,
상기 결합하는 단계는 상기 캐시의 캐시 컨트롤러에 의해 수행되는, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제12항에 있어서,
상기 캐시가 사용하는 버스(bus)의 데이터 폭은 상기 코어의 레지스터 사이즈보다 큰, 트랜잭션 처리 방법을 수행하는 프로세서.
- 제13항에 있어서,
상기 제3 트랜잭션은 상기 캐시가 사용하는 상기 버스의 데이터 폭에 부합하도록 구성된, 트랜잭션 처리 방법을 수행하는 프로세서.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230093168A KR102642962B1 (ko) | 2023-07-18 | 2023-07-18 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230093168A KR102642962B1 (ko) | 2023-07-18 | 2023-07-18 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102642962B1 true KR102642962B1 (ko) | 2024-03-05 |
Family
ID=90298214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230093168A KR102642962B1 (ko) | 2023-07-18 | 2023-07-18 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102642962B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120046461A (ko) * | 2010-11-02 | 2012-05-10 | 삼성전자주식회사 | 인터페이스 장치 및 이를 포함하는 시스템 |
KR20180051326A (ko) * | 2016-11-07 | 2018-05-16 | 삼성전자주식회사 | 데이터 처리 방법 및 디바이스 |
KR20180086792A (ko) * | 2017-01-23 | 2018-08-01 | 삼성전자주식회사 | 복수의 프로세서들 사이에 데이터를 처리하는 방법 및 전자 장치 |
-
2023
- 2023-07-18 KR KR1020230093168A patent/KR102642962B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120046461A (ko) * | 2010-11-02 | 2012-05-10 | 삼성전자주식회사 | 인터페이스 장치 및 이를 포함하는 시스템 |
KR20180051326A (ko) * | 2016-11-07 | 2018-05-16 | 삼성전자주식회사 | 데이터 처리 방법 및 디바이스 |
KR20180086792A (ko) * | 2017-01-23 | 2018-08-01 | 삼성전자주식회사 | 복수의 프로세서들 사이에 데이터를 처리하는 방법 및 전자 장치 |
Non-Patent Citations (3)
Title |
---|
한국공개특허 제10-2012-0046461호(2012.05.10.) 1부.* |
한국공개특허 제10-2018-0051326호(2018.05.16.) 1부.* |
한국공개특허 제10-2018-0086792호(2018.08.01.) 1부.* |
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 | |
TWI681333B (zh) | 可靠度提升系統、方法和電腦可讀取媒體 | |
US10970192B2 (en) | Debugging support unit for microprocessor | |
US9405552B2 (en) | Method, device and system for controlling execution of an instruction sequence in a data stream accelerator | |
TWI808869B (zh) | 硬體處理器及處理器 | |
JP2005317023A (ja) | データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法 | |
JPH04245540A (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
JP2003296191A (ja) | 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路 | |
TWI724065B (zh) | 包含用於控制流向終止的模式特定結束分支之處理器及系統 | |
JP2017527902A (ja) | 例外からの復帰時のマスク不可割り込みの早期有効化の回避 | |
JP2016194929A (ja) | マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム | |
TW201732566A (zh) | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 | |
JP2620511B2 (ja) | データ・プロセッサ | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
JP5146451B2 (ja) | ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 | |
JP2000330788A (ja) | コンピュータシステム | |
US8171259B2 (en) | Multi-cluster dynamic reconfigurable circuit for context valid processing of data by clearing received data with added context change indicative signal | |
KR102642962B1 (ko) | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 | |
US12067395B2 (en) | Pre-staged instruction registers for variable length instruction set machine | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
KR102210996B1 (ko) | 프로세서 및 프로세서 제어 방법 | |
JP5939586B2 (ja) | オーバーロードチェックを実行する命令 | |
US12112168B1 (en) | Method for processing multiple transactions converted from single transaction in processor, and processor for performing same | |
US20040230777A1 (en) | Method and system for altering processor execution of a group of instructions | |
US9830154B2 (en) | Method, apparatus and system for data stream processing with a programmable accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |