KR102152735B1 - 그래픽 처리 장치 및 이의 동작 방법 - Google Patents
그래픽 처리 장치 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR102152735B1 KR102152735B1 KR1020130115399A KR20130115399A KR102152735B1 KR 102152735 B1 KR102152735 B1 KR 102152735B1 KR 1020130115399 A KR1020130115399 A KR 1020130115399A KR 20130115399 A KR20130115399 A KR 20130115399A KR 102152735 B1 KR102152735 B1 KR 102152735B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- register
- data
- stored
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 31
- 230000015654 memory Effects 0.000 claims abstract description 124
- 238000012545 processing Methods 0.000 claims abstract description 67
- 230000004044 response Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 101100028951 Homo sapiens PDIA2 gene Proteins 0.000 description 1
- 102100036351 Protein disulfide-isomerase A2 Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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
- 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Computer Graphics (AREA)
Abstract
그래픽 처리 장치는 명령어 메모리, 스케쥴러, 로드/스토어 유닛 및 레지스터 파일을 포함한다. 상기 명령어 메모리에는 호스트로부터의 원본 코드가 컴파일링되어 명령어로서 저장된다. 상기 스케쥴러는 복수의 쓰레드들이 임시적으로 저장되는 쓰레드 풀에 연결되고 상기 명령어 메모리로부터 제공되는 명령어를 디코딩한다. 상기 로드/스토유 유닛은 상기 스케쥴러로부터 디코딩된 명령어가 복수의 데이터를 로딩하기 위한 다중 로드 명령어인 경우 상기 다중 로드 명령어에 기초하여 베이스 어드레스를 산출한다. 상기 레지스터 파일은 상기 산출된 베이스 어드레스에 기초하여 상기 메모리에 저장된 복수의 데이터가 감소된 메모리 트랜잭션에 의하여 저장되는 적어도 하나의 레지스터를 구비한다.
Description
본 발명은 그래픽 처리 분야에 관한 것으로, 보다 상세하게는 그래픽 처리 장치 및 이의 동작 방법에 관한 것이다.
3차원 그래픽을 지원하는 동영상, 게임 등을 끊기지 않고 제대로 즐기기 위하여는 3차원 가속기(3-Dimensional Accelerator)가 필수적이다. 3차원 가속기는 소프프웨어로 처리되는 다양한 그래픽 연산을 하드웨어로 구현하여 3차원 그래픽 처리를 빠르게 한다. 최근 사용자들의 요구가 다양해지고 3차원 그래픽 분야가 더욱 발전하면서 프로그래밍 가능한 프로세서가 3차원 가속기 내부에 장착되게 되었다. 이 프로그래밍 가능한 프로세서를 기존의 중앙 처리 장치와 비교하여 그래픽 처리 장치(Graphic processing unit; GPU)라고 한다.
이에 따라, 본 발명의 일 목적은 명령어를 수행하는 시간을 감소시켜 성능을 높일 수 있는 그래픽 처리 장치의 동작 방법을 제공하는데 있다.
본 발명의 일 목적은 명령어를 수행하는 시간을 감소시켜 성능을 높일 수 있는 그래픽 처리 장치를 제공하는데 있다.
상기 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법에서는 프로그램 코드에서 메모리의 복수의 로우들에 저장된 복수의 데이터를 적어도 하나의 레지스터에 로딩하기 위한 코드 영역을 검출한다. 상기 검출된 코드 영역에 상응하는 적어도 하나의 명령어에 응답하여 로드/스토어 유닛이 상기 복수의 데이터를 상기 적어도 하나의 레지스터에 로딩한다. 상기 적어도 하나의 명령어는 상기 복수의 로우들 중 로딩될 데이터를 저장하는 선택 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함한다.
예시적인 실시예에 있어서, 상기 하나의 로우에 저장되는 데이터들은 하나의 픽셀의 RGBA 데이터나 휘도 데이터를 포함할 수 있다.
예시적인 실시예에 있어서, 상기 제어 정보에 기초하여 상기 메모리와 상기 레지스터 파일 사이의 메모리 트랜잭션의 수가 결정될 수 있다.
예시적인 실시예에 있어서, 상기 적어도 하나의 명령어는 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어를 더 포함하고, 상기 제어 정보는 하나의 픽셀의 데이터에 대하여 상기 마스크 비트의 복사본 수를 나타내는 듀플리케이션 필드를 더 포함할 수 있다.
상기 하나의 로우에 저장되는 데이터가 상기 하나의 픽셀의 RGBA 데이터인 경우, 상기 듀플리케이션 필드는 4일 수 있다.
상기 스팬 필드에 의하여 상기 메모리 셀 로우들은 각각이 연속적인 어드레스들을 갖는 복수의 그룹들로 분할될 수 있다.
상기 스트라이드 필드에 의하여 상기 그룹들 사이의 어드레스 간격이 결정될 수 있다.
상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함할 수 있다.
실시예에 있어서, 상기 포맷 필드가 팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 마스크 비트에 따라 상기 레지스터들에 팩킹되어 저장될 수 있다.
실시예에 있어서, 상기 포맷 필드가 비팩형 포맷임을 나타내는 경우, 상기 데이터들은상기 스팬 필드에 따라 상기 레지스터들에 저장될 수 있다.
상기 제3 명령어는 상기 시작 레지스터의 목록, 번호 및 물리 어드레스 중 하나를 더 포함할 수 있다.
상기 본 발명의 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 그래픽 처리 장치는 명령어 메모리, 스케쥴러, 로드/스토어 유닛 및 레지스터 파일을 포함한다. 상기 명령어 메모리에는 호스트로부터의 원본 코드가 컴파일링되어 명령어로서 저장된다. 상기 스케쥴러는 복수의 쓰레드들이 임시적으로 저장되는 쓰레드 풀에 연결되고 상기 명령어 메모리로부터 제공되는 명령어를 디코딩한다. 상기 로드/스토유 유닛은 상기 스케쥴러로부터 디코딩된 명령어가 복수의 데이터를 한번에 로딩하기 위한 다중 로드 명령어인 경우 메모리의 복수의 로우들에 저장된 복수의 데이터를 로딩하기 위한 다중 로드 명령어인 경우 상기 다중 로드 명령어에 기초하여 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 산출한다. 상기 레지스터 파일은 상기 산출된 베이스 메모리 어드레스에 기초하여 상기 메모리에 저장된 복수의 데이터가 저장되는 적어도 하나의 레지스터를 구비한다. 상기 다중 로드 명령어는 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함한다.
예시적인 실시예에 있어서, 상기 다중 로드 명령어는 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어를 더 포함하고, 상기 제어 정보는 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드, 스트라이드 필드 및 정보는 하나의 픽셀의 데이터에 대하여 상기 마스크 비트의 복사본 수를 나타내는 듀플리케이션 필드를 포함할 수 있다.
상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함하고, 상기 포맷 필드가 팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 스팬 필드에 관계없이 상기 레지스터들에 팩킹되어 저장될 수 있다.
상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함하고,
상기 포맷 필드가 비팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 스팬 필드에 따라 상기 레지스터들에 저장될 수 있다.
본 발명에 실시예들에 따르면, 다중 로드 명령어를 사용하여 메모리 장치에 저장된 복수의 데이터를 감소된 메모리 트랜잭션으로 레지스터 파일에 로딩함으로써 데이터 로딩에 걸리는 시간을 감소시켜 성능을 높일 수 있다.
도 1은 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 그래픽 처리 장치의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 도 2의 복수의 코어들 중 하나의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 도 3의 스케쥴러의 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 도 3의 실행기의 구성을 나타내는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 도 3의 로드/스토어 유닛의 구성을 나타내는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 도 3의 레지스터 파일을 나타낸다.
도 8a는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 8b는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 9는 본 발명의 실시예에 따른 그래픽 처리 장치에서 처리되는 프로세스를 나타낸다.
도 10a는 본 발명의 일 실시예에 따른 그래픽 처리 장치에서 사용되는 명령어의 구성을 나타낸다.
도 10b는 본 발명의 실시예에 따른 몇 가지 명령어의 오피코드와 해당하는 동작을 나타낸다.
도 10c는 본 발명의 실시예에 따른 컴파일시 소스 코드의 명령어와 목적코드의 명령어를 나타낸다.
도 11a 및 도 11b는 본 발명의 그래픽 처리 장치에서 처리되는 그래픽 모델의 일부를 나타낸다.
도 12는 본 발명의 일 실시예에 따른 도 1의 시스템 메모리의 어드레스 영역을 나타낸다.
도 13a 내지 도 13c는 본 발명의 실시예에 따른 다중 로드 명령의 소스 코드들을 나타내는 예들이다.
도 14a 내지 도 14c는 본 발명의 실시예에 따른 다중 로드 명령이 수행되는 경우의 레지스터 파일의 상태를 나타낸다.
도 15는 본 발명의 실시예에 따른 그래픽 처리 장치를 모바일 시스템에 응용한 예를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 그래픽 처리 장치를 컴퓨팅 시스템에 응용한 예를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 그래픽 처리 장치의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 도 2의 복수의 코어들 중 하나의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 도 3의 스케쥴러의 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 도 3의 실행기의 구성을 나타내는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 도 3의 로드/스토어 유닛의 구성을 나타내는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 도 3의 레지스터 파일을 나타낸다.
도 8a는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 8b는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 9는 본 발명의 실시예에 따른 그래픽 처리 장치에서 처리되는 프로세스를 나타낸다.
도 10a는 본 발명의 일 실시예에 따른 그래픽 처리 장치에서 사용되는 명령어의 구성을 나타낸다.
도 10b는 본 발명의 실시예에 따른 몇 가지 명령어의 오피코드와 해당하는 동작을 나타낸다.
도 10c는 본 발명의 실시예에 따른 컴파일시 소스 코드의 명령어와 목적코드의 명령어를 나타낸다.
도 11a 및 도 11b는 본 발명의 그래픽 처리 장치에서 처리되는 그래픽 모델의 일부를 나타낸다.
도 12는 본 발명의 일 실시예에 따른 도 1의 시스템 메모리의 어드레스 영역을 나타낸다.
도 13a 내지 도 13c는 본 발명의 실시예에 따른 다중 로드 명령의 소스 코드들을 나타내는 예들이다.
도 14a 내지 도 14c는 본 발명의 실시예에 따른 다중 로드 명령이 수행되는 경우의 레지스터 파일의 상태를 나타낸다.
도 15는 본 발명의 실시예에 따른 그래픽 처리 장치를 모바일 시스템에 응용한 예를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 그래픽 처리 장치를 컴퓨팅 시스템에 응용한 예를 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 그래픽 처리 시스템(100)은 시스템 버스(110)를 통하여 서로 연결되는 시스템 메모리(120), 주변 장치(130), 호스트(150), 프레임 버퍼(160), 디스플레이 컨트롤러(170), 디스플레이 장치(180) 및 그래픽 처리 장치(graphic processor unit, GPU; 200)를 포함할 수 있다.
그래픽 처리 장치(200)는 시스템 버스(110)와 주변 장치(130)를 통해 시스템 메모리(120)에 저장된 3차원 그래픽 모델과 3차원 그래픽 처리에 필요한 프로그램을 사용하여 호스트(150)의 지시를 수행한다. 그래픽 처리 장치(200)에 의하여 가공된 그래픽 데이터는 프레임 버퍼(160)에 저장된다. 프레임 버퍼(160)에 저장된 그래픽 데이터는 디스플레이 컨트롤러(170)와 디스플레이 장치(180)에 의하여 디스플레이 된다.
그래픽 처리 장치(200)는 하나의 명령어를 사용하여 시스템 메모리(120)에 저장된 복수의 데이터를 한번에 그래픽 처리 장치(200)의 레지스터 파일(또는 복수의 레지스터들)에 로딩할 수 있고, 또한 하나의 명령어를 사용하여 레지스터 파일에 저장된 데이터를 프레임 버퍼(160)에 저장(스토어)할 수 있다. 즉 그래픽 처리 장치(200)는 다중 로드/스토어 명령을 사용할 수 있다.
상기 시스템 메모리(120)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM)일 수 있다.
상기 디스플레이 장치(180)는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, OLED(Organic LED) 디스플레이, 또는 AMOLED(active-matrix OLED) 디스플레이로 구현될 수 있다.
도 2는 본 발명의 일 실시예에 따른 도 1의 그래픽 처리 장치의 구성을 나타내는 블록도이다.
도 2를 참조하면, 그래픽 처리 장치(200)는 복수의 코어들(300a~300n), 메모리 관리 유닛(210), 캐시 메모리(220) 및 하드웨어 블록(230)을 포함할 수 있다.
복수의 코어들(300a~300n) 각각은 병렬적으로 또는 독립적으로 시스템 버스(110)와 주변 장치(130)를 통해 시스템 메모리(120)에 저장된 3차원 그래픽 모델을 처리하여 그래픽 데이터를 생성한다. 생성된 그래픽 데이터는 메모리 관리 유닛(210)에 의하여 프레임 버퍼(160)에 저장된다. 캐시 메모리(220)는 복수의 코어들(300a~300n)이 3차원 그래픽 모델을 처리하는데 자주 사용하는 데이터들을 저장한다. 하드웨어 블록(230)은 복수의 코어들(300a~300n)의 제어에 따라 3차원 그래픽 모델을 처리할 수 있다.
복수의 코어들(300a~300n)은 하나의 프로세스에 포함되는 쓰레드들을 처리하는데 필요한 수에 따라 전체 또는 일부가 활성화되어 3차원 그래픽 모델을 처리하여 그래픽 데이터를 생성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 도 2의 복수의 코어들 중 하나의 구성을 나타내는 블록도이다.
도 3을 참조하면, 코어(300a)는 명령어 메모리(310), 쓰레드 풀(320), 스케쥴러(330), 실행기(340), 로드/스토어 유닛(350), 데이터 캐시(360), 레지스터 파일(380) 및 후기입부(380)를 포함할 수 있다.
명령어 메모리(310)에는 원본 코드(source code)가 목적 코드(object)로 컴파일되어 이진 데이터 형태로 저장된다. 목적 코드는 명령어 메모리(310)의 1행에 하나의 명령어가 저장될 수 있다. 호스트(150)의 지시에 따라 필요한 컴파일된 명령어들이 명령어 메모리(310)에 저장될 수 있다. 명령어는 연산자(operator)의 종류를 나타내는 오피코드(OPCODE) 필드, 피연산자(operand)가 저장된 주소를 나타내는 피연산자 주소(source field) 필드 및 연산 결과가 저장되는 결과 어드레스 필드와 같은 복수의 명령어 필드로 구성될 수 있다.
쓰레드 풀(320)에는 하나의 프로세스를 구성하는 복수의 쓰레드들이 임시로 저장될 수 있다. 스케쥴러(330)는 현재 처리되어야 하는 쓰레드와 관련된 명령어가 저장되어 있는 주소를 나타내는 로우 어드레스(RAD)를 명령어 메모리(310)에 출력하고, 명령어 메모리(310)는 상기 로우 어드레스(RAD)에 응답하여 저장된 명령어(INST)를 순차적으로 또는 분기 명령 등에 의하여 비순차적으로 스케쥴러(330)에 제공할 수 있다.
스케쥴러(330)는 제공된 명령어(INST)의 오피 코드를 해석하여(디코딩하여) 명령어 종류를 판단하고, 해석된 명령어를 실행기(340) 또는 로드/스토어 유닛(350)에 제공한다. 로드/스토어 유닛(350)은 해석된 명령어에 따라 시스템 메모리(120)에 저장된 데이터를 레지스터 파일(370)에 로딩하고, 레지스터 파일(370)에 로딩된 결과 데이터를 프레임 버퍼(160)에 저장한다.
실행기(340)는 해석된 명령어의 피연산자 주소에 응답하여 레지스터 파일(270)의 주소에 저장된 피연산자를 인출하고, 해석된 명령어 종류 및 이출된 피연산자를 이용하여 명령어를 실행하고, 결과 데이터를 후기입부(380)에 제공한다. 후기입부(380)는 명령어의 결과 주소에 해당하는 레지스터 파일(370)의 주소에 실행 결과를 저장한다.
본 발명의 실시예에 따른 로드/스토어부(350)는 스케쥴러(330)에서 해석된 명령어가 시스템 메모리(120)의 복수의 로우들에 저장된 복수의 데이터를 레지스터 파일(370)에 로딩하기 위한 다중 로드 명령어인 경우에, 피연산자 주소필드(source field)에 저장되는 시스템 메모리(120)의 베이스어드레스를 산출하고, 상기 산출된 베이스 어드레스에 기초하여 시스템 메모리(120)의 일부 영역에 저장된 복수의 데이터를 레지스터 파일(370)에 포함되는 적어도 하나의 레지스터에 로딩할 수 있다. 여기서 다중 로드 명령어는 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어, 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함할 수 있다.
또한 본 발명의 실시예에 따른 로드/스토어부(350)는 스케쥴러(330)에서 해석된 명령어가 복수의 데이터를 레지스터 파일(370)로부터 프레임 버퍼(160)에 저장하기 위한 다중 스토어 명령어인 경우에, 결과 주소필드(destination address field)에 저장되는 프레임 버퍼(160)의 베이스 메모리 어드레스를 산출하고, 상기 산출된 베이스 메모리 어드레스에 기초하여 레지스터 파일(370)로부터 프레임 버퍼(170)의 일부 영역에 복수의 데이터를 저장(스토어)할 수 있다. 이 경우 마스크 비트, 스팬 필드, 스트라이드 필드들은 다중 로드 명령어와 같은 방식으로 적용되어 저장할 메모리 주소를 도출한다..
실행기(340)는 현재의 쓰레드에 대한 처리가 완료되면 쓰레드 완료 신호(THRC1)를 스케쥴러(330)에 통지할 수 있다. 로드/스토어 유닛(350)도 다중 로드 명령어에 상응하는 시스템 메모리(120)에 대한 독출 동작이 완료되면 쓰레드 완료 신호(THRC2)를 스케쥴러(330)에 통지할 수 있다. 스케쥴러(330)는 쓰레드 완료 신호들(THRC1, THRC2)을 통지받으면 해당 쓰레드의 다음 명령어를 페치(fetch)할 수 있다.
데이터 캐시(360)에는 시스템 메모리(120)로부터 로딩되는 데이터가 임시적으로 저장될 수 있다. 데이터 캐시(360)에 임시적으로 저장되는 데이터는 레지스터 파일 내에서 결과 어드레스 필드에 저장된 어드레스에 상응하는 레지스터에 저장될 수 있다.
도 4는 본 발명의 일 실시예에 따른 도 3의 스케쥴러의 구성을 나타내는 블록도이다.
도 4를 참조하면, 스케쥴러(330)는 프로그램 카운터(331), 명령어 레지스터(332), 명령어 디코더(333) 및 피연산자 인출기(334)를 포함하여 구성될 수 있다.
프로그램 카운터(331)는 명령어 메모리(310)에 저장된 명령어의 주소를 나타내는 로우 어드레스 신호(RAD)를 생성하고, 명령어 메모리(310)는 로우 어드레스 신호(RAD)에 응답하여 저장된 명령어를 명령어 레지스터(332)에 제공한다. 명령어 디코더(333)는 명령어 레지스터(332)로부터 수신된 명령어의 오피 코드를 디코딩하여 명령어의 종류를 판단한다. 명령어 디코더(333)는 디코딩된 명령어의 종류에 따라 명령어를 실행기(340) 또는 로드/스토어 유닛(350)에 제공할 수 있다.
예를 들어, 디코딩된 명령어가 다중 로딩/스토어 명령어인 경우에 명령어 디코더(333)는 명령어를 로드/스토어 유닛(350)에 제공할 수 있다. 예를 들어, 디코딩된 명령어가 다중 로딩/스토어 명령어가 아닌 경우에 명령어 디코더(333)는 명령어를 실행기(340)에 제공할 수 있다.
도 5는 본 발명의 일 실시예에 따른 도 3의 실행기의 구성을 나타내는 블록도이다.
도 5를 참조하면, 실행기(340)는 피연산자 인출기(341) 및 복수의 실행 유닛들(342, 343, 344)을 포함할 수 있다. 피연산자 인출기(341)는 스케쥴러(330)로부터 제공된 명령어의 피연산자 주소에 응답하여 레지스터 파일(370)의 주소에 저장된 피연산자를 인출한다. 복수의 실행 유닛들(342, 343, 344)은 각각 디코딩된 명령어 종류 및 인출된 피연산자를 사용하여 명령어를 실행하여 후기입부(380)에 제공할 수 있다. 후기입부(380)는 명령어의 결과 주조에 해당하는 레지스터 파일(370)의 주소에 실행 결과를 저장할 수 있다.
복수의 실행 유닛들(342, 343, 344)은 각각 정수 실행 유닛들, 부동 소수점 실행 유닛들 및 분기 실행 유닛들을 포함할 수 있지만, 그것들로 제한되는 것은 아니다.
실시예에 있어서, 명령어 인출, 명령어 디코딩 및 명령어 실행과 같은 일련의 과정은 파이프라인(pipeline) 방식으로 수행되어 그래픽 처리 장치(200)의 실행 속도를 빠르게 할 수 있다.
도 6은 본 발명의 일 실시예에 따른 도 3의 로드/스토어 유닛의 구성을 나타내는 블록도이다.
도 6을 참조하면, 로드/스토어 유닛(350)은 인터페이스부(351), 복수의 레지스터 회로들(352, 353, 354), 산술 논리부(355) 및 출력 레지스터 회로(356)를 포함하여 구성될 수 있다.
로드/스토어 유닛(350)은 인터페이스부(351)를 통하여 스케쥴러(330), 레지스터 파일(370), 데이터 캐시(360), 시스템 메모리(120) 및 프레임 버퍼(160)와 통신할 수 있다.
인터페이스부(351)는 스케쥴러(330)로부터 제공된 명령어의 피연산자 주소에 응답하여 레지스터 파일(370)의 주소에 저장된 피연산자를 인출하여 복수의 레지스터 회로들(352, 353, 354)에 제공하고, 산술 논리부(355)는 복수의 레지스터 회로들(352, 353, 354)을 이용하여 인출된 피연산자들에 대한 산술 논리 연산을 수행하고 수행된 결과를 바탕으로 메모리 로드 동작을 수행한 후 출력 레지스터 회로(356)에 제공할 수 있다. 따라서 로드/스토어 유닛(350)은 명령어 디코더(333)로부터 제공되는 디코딩된 명령어가 다중 로드 명령어인 경우에, 명령어의 소스 어드레스 필드에 저장된 시스템 메모리의 베이스 메모리 어드레스를 산출하고, 산출된 베이스 메모리 어드레스를 포함하는 일부 영역에서 복수의 데이터를 독출하고 독출된 데이터를 명령어의 결과 어드레스 필드에 저장된 레지스터 파일(370)의 적어도 하나의 레지스터에 로딩할 수 있다.
또한 로드/스토어 유닛(350)은 명령어 디코더(333)로부터 제공되는 디코딩된 명령어가 다중 스토어 명령어인 경우에, 명령어의 소스 어드레스 필드에 저장된 어드레스에 해당하는 적어도 하나의 레지스터들로부터 복수의 데이터를 독출하고, 독출된 데이터를 명령어의 결과 어드레스 필드에 저장된 프레임 버퍼(160)의 베이스 어드레스를 포함하는 일부 영역에 한번에 저장할 수 있다.
도 7은 본 발명의 일 실시예에 따른 도 3의 레지스터 파일을 나타낸다.
도 7을 참조하면, 레지스터 파일(370)은 복수의 레지스터들(r0~rm-1)을 포함할 수 있다. 복수의 레지스터들(r0~rm-1) 각각은 동일 비트들(예를 들어 128 비트)의 데이터를 저장할 수 있다. 복수의 레지스터들(r0~rm-1)에는 제1 명령어에 따라 시스템 메모리(120)의 데이터가 저장되는 복수의 로우들 중 첫번째 로우를 지정하는 어드레스인 베이스 어드레스가 기입되는 베이스 레지스터(rb)를 포함될 수 있다. 또한 복수의 레지스터들(r0~rm-1)에는 제2 명령어에 따라 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬(span) 필드 및 스트라이드(stride) 필드를 적어도 포함하는 제어 정보가 기입되는 컨트롤 레지스터(rc)를 포함될 수 있다. 또한 제3 명령어에 따라 시스템 메모리(120)에 저장된 데이터는 시작 레지스터인 제1 레지스터(r0)로부터 순차적으로 저장될 수 있다.
도 6의 로드/스토어 유닛(350)이 본 발명의 실시예에 따른 다중 로드 명령어를 실행하는 경우, 다중 로드 명령어의 결과 어드레스 필드에는 복수의 레지스터들(r0~rm-1) 중 적어도 하나의 번호, 목록 또는 물리 어드레스가 포함될 수 있다. 실시예에 있어서, 다중 로드 명령어의 결과 어드레스 필드가 복수의 레지스터들(r0~rm-1) 중 적어도 하나의 번호 또는 목록을 포함하는 경우에는 로드/스토어 유닛(350)이 실제로 그 레지스터에 접근하기 위하여는 별도의 디코더가 필요할 수 있다. 실시예에 있어서, 다중 로드 명령어의 결과 어드레스 필드가 복수의 레지스터들(r0~rm-1) 중 적어도 하나의 물리 어드레스를 포함하는 경우에는 로드/스토어 유닛(350)이 실제로 그 레지스터에 접근하기 위하여 별도의 디코딩 과정 없이 해당 레지스터를 직접 액세스할 수 있다.
도 8a는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 8a를 참조하면, 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법에서는 프로그램 코드(또는 소스 코드)에서 메모리에 저장된 복수의 데이터를 한번에 적어도 하나의 레지스터에 로딩하기 위한 코드 영역을 검출한다(S310). 예를 들어, 컴파일러가 프로그램 코드에서 다중 로드 명령어에 대응되는 부분을 검출할 수 있다. 다중 로드 명령어에 대응되는 부분은 "메모리의 베이스 어드레스로부터 시작하여 메모리에 저장된 8개의 픽셀 데이터를 시작 레지스터로부터 연속하여 저장하라"라는 코드 영역이 될 수 있다. 로드/스토어 유닛은 상기 검출된 코드 영역에 상응하는 명령어에 기초하여 메모리에 저장된 복수개의 픽셀 데이터를 시작 레지스터를 포함하는 적어도 하나의 레지스터에 순차적으로 로딩한다(S320). 이 경우에, 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어, 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함할 수 있다. 또한 상기 다중 로드 명령어는 상기 복수의 데이터들이 로딩될 적어도 하나의 레지스터 중 시작 레지스터의 목록, 시작 레지스터의 번호 또는 시작 레지스터의 물리 어드레스를 포함할 수 있다.
상기 제어 정보는 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드, 스트라이드 필드 및 정보는 하나의 픽셀의 데이터에 대하여 상기 마스크 비트의 복사본 수를 나타내는 듀플리케이션 필드를 포함할 수 있다.
이러한 제어 정보에 기초하여 상기 메모리와 상기 레지스터 파일 사이의 메모리 트랜잭션의 수가 결정될 수 있다.
실시예에 있어서, 상기 하나의 로우에 저장되는 데이터들은 하나의 픽셀에 관련되는 데이터일 수 있다. 예를 들어 상기 데이터들은 하나의 픽셀의 RGBA 데이터이거나 휘도 데이터를 포함할 수 있다. 상기 하나의 로우에 저장되는 데이터가 상기 하나의 픽셀의 RGBA 데이터인 경우, 상기 듀플리케이션 필드는 4일 수 있다.
또한 상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함할 수 있다.
상기 포맷 필드가 팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 마스크 비트에 따라 상기 레지스터들에 팩킹되어 저장될 수 있다. 상기 포맷 필드가 비팩형 포맷임을 나타내는 경우, 상기 스팬 필드에 따라 상기 레지스터들에 저장될 수 있다.
도 8b는 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 흐름도이다.
도 1 내지 도 8b를 참조하면, 본 발명의 일 실시예에 따른 그래픽 처리 장치의 동작 방법에서는 먼저 스케쥴러(330)가 명령어 메모리(310)로부터 명령어(INST)를 페치하여 페치된 명령어를 디코딩한다(S410). 스케쥴러(330)에서의 디코딩 결과 페치된 명령어가 다중 로드 명령어인 경우에 스케쥴러(330)는 디코딩된 다중 로드 명령어를 로드/스토어 유닛(350)에 발행한다(S420). 로드/스토어 유닛(350)은 다중 로드 명령어의 피연산자 필드로부터 피연산자를 독출한다(S430). 단계(S430)에서 다중 로드 명령어의 피연산자 필드로부터 피연산자가 독출되지 않으면(S440에서 NO), 로드/스토어 유닛(350)은 쓰레드 완료를 스케쥴러(330)에 통보할 수 있다. 단계(S430)에서 다중 로드 명령어의 피연산자 필드로부터 피연산자가 독출되면(S440에서 YES) 독출된 피연산 주소에 응답하여 복수의 데이터가 저장되어 있는 시스템 메모리(120)의 베이스 어드레스(또는 데이터 캐시(360)의 어드레스)와 데이터를 로딩할 시작 타겟 레지스터의 목록 또는 물리 어드레스를 산출한다(S460). 산출된 베이스 어드레스에 기초하여 로드/스토어 유닛(350)은 데이터 캐시(360)에 저장된 데이터 또는 시스템 메모리(120)에 저장된 데이터를 독출하고 독출된 데이터를 타겟 레지스터로부터 순차적으로 로딩한다(S470). 로딩이 완료된 후에 다시 단계(S440)으로 복귀하여 독출 완료 여부를 판단한다.
이 경우에, 마스크 비트, 스팬 필드, 스트라이드 필드의 정보를 이용하여 시스템 메모리(120)와 레지스터 파일(370) 사이의 메모리 트랜잭션의 수가 결정될 수 있다. 모든 메모리 트랜잭션이 완료되어 시스템 메모리(120)에 저장된 데이터가 레지스터 파일(370)에 모두 로딩되면, 명령어 수행 완료가 스케쥴러(330)에 통보될 수 있다.
도 9는 본 발명의 실시예에 따른 그래픽 처리 장치에서 처리되는 프로세스를 나타낸다.
도 9를 참조하면, 그래픽 처리 장치(200)에서 처리되는 프로세스(510)는 복수의 쓰레드들(511, 512, 513)을 포함할 수 있다. 이 쓰레드들(511, 512, 513)은 도 3의 쓰레드 풀(320)에 저장되어 순차적으로 또는 동시에 그래픽 처리 장치(200)에서 처리될 수 있다.
도 10a는 본 발명의 일 실시예에 따른 그래픽 처리 장치에서 사용되는 명령어의 구성을 나타낸다.
도 10a를 참조하면, 명령어 메모리(310)에 저장되는 소스 코드가 컴파일링된 명령어(520)는 상기 명령어가 어떤 기능을 수행하는지를 나타내는 오피코드 필드(521), 명령어의 실행을 위한 파라미터들, 예를 들면, 명령어의 피연산자들이 저장된 주소를 나타내는 피연산자 어드레스 필드들(523, 524), 및 명령어에 따른 연산 결과가 저장되는 주소를 나타내는 결과 어드레스 필드(522)를 포함할 수 있고 명령어가 다중 로드 명령어인 경우에 로딩될 복수의 데이터 타입을 나타내는 포맷 플래그 필드(525)를 선택적으로 더 포함할 수 있다. 오피코드 필드(521)를 비롯한 명령어 필드들(521~525)은 컴파일 과정을 통하여 생성되며, 컴파일 완료된 명령어 필드들(521~525)은 각 명령어에서 필요한 수만큼의 메모리 블록에 저장될 수 있다. 여기서 명령어 메모리(310)는 캐시 메모리이거나 에스램(SRAM)일 수 있다.
도 10b는 본 발명의 실시예에 따른 몇 가지 명령어의 오피코드와 해당하는 동작을 나타낸다.
도 10c는 본 발명의 실시예에 따른 컴파일시 소스 코드의 명령어와 목적코드의 명령어를 나타낸다.
도 10b 및 10c를 참조하면, 본 발명의 실시예에 따른 다중 로드 명령어를 수행하기 위하여는 Mov 명령어와 Ld.multiple 명령어가 연속하여 사용됨을 알 수 있다.
도 11a 및 도 11b는 본 발명의 그래픽 처리 장치에서 처리되는 그래픽 모델의 일부를 나타낸다.
도 11a 및 도 11b를 참조하면, 시스템 메모리(120)에 저장되는 그래픽 모델의 일부(530)는 중심 픽셀(531) 및 중심 픽셀(531)의 주변에 위치한 주변 픽셀들(532~539)을 포함할 수 있다.
도 11a는 주변 픽셀들(532~539) 각각의 RGBA 컬러 데이터를 이용하여 해당 픽셀(531)의 에지를 검출하는 경우를 나타내고, 도 11b는 주변 픽셀들(532~539) 각각의 휘도 데이터를 이용하여 해당 픽셀(531)의 에지를 검출하는 경우를 나타낸다. 즉, 도 11a와 도 11b에서는 다중 로드 명령에 의하여 주변 픽셀들(532~539)의 RGBA 컬러 데이터 또는 휘도 데이터가 동시에 레지스터 파일(370)의 적어도 하나의 레지스터에 로딩되는 경우를 설명한다.
도 12는 본 발명의 일 실시예에 따른 도 1의 시스템 메모리의 어드레스 영역을 나타낸다.
도 12를 참조하면, 도 11a 및 도 11b의 그래픽 모델의 일부(530)는 시스템 메모리(120)의 베이스 어드레스(LOC)에 해당하는 영역에서부터 저장될 수 있다.
도 13a 내지 도 13c는 본 발명의 실시예에 따른 다중 로드 명령의 소스 코드들을 나타내는 예들이다.
도 13a는 도 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터를 팩형 포맷으로 레지스터 파일(370)에 로딩하기 위한 다중 로드 명령어의 소스 코드를 나타낸다.
도 13b는 도 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터를 비팩형 포맷으로 레지스터 파일(370)에 로딩하기 위한 다중 로드 명령어의 소스 코드를 나타낸다.
도 13c는 도 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 휘도 데이터를 팩형 포맷으로 레지스터 파일(370)에 로딩하기 위한 다중 로드 명령어의 소스 코드를 나타낸다.
도 13a 내지 도 13c에서 rb는 레지스터 파일(370)에 포함되는 베이스 레지스터를 나타내고, rc는 레지스터 파일(370)에 포함되는 컨트롤 레지스터를 _base_addr은 시스템 메모리(120)의 베이스 어드레스를 나타내고, 참조번호들(541, 551, 561) 각각은 제1 명령어를 나타내고, 참조번호들(542, 552, 562)은 각 경우에 있어서 제2 명령어를 나타내고, 참조번호들(543, 553, 563)은 각 경우에 있어서 제3 명령어를 나타낸다.
도 13a를 참조하면, 제1 명령어(541)는 시스템 메모리(120)의 데이터가 저장된 복수의 로우들 중 첫번째 로우를 지정하는 베이스 어드레스(_base_addr)를 레지스터 파일(370)의 베이스 레지스터(rb)에 기입할 것을 지시한다. 제2 명령어(542)는 마스크 비트(0b111101111), 스팬 필드(span), 스트라이드 필드(stride) 및 듀플리케이션 필드(dup)를 포함하는 제어 정보(int())를 레지스터 파일(370)의 컨트롤 레지스터(rc)에 기입할 것을 지시한다. 제3 명령어(543)는 컨트롤 레지스터(rc)에 기입된 제어 정보에 따라 베이스 레지스터(rb)에 기입된 주소에 해당하는 로우로부터의 데이터를 시작 레지스터인 제1 레지스터(r0)로부터 순차적으로 저장할 것을 지시한다. 또한 제3 명령어(543)는 레지스터 파일(370)에 저장되는 데이터들의 포맷을 나타내는 포맷 필드(packed)와 데이터의 타입을 나타내는 타입 필드(8, 즉 데이터의 타입이 바이트 타입)을 더 포함할 수 있다.
다시 도 12를 참조하면, 시스템 메모리(120)는 도 11a의 픽셀들(531~539) 각각의 RGBA 데이터나 휘도 데이터를 저장하고 있는 복수의 로우들(121~129)을 포함할 수 있다. 여기서 픽셀(532)의 데이터는 로우(121)에 저장되고, 픽셀(533)의 데이터는 로우(122)에 저장되고, 픽셀(534)의 데이터는 로우(123)에 저장되고, 픽셀(535)의 데이터는 로우(124)에 저장되고, 픽셀(536)의 데이터는 로우(126)에 저장되고, 픽셀(537)의 데이터는 로우(127)에 저장되고, 픽셀(538)의 데이터는 로우(128)에 저장되고, 픽셀(539)의 데이터는 로우(129)에 저장되고, 센터 픽셀(531)의 데이터는 로우(125)에 저장될 수 있다.
제2 명령어(542)의 마스크 비트(0b111101111)는 복수의 로우들(121~129) 중 로딩될 데이터를 저장하는 선택 로우들(여기서는 121~124, 126~129)을 지정할 수 있다. 제2 명령어(542)의 스팬 필드(span)는 복수의 로우들(121~129)의 상호 관계를 나타낼 수 있다. 즉 스팬 필드(span)는 도 11a의 픽셀들 중 로우 방향으로 연속적인 픽셀들의 수를 나타낸다. 따라서, 스팬 필드(span)에 의하여 복수의 로우들(121~129)이 연속적인 어드레스를 갖는 복수의 그룹으로 분할될 수 있다. 즉, 픽셀들(532~534)의 데이터가 각각 저장되어 있는 연속적인 어드레스를 갖는 로우들(121~123)이 제1 그룹을 구성하고, 픽셀들(535, 531, 536)의 데이터가 각각 저장되어 있는 연속적인 어드레스를 갖는 로우들(124~125)이 제2 그룹을 구성하고, 픽셀들(537~538)의 데이터가 각각 저장되어 있는 연속적인 어드레스를 갖는 로우들(127~129)이 제3 그룹을 구성할 수 있다. 제2 명령어(542)의 스트라이드 필드(stride)에 의하여 상기 제1 내지 제3 그룹들 사이의 어드레스 간격이 결정될 수 있다. 즉 제2 명령어(542)의 스트라이드 필드(stride)에 의하여 베이스 어드레스로부터 로우들(124, 127)의 어드레스가 산출될 수 있다. 제2 명령어(542)의 듀플리케이션 필드(dup)는 하나의 픽셀 데이터에 대하여 마스크 비트(0b111101111)의 복사본의 수를 나타낼 수 있다. 즉 픽셀 데이터가 RGBA 데이터인 경우에 듀플리케이션 필드(dup)를 4로 설정하여 RGBA 각각에 대하여 마스크 비트를 따로 할당하지 않아도 되므로 마스크 비트의 수를 감소시킬 수 있다. 또한 픽셀 데이터가 휘도 데이터인 경우에 듀플리케이션 필드(dup)는 제3 명령어(562)에서와 같이 1로 설정될 수 있다
도 14a 내지 도 14c는 본 발명의 실시예에 따른 다중 로드 명령이 수행되는 경우의 레지스터 파일의 상태를 나타낸다.
도 14a는 도 13a의 소스 코드에 따라서 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터가 팩형 포맷으로 레지스터 파일(370)에 로딩되는 경우를 나타낸다.
도 14b는 도 13b의 소스 코드에 따라서 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터가 비팩형 포맷으로 레지스터 파일(370)에 로딩되는 경우를 나타낸다.
도 14c는 도 13c의 소스 코드에 따라서 12의 시스템 메모리(120)에 저장된 도 11a의 주변 픽셀들(532~539) 각각의 휘도 데이터가 팩형 포맷으로 레지스터 파일(370)에 로딩되는 경우를 나타낸다.
도 10, 도 11a, 도 12, 도 13a 및 도 14a를 참조하면, 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터를 제1 내지 제3 명령어들(541~543)에 따라 팩형 포맷으로 레지스터 파일(370)에 로딩하면, 주변 픽셀들(532~539) 각각이 32비트의 RGBA 데이터를 포함하고 있으므로 모두 256비트의 데이터가 제1 레지스터(r0) 및 제2 레지스터(r1)에 순차적으로 저장된다. 이 경우에 도 10의 명령어(520)에서 오피 코드 필드(521)는 다중 로드 명령이 저장되고, 결과 어드레스 필드(522)는 제1 레지스터(r0)의 번호, 목록 또는 물리 어드레스가 저장되고, 피연산자 어드레스 필드(523)에는 시스템 메모리(120)의 로우(LOC0)의 베이스 어드레스(_base_addr)또는 베이스 어드레스(_base_addr)를 저장하는 다른 레지스터의 어드레스가 저장될 수 있다. 또한 이 경우에 데이터는 팩형 포맷이므로 포맷 플래그 필드(525)에는 하이 레벨의 포맷 플래그(FF)가 저장될 수 있다.
도 10, 도 11a, 도 12, 도 13b 및 도 14b를 참조하면, 도 11a의 주변 픽셀들(532~539) 각각의 RGBA 데이터를 제1 내지 제3 명령어들(551~553)에 따라 비팩형 포맷으로 레지스터 파일(370)에 로딩하면, 주변 픽셀들(532~539) 각각이 32비트의 RGBA 데이터를 포함하고 있으므로 모두 256비트의 데이터가 제1 레지스터(r0) 및 제2 레지스터(r1) 및 제3 레지스터(r3) 각각에 스팬 필드에 따라 저장된다. 이 경우에 센터 픽셀(531)의 마스크 비트는 0이므로 비팩형이므로 센터 픽셀에 대응되는 제2 레지스터(r1)의 일부에는 데이터가 저장되지 않는다. 이 경우에 도 10의 명령어(520)에서 오피 코드 필드(521)는 다중 로드 명령이 저장되고, 결과 어드레스 필드(522)는 제1 레지스터(r0)의 번호, 목록 또는 물리 어드레스가 저장되고, 피연산자 어드레스 필드(523)에는 시스템 메모리(120)의 로우(LOC0)의 베이스 어드레스(_base_addr)또는 베이스 어드레스(_base_addr)를 저장하는 다른 레지스터의 어드레스가 저장될 수 있다. 또한 이 경우에 데이터는 비팩형 포맷이므로 포맷 플래그 필드(525)에는 로우 레벨의 포맷 플래그(FF)가 저장될 수 있다.
도 10, 도 11b, 도 12, 도 13c 및 도 14c를 참조하면, 도 11a의 주변 픽셀들(532~539) 각각의 휘도 데이터를 제1 내지 제3 명령어들(561~563)에 따라 팩형 포맷으로 레지스터 파일(370)에 로딩하면, 주변 픽셀들(532~539) 각각이 16비트의 휘도 데이터를 포함하고 있으므로 모두 128비트의 데이터가 제1 레지스터(r0)에 순차적으로 저장된다. 이 경우에 도 10의 명령어(520)에서 오피 코드 필드(521)는 다중 로드 명령이 저장되고, 결과 어드레스 필드(522)는 제1 레지스터(r0)의 번호, 목록 또는 물리 어드레스가 저장되고, 피연산자 어드레스 필드(523)에는 시스템 메모리(120)의 로우(LOC0)의 베이스 어드레스(_base_addr)또는 베이스 어드레스(_base_addr)를 저장하는 다른 레지스터의 어드레스가 저장될 수 있다. 또한 이 경우에 데이터는 팩형 포맷이므로 포맷 플래그 필드(525)에는 하이 레벨의 포맷 플래그(FF)가 저장될 수 있다.
따라서 본 발명의 실시예들에 따른 그래픽 처리 장치 및 이의 동작 방법에서는 메모리의 복수의 로우들에 저장된 복수의 데이터를 레지스터 파일의 적어도 하나의 레지스터에 로딩하는 경우, 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 베이스 레지스터에 기입할 것을 지시하는 제1 명령어, 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함하는 다중 로드 명령어를 이용하여 메모리 로드 및 스토어 명령어의 (instruction) 수를 줄일 수 있다. 따라서 반복적인 로드/스토어 명령어의 pipeline 점유를 줄이고 다른 thread들이 그래픽 처리 파이프를 사용할 수 있도록 하여 그래픽 처리 장치의 전체적인 성능을 향상시킬 수 있다. 또한 메모리 트랜잭션을 융합(coalesce)할 수 있는 기회를 제공하여 메모리 접근 효율성을 증가시킬 수 있다.
도 15는 본 발명의 실시예에 따른 그래픽 처리 장치를 모바일 시스템에 응용한 예를 나타내는 블록도이다.
도 15를 참조하면, 모바일 시스템(700)은 어플리케이션 프로세서(710), 통신부(720), 메모리 장치(730), 디스플레이 장치(740), 사용자 인터페이스(750) 및 파워 서플라이(760)를 포함한다. 실시예에 따라서, 모바일 기기(700)는 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 태블릿(Tablet) PC, 노트북(Laptop Computer), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등과 같은 임의의 모바일 기기일 수 있다.
어플리케이션 프로세서(710)는 모바일 시스템(700)를 구동하기 위한 운영 체제(Operating System; OS)를 실행할 수 있다. 또한, 어플리케이션 프로세서(710)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 다양한 어플리케이션들을 실행할 수 있다. 실시예에 따라서, 어플리케이션 프로세서(710)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 또한, 실시예에 따라서, 어플리케이션 프로세서(710)는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다. 또한 어플리케이션 프로세서(710)는 그래픽 처리 장치(711)를 포함하여 외부로부터 제공되는 그래픽 모델을 처리하여 디스플레이 장치(740)에 제공할 수 있다. 그래픽 처리 장치(711)는 메모리 장치(730)에 저장된 복수의 데이터를 로딩하거나 메모리 장치(730)에 복수의 데이터를 저장하는 다중 로드/스토어 명령을 수행할 수 있다. 그래픽 처리 장치(711)는 도 2의 그래픽 처리 장치(200)로 구현될 수 있다.
따라서 그래픽 처리 장치(711)는 메모리 장치(730)의 복수의 로우들에 저장된 복수의 데이터를 레지스터 파일의 적어도 하나의 레지스터에 로딩하는 경우, 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 베이스 레지스터에 기입할 것을 지시하는 제1 명령어, 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함하는 다중 로드 명령어를 이용하여 메모리 관련 명령어 수를 감소시킬 수 있다. 또한 메모리에 대한 액세스 효율성을 높여서 그래픽 처리 장치의 성능을 향상시킬 수 있다.
통신부(720)는 외부 장치와 통신을 수행할 수 있다. 예를 들어, 통신부(720)는 범용 직렬 버스(Universal Serial Bus; USB) 통신, 이더넷(Ethernet) 통신, 근거리 무선 통신(Near Field Communication; NFC), 무선 식별(Radio Frequency Identification; RFID) 통신, 이동 통신(Mobile Telecommunication), 메모리 카드 통신 등을 수행할 수 있다. 예를 들어, 통신부(720)는 베이스밴드 칩 셋(Baseband Chipset)을 포함할 수 있고, GSM, GPRS, WCDMA, HSxPA 등의 통신을 지원할 수 있다.
메모리 장치(730)는 어플리케이션 프로세서(710)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다. 또한, 메모리 장치(730)는 모바일 시스템(700)를 부팅하기 위한 부트 이미지(boot image), 모바일 기기(700)를 구동하기 위한 상기 운영 체제와 관련된 파일 시스템(file system), 모바일 기기(700)와 연결되는 외부 장치와 관련된 장치 드라이버(device driver), 모바일 시스템(700)에서 실행되는 상기 어플리케이션 등을 저장할 수 있다. 예를 들어, 메모리 장치(730)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM, DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 휘발성 메모리를 포함할 수도 있고, EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 비휘발성 메모리를 포함할 수도 있다.
디스플레이 장치(740)는 그래픽 처리 장치(711)가 그래픽 모델을 처리하여 생성한 그래픽 데이터를 표시할 수 있다.
사용자 인터페이스(750)는 키패드, 버튼, 터치 스크린과 같은 하나 이상의 입력 장치, 및/또는 스피커와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(760)는 모바일 시스템(700)의 동작 전압을 공급할 수 있다.
모바일 시스템(700) 또는 모바일 시스템(700)의 구성요소들은 다양한 형태들의 패키지를 이용하여 실장될 수 있는데, 예를 들어, PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flat-Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat-Pack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
도 16은 본 발명의 실시예들에 따른 그래픽 처리 장치를 컴퓨팅 시스템에 응용한 예를 나타내는 블록도이다.
도 16 참조하면, 컴퓨팅 시스템(800)은 프로세서(810), 입출력 허브(820), 입출력 컨트롤러 허브(830), 적어도 하나의 메모리 모듈(840) 및 그래픽 처리 장치(851)를 구비하는 그래픽 카드(850)를 포함한다. 실시예에 따라, 컴퓨팅 시스템(800)은 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(portable game console), 네비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
프로세서(810)는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(810)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 실시예에 따라, 프로세서(810)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 예를 들어, 프로세서(810)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 도 16에는 하나의 프로세서(810)를 포함하는 컴퓨팅 시스템(800)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(800)은 복수의 프로세서들을 포함할 수 있다. 또한, 실시예에 따라, 프로세서(810)는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다.
프로세서(810)는 메모리 모듈(840)의 동작을 제어하는 메모리 컨트롤러(811)를 포함할 수 있다. 프로세서(810)에 포함된 메모리 컨트롤러(811)는 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)라 불릴 수 있다. 메모리 컨트롤러(811)와 메모리 모듈(840) 사이의 메모리 인터페이스는 복수의 신호선들을 포함하는 하나의 채널로 구현되거나, 복수의 채널들로 구현될 수 있다. 또한, 각 채널에는 하나 이상의 메모리 모듈(840)이 연결될 수 있다. 실시예에 따라, 메모리 컨트롤러(811)는 입출력 허브(820) 내에 위치할 수 있다. 메모리 컨트롤러(811)를 포함하는 입출력 허브(1520)는 메모리 컨트롤러 허브(Memory Controller Hub; MCH)라 불릴 수 있다.
메모리 모듈(840)은 메모리 컨트롤러(811)로부터 제공된 데이터를 저장하는 복수의 반도체 메모리 장치들을 포함할 수 있다. 상기 복수의 반도체 메모리 장치들은 프로세서(810)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다. 또한, 반도체 메모리 장치들은 컴퓨팅 시스템(800)을 부팅하기 위한 부트 이미지(boot image), 컴퓨팅 시스템(800)을를 구동하기 위한 상기 운영 체제와 관련된 파일 시스템(file system), 컴퓨팅 시스템(800)을와 연결되는 외부 장치와 관련된 장치 드라이버(device driver), 컴퓨팅 시스템(800)을에서 실행되는 상기 어플리케이션 등을 저장할 수 있다.
입출력 허브(820)는 그래픽 카드(850)와 같은 장치들과 프로세서(810) 사이의 데이터 전송을 관리할 수 있다. 입출력 허브(820)는 다양한 방식의 인터페이스를 통하여 프로세서(1510)에 연결될 수 있다. 예를 들어, 입출력 허브(820)와 프로세서(810)는, 프론트 사이드 버스(Front Side Bus; FSB), 시스템 버스(System Bus), 하이퍼트랜스포트(HyperTransport), 라이트닝 데이터 트랜스포트(Lightning Data Transport; LDT), 퀵패스 인터커넥트(QuickPath Interconnect; QPI), 공통 시스템 인터페이스(Common System Interface; CSI) 등의 다양한 표준의 인터페이스로 연결될 수 있다. 도 18에는 하나의 입출력 허브(820)를 포함하는 컴퓨팅 시스템(800)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(800)은 복수의 입출력 허브들을 포함할 수 있다.
입출력 허브(820)는 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 허브(820)는 가속 그래픽 포트(Accelerated Graphics Port; AGP) 인터페이스, 주변 구성요소 인터페이스-익스프레스(Peripheral Component Interface-Express; PCIe), 통신 스트리밍 구조(Communications Streaming Architecture; CSA) 인터페이스 등을 제공할 수 있다.
그래픽 카드(850)는 AGP 또는 PCIe를 통하여 입출력 허브(820)와 연결될 수 있다. 그래픽 카드(850)는 영상을 표시하기 위한 디스플레이 장치(미도시)를 제어할 수 있다. 그래픽 카드(850)는 이미지 데이터 처리를 위한 그래픽 처리 장치(851) 및 내부 반도체 메모리 장치를 포함할 수 있다. 그래픽 처리 장치(851)는 복수의 반도체 메모리 장치들에 저장된 복수의 데이터를 로딩하거나 복수의 반도체 메모리 장치들에 복수의 데이터를 저장하는 다중 로드/스토어 명령을 수행할 수 있다. 그래픽 처리 장치(851는 도 2의 그래픽 처리 장치(200)로 구현될 수 있다.
따라서 따라서 그래픽 처리 장치(851)는 복수의 반도체 메모리 장치들 각각의 복수의 로우들에 저장된 복수의 데이터를 레지스터 파일의 적어도 하나의 레지스터에 로딩하는 경우, 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 베이스 레지스터에 기입할 것을 지시하는 제1 명령어, 상기 복수의 로우들 중 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 적어도 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함하는 다중 로드 명령어를 이용하여 메모리 관련 명령어 수를 감소시킬 수 있다. 또한 메모리에 대한 액세스 효율성을 높여 그래픽 처리 장치의 성능을 향상시킬 수 있다
그 실시예에 따라, 입출력 허브(820)는, 입출력 허브(820)의 외부에 위치한 그래픽 카드(850)와 함께, 또는 그래픽 카드(850) 대신에 입출력 허브(820)의 내부에 그래픽 장치를 포함할 수 있다. 입출력 허브(1520)에 포함된 그래픽 장치는 집적 그래픽(Integrated Graphics)이라 불릴 수 있다. 또한, 메모리 컨트롤러 및 그래픽 장치를 포함하는 입출력 허브(820)는 그래픽 및 메모리 컨트롤러 허브(Graphics and Memory Controller Hub; GMCH)라 불릴 수 있다.
입출력 컨트롤러 허브(830)는 다양한 시스템 인터페이스들이 효율적으로 동작하도록 데이터 버퍼링 및 인터페이스 중재를 수행할 수 있다. 입출력 컨트롤러 허브(830)는 내부 버스를 통하여 입출력 허브(820)와 연결될 수 있다. 예를 들어, 입출력 허브(820)와 입출력 컨트롤러 허브(830)는 다이렉트 미디어 인터페이스(Direct Media Interface; DMI), 허브 인터페이스, 엔터프라이즈 사우스브릿지 인터페이스(Enterprise Southbridge Interface; ESI), PCIe 등을 통하여 연결될 수 있다.
입출력 컨트롤러 허브(1530)는 주변 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 컨트롤러 허브(830)는 범용 직렬 버스(Universal Serial Bus; USB) 포트, 직렬 ATA(Serial Advanced Technology Attachment; SATA) 포트, 범용 입출력(General Purpose Input/Output; GPIO), 로우 핀 카운트(Low Pin Count; LPC) 버스, 직렬 주변 인터페이스(Serial Peripheral Interface; SPI), PCI, PCIe 등을 제공할 수 있다.
실시예에 따라, 프로세서(810), 입출력 허브(820) 및 입출력 컨트롤러 허브(830)는 각각 분리된 칩셋들 또는 집적 회로들로 구현되거나, 프로세서(810), 입출력 허브(820) 또는 입출력 컨트롤러 허브(830) 중 2 이상의 구성요소들이 하나의 칩셋으로 구현될 수 있다.
본 발명의 실시예들에 따르면 다중 로드 명령어를 사용하여 메모리 장치에 저장된 복수의 데이터를 레지스터 파일에 로딩함으로써 데이터 로딩에 걸리는 시간을 감소시켜 성능을 높일 수 있다.
본 발명은 그래픽 처리 장치를 사용하는 다양한 시스템에 적용될 수 있다. 예를 들어, 본 발명은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 캠코더(Camcoder), 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템, 스마트 카드(Smart Card), 프린터(Printer) 등에 유용하게 이용될 수 있다.
상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다. 상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 그래픽 처리 시스템 120: 시스템 메모리
200: 그래픽 처리 장치 300: 코어
310: 명령어 메모리 320: 쓰레드 풀
330: 스케쥴러 350: 로드/스토어 유닌
370: 레지스터 파일
200: 그래픽 처리 장치 300: 코어
310: 명령어 메모리 320: 쓰레드 풀
330: 스케쥴러 350: 로드/스토어 유닌
370: 레지스터 파일
Claims (10)
- 프로그램 코드에서 메모리의 복수의 로우들에 저장된 복수의 데이터를 레지스터 파일의 적어도 하나의 레지스터에 로딩하기 위한 코드 영역을 검출하는 단계; 및
상기 검출된 코드 영역에 상응하는 적어도 하나의 명령어에 응답하여 로드/스토어 유닛이 상기 복수의 데이터를 상기 적어도 하나의 레지스터에 로딩하는 단계를 포함하고, 상기 적어도 하나의 명령어는 상기 복수의 로우들 중 로딩될 데이터를 저장하는 선택 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 로딩될 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함하고,
상기 복수의 로우들 중 하나의 로우에 저장되는 데이터들은 하나의 픽셀의 RGBA 데이터이거나 휘도 데이터를 포함하고,
상기 제어 정보에 기초하여 상기 메모리와 상기 레지스터 파일 사이의 메모리 트랜잭션의 수가 결정되고,
상기 적어도 하나의 명령어는 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어를 더 포함하고,
상기 제어 정보는 하나의 픽셀의 데이터에 대하여 상기 마스크 비트의 복사본 수를 나타내는 듀플리케이션 필드를 더 포함하는 그래픽 처리 장치의 동작 방법. - 삭제
- 제1항에 있어서,
상기 하나의 로우에 저장되는 데이터가 상기 하나의 픽셀의 RGBA 데이터인 경우, 상기 듀플리케이션 필드는 4인 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 제1항에 있어서,
상기 스팬 필드에 의하여 상기 복수의 로우들은 각각이 연속적인 어드레스들을 갖는 복수의 그룹들로 분할되고,
상기 스트라이드 필드에 의하여 상기 그룹들 사이의 어드레스 간격이 결정되는 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 제1항에 있어서,
상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함하는 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 제5항에 있어서,
상기 포맷 필드가 팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 마스크 비트에 따라 상기 레지스터들에 팩킹되어 저장되는 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 제5항에 있어서,
상기 포맷 필드가 비팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 스팬 필드에 따라 상기 레지스터들에 저장되는 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 제1항에 있어서,
상기 제3 명령어는 상기 시작 레지스터의 목록, 번호 및 물리 어드레스 중 하나를 더 포함하는 것을 특징으로 하는 그래픽 처리 장치의 동작 방법. - 호스트로부터의 원본 코드가 컴파일링되어 명령어로서 저장되는 명령어 메모리;
복수의 쓰레드들이 임시적으로 저장되는 쓰레드 풀에 연결되고 상기 명령어 메모리로부터 제공되는 명령어를 디코딩하는 스케쥴러;
상기 스케쥴러로부터 디코딩된 명령어가 메모리의 복수의 로우들에 저장된 복수의 데이터를 로딩하기 위한 다중 로드 명령어인 경우 상기 다중 로드 명령어에 기초하여 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 산출하는 로드/스토어 유닛; 및
상기 산출된 베이스 메모리 어드레스에 기초하여 상기 메모리에 저장된 복수의 데이터가 저장되는 적어도 하나의 레지스터를 구비하는 레지스터 파일을 포함하고,
상기 다중 로드 명령어는 상기 복수의 로우들 중 상기 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드 및 스트라이드 필드를 포함하는 제어 정보를 상기 적어도 하나의 레지스터 중 컨트롤 레지스터에 기입할 것을 지시하는 제2 명령어 및 상기 컨트롤 레지스터에 기입된 상기 제어 정보에 따라 베이스 레지스터에 기입된 주소에 해당하는 로우로부터 상기 로딩될 데이터를 시작 레지스터인 제1 레지스터로부터 저장할 것을 지시하는 제3 명령어를 포함하고,
상기 다중 로드 명령어는 상기 복수의 로우들 중 제1 로우를 지정하는 베이스 어드레스를 상기 적어도 하나의 레지스터 중 상기 베이스 레지스터에 기입할 것을 지시하는 제1 명령어를 더 포함하고,
상기 제어 정보는 상기 복수의 로우들 중 상기 로딩될 데이터를 저장하는 로우들을 지정하는 마스크 비트와 상기 복수의 로우들의 상호 관계를 나타내는 스팬 필드, 스트라이드 필드 및 하나의 픽셀의 데이터에 대하여 상기 마스크 비트의 복사본 수를 나타내는 듀플리케이션 필드를 더 포함하는 그래픽 처리 장치. - 제9항에 있어서,
상기 제3 명령어는 상기 적어도 하나의 레지스터들에 저장되는 상기 데이터들의 포맷을 나타내는 포맷 필드를 더 포함하고,
상기 포맷 필드가 팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 스팬 필드에 관계없이 상기 레지스터들에 팩킹되어 저장되고,
상기 포맷 필드가 비팩형 포맷임을 나타내는 경우, 상기 데이터들은 상기 스팬 필드에 따라 상기 레지스터들에 저장되는 것을 특징으로 하는 그래픽 처리 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130115399A KR102152735B1 (ko) | 2013-09-27 | 2013-09-27 | 그래픽 처리 장치 및 이의 동작 방법 |
US14/466,136 US9207936B2 (en) | 2013-09-27 | 2014-08-22 | Graphic processor unit and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130115399A KR102152735B1 (ko) | 2013-09-27 | 2013-09-27 | 그래픽 처리 장치 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150035161A KR20150035161A (ko) | 2015-04-06 |
KR102152735B1 true KR102152735B1 (ko) | 2020-09-21 |
Family
ID=52739706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130115399A KR102152735B1 (ko) | 2013-09-27 | 2013-09-27 | 그래픽 처리 장치 및 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9207936B2 (ko) |
KR (1) | KR102152735B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10163180B2 (en) | 2015-04-29 | 2018-12-25 | Qualcomm Incorporated | Adaptive memory address scanning based on surface format for graphics processing |
CN111723921B (zh) * | 2019-03-22 | 2024-05-14 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
CN110727520B (zh) * | 2019-10-23 | 2022-05-03 | 四川长虹电器股份有限公司 | 一种优化Android帧动画的实现方法 |
US20210407182A1 (en) * | 2020-06-26 | 2021-12-30 | Advanced Micro Devices, Inc. | Load instruction for multi sample anti-aliasing |
KR102408350B1 (ko) | 2020-06-30 | 2022-06-10 | 연세대학교 산학협력단 | 에너지 효율을 개선할 수 있는 그래픽 처리 장치를 위한 메모리 컨트롤러 및 이의 메모리 제어 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
WO2012134558A1 (en) | 2011-04-01 | 2012-10-04 | Intel Corporation | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
WO2013048369A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
WO2013048367A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector loads and stores with strides and masking functionality |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3261239B2 (ja) | 1993-07-27 | 2002-02-25 | 富士通株式会社 | データ転送の一括化処理方法 |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US6134602A (en) | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
US6966055B2 (en) | 2001-03-02 | 2005-11-15 | International Business Machines Corporation | Optimizing post-link code |
US6883067B2 (en) | 2002-02-08 | 2005-04-19 | Stmicroelectronics Limited | Evaluation and optimization of code |
US7493609B2 (en) | 2004-08-30 | 2009-02-17 | International Business Machines Corporation | Method and apparatus for automatic second-order predictive commoning |
US7730463B2 (en) | 2006-02-21 | 2010-06-01 | International Business Machines Corporation | Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support |
US8982140B2 (en) * | 2010-09-24 | 2015-03-17 | Nvidia Corporation | Hierarchical memory addressing |
-
2013
- 2013-09-27 KR KR1020130115399A patent/KR102152735B1/ko active IP Right Grant
-
2014
- 2014-08-22 US US14/466,136 patent/US9207936B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
WO2012134558A1 (en) | 2011-04-01 | 2012-10-04 | Intel Corporation | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
WO2013048369A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
WO2013048367A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector loads and stores with strides and masking functionality |
Non-Patent Citations (1)
Title |
---|
Milan STANIC, ‘Rapid Evaluation of Requirements for Vector Micro-Architectures’, A thesis for Master of Information Technology in Universitat Politecnica de Catalunya, 2011.09.21. 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR20150035161A (ko) | 2015-04-06 |
US9207936B2 (en) | 2015-12-08 |
US20150091918A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6274672B2 (ja) | 装置および方法 | |
JP6837011B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
US20220326951A1 (en) | Backward compatibility by restriction of hardware resources | |
KR102152735B1 (ko) | 그래픽 처리 장치 및 이의 동작 방법 | |
US10261796B2 (en) | Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory | |
GB2514882A (en) | Instruction emulation processors, methods, and systems | |
KR20170097633A (ko) | 융합된 단일 사이클 증가-비교-점프를 수행하기 위한 명령어 및 로직 | |
US9256429B2 (en) | Selectively activating a resume check operation in a multi-threaded processing system | |
RU2015151131A (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
US20200409705A1 (en) | Systems and methods to skip inconsequential matrix operations | |
KR20170065585A (ko) | 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
US9311094B2 (en) | Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions | |
US12008371B2 (en) | Method and apparatus for efficient programmable instructions in computer systems | |
US20160379336A1 (en) | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus | |
CN107851015B (zh) | 向量操作数位大小控制 | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
US8645791B2 (en) | Data cache controller, devices having the same, and method of operating the same | |
KR102644951B1 (ko) | 산술 논리 장치 레지스터 시퀀싱 | |
JP5993687B2 (ja) | ワンチッププロセッサ | |
JP5263497B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2004288203A (ja) | プロセッサコア及びこれを用いたプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |