KR101356541B1 - 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법 - Google Patents

멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법 Download PDF

Info

Publication number
KR101356541B1
KR101356541B1 KR1020120002394A KR20120002394A KR101356541B1 KR 101356541 B1 KR101356541 B1 KR 101356541B1 KR 1020120002394 A KR1020120002394 A KR 1020120002394A KR 20120002394 A KR20120002394 A KR 20120002394A KR 101356541 B1 KR101356541 B1 KR 101356541B1
Authority
KR
South Korea
Prior art keywords
instruction
cores
instructions
core
request signal
Prior art date
Application number
KR1020120002394A
Other languages
English (en)
Other versions
KR20130081425A (ko
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 KR1020120002394A priority Critical patent/KR101356541B1/ko
Publication of KR20130081425A publication Critical patent/KR20130081425A/ko
Application granted granted Critical
Publication of KR101356541B1 publication Critical patent/KR101356541B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F6/00Contraceptive devices; Pessaries; Applicators therefor
    • A61F6/005Packages or dispensers for contraceptive devices
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61FFILTERS IMPLANTABLE INTO BLOOD VESSELS; PROSTHESES; DEVICES PROVIDING PATENCY TO, OR PREVENTING COLLAPSING OF, TUBULAR STRUCTURES OF THE BODY, e.g. STENTS; ORTHOPAEDIC, NURSING OR CONTRACEPTIVE DEVICES; FOMENTATION; TREATMENT OR PROTECTION OF EYES OR EARS; BANDAGES, DRESSINGS OR ABSORBENT PADS; FIRST-AID KITS
    • A61F6/00Contraceptive devices; Pessaries; Applicators therefor
    • A61F6/02Contraceptive devices; Pessaries; Applicators therefor for use by males
    • A61F6/04Condoms, sheaths or the like, e.g. combined with devices protecting against contagion
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D75/00Packages comprising articles or materials partially or wholly enclosed in strips, sheets, blanks, tubes, or webs of flexible sheet material, e.g. in folded wrappers
    • B65D75/04Articles or materials wholly enclosed in single sheets or wrapper blanks
    • B65D75/14Articles or materials wholly enclosed in single sheets or wrapper blanks in sheets or blanks folded-up around all sides of the contents from a portion on which the contents are placed

Landscapes

  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Vascular Medicine (AREA)
  • Reproductive Health (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Mechanical Engineering (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

멀티 코어 프로세서는 하나의 명령어 캐시(cache) 및 복수의 코어들을 포함한다. 하나의 명령어 캐시는 명령어(instruction)를 저장한다. 복수의 코어들은 하나의 명령어 캐시를 공유한다. 복수의 코어들 각각은 명령어 캐시로부터 연속되는 주소들에 상응하는 복수의 명령어들을 동시에 수신하여 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행한다. 멀티 코어 프로세서는 사이즈를 줄일 수 있고 동작 속도를 증가시킬 수 있다.

Description

멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법{MULTI-CORE PROCESSOR, MULTI-CORE SYSTEM AND ELECTRONIC DEVICE INCLUDING THE SAME, AND METHOD OF SHARING CACHE IN MULTI-CORE PROCESSOR}
본 발명은 멀티 코어 프로세서(Multi-Core Processor)에 관한 것으로서, 더욱 상세하게는 하나의 캐시를 복수의 코어들이 공유하는 멀티 코어 프로세서 및 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법에 관한 것이다.
일반적인 멀티 코어 프로세서에 포함되는 각각의 코어들은 개별적인 캐시를 구비한다. 각각의 코어들은 개별적인 캐시에 명령어 및 데이터를 저장해놓고 사용하는데, 하나의 코어가 업데이트한 값이 개별적인 캐시에만 반영이 되는 경우 다른 코어에서 그 이후에 사용하는 값은 업데이트되지 않은 값이 되어 전체적인 동작에 오류를 야기하게 된다. 이를 위해, 종래의 멀티 코어 프로세서는 일관성 관리 프로토콜에 따라 개별적인 캐시들 간의 일관성을 관리하는 일관성 관리 유닛(Cache Coherence Management Unit; CMU)을 포함한다.
그러나 멀티 코어 프로세서가 일관성 관리 유닛을 포함하는 경우 하드웨어적으로 많은 공간을 차지하게 되고, 개별적인 캐시들 간의 일관성을 관리하는 데에 많은 사이클이 소비되므로 멀티 코어 프로세서의 전체적인 동작 속도가 저하되는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 하나의 캐시를 복수의 코어들이 공유하는 멀티 코어 프로세서를 제공하는 것이다.
본 발명의 다른 목적은 멀티 코어 프로세서에서 하나의 캐시를 복수의 코어들이 공유하는 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 상기 멀티 코어 프로세서를 포함하는 멀티 코어 시스템을 제공하는 것이다.
본 발명의 또 다른 목적은 상기 멀티 코어 시스템을 포함하는 전자 장치를 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 멀티 코어 프로세서는 하나의 명령어 캐시 및 복수의 코어들을 포함한다. 상기 하나의 명령어 캐시는 명령어(instruction)들을 저장하다. 상기 복수의 코어들은 상기 명령어 캐시를 공유한다. 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 연속되는 주소들에 상응하는 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행한다.
일 실시예에 있어서, 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 수신되는 상기 복수의 명령어들을 저장하는 버퍼를 포함할 수 있다.
상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 순차적으로 수행할 수 있다.
상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우 및 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우에 상기 필요한 명령어에 대한 주소를 포함하는 명령어 요청 신호를 상기 명령어 캐시에 제공할 수 있다.
상기 명령어 캐시는 상기 복수의 코어들 각각으로부터 상기 명령어 요청 신호를 수신하는 경우, 상기 명령어 요청 신호에 포함되는 상기 주소로부터 하는 연속되는 주소들에 상응하는 복수의 명령어들을 상기 명령어 요청 신호를 제공한 코어에 동시에 출력할 수 있다.
일 실시예에 있어서, 상기 명령어 캐시는 상기 명령어를 저장하는 싱글 포트 메모리(single port memory) 및 상기 복수의 코어들 각각으로부터 명령어 요청 신호를 수신하여 상기 명령어 요청 신호에 상응하는 복수의 명령어들을 상기 싱글 포트 메모리로부터 독출하여 상기 명령어 요청 신호를 제공한 코어에 동시에 출력하는 제어부를 포함할 수 있다.
상기 제어부는 상기 복수의 코어들 중에서 두 개 이상의 코어들로부터 상기 명령어 요청 신호를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 상기 선택된 코어로부터 제공되는 상기 명령어 요청 신호에 상응하는 복수의 명령어들을 상기 싱글 포트 메모리로부터 독출하여 상기 선택된 코어에 출력하고, 상기 두 개 이상의 코어들 중에서 상기 선택된 코어보다 우선순위가 낮은 코어들에는 대기 신호를 출력할 수 있다.
상기 제어부는 상기 복수의 코어들의 일련번호들과 상기 두 개 이상의 코어들 각각이 선택되는 시점을 나타내는 선택 시각을 연관시켜 저장하는 우선순위 테이블을 포함하고, 상기 제어부는 상기 복수의 코어들 중에서 두 개 이상의 코어들로부터 상기 명령어 요청 신호를 동시에 수신하는 경우, 상기 우선순위 테이블에서 상기 두 개 이상의 코어들에 상응하는 상기 선택 시각들을 독출하여 상기 선택 시각이 늦은 순서로 상기 두 개 이상의 코어들을 선택할 수 있다.
일 실시예에 있어서, 상기 멀티 코어 프로세서는 데이터를 저장하는 하나의 데이터 캐시를 더 포함하고, 상기 복수의 코어들은 상기 데이터 캐시를 공동으로 사용하여 상기 복수의 명령어들 각각에 상응하는 동작을 수행할 수 있다.
상기 복수의 코어들 각각은 상기 명령어에 대한 가상 주소와 물리 주소 쌍들을 저장하는 명령어 변환 참조 버퍼(Instruction Translation Lookaside Buffer; ITLB) 및 상기 데이터에 대한 가상 주소와 물리 주소 쌍들을 저장하는 데이터 변환 참조 버퍼(Data Translation Lookaside Buffer; DTLB)를 포함할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 멀티 코어 프로세서의 명령어 캐시 공유 방법에서, 복수의 코어들 각각이 명령어에 대한 주소를 포함하는 명령어 요청 신호를 하나의 명령어 캐시에 제공하고, 상기 명령어 캐시는 상기 복수의 코어들 중에서 두 개 이상의 코어들로부터 상기 명령어 요청 신호를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 상기 선택된 코어로부터 제공되는 상기 명령어 요청 신호에 상응하는 복수의 명령어들을 상기 선택된 코어에 제공하고, 상기 두 개 이상의 코어들 중에서 상기 선택된 코어보다 우선순위가 낮은 코어들에는 대기 신호를 제공하고, 상기 복수의 코어들 각각이 상기 명령어 캐시로부터 수신되는 상기 복수의 명령어들을 버퍼에 저장하고, 상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 순차적으로 수행할 수 있다.
일 실시예에 있어서, 상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우 및 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우에 상기 필요한 명령어에 대한 주소를 포함하는 상기 명령어 요청 신호를 상기 명령어 캐시에 제공할 수 있다.
일 실시예에 있어서, 상기 명령어 캐시는 상기 명령어를 저장하는 싱글 포트 메모리(single port memory)를 포함할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 멀티 코어 시스템은 멀티 코어 프로세서 및 메모리부를 포함한다. 상기 메모리부는 상기 멀티 코어 프로세서에 의해 수행되는 명령어(instruction)를 저장한다. 상기 멀티 코어 프로세서는 상기 메모리부에 저장된 상기 명령어를 임시로 저장하는 하나의 명령어 캐시(cache) 및 상기 명령어 캐시를 공유하는 복수의 코어(core)들을 포함한다. 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 연속되는 주소들에 상응하는 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행한다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 장치는 저장 장치, 멀티 코어 시스템 및 디스플레이 장치를 포함한다. 상기 저장 장치는 멀티미디어 데이터를 저장한다. 상기 멀티 코어 시스템은 상기 저장 장치로부터 수신되는 상기 멀티미디어 데이터를 변환하여 영상 출력 데이터로서 출력한다. 상기 디스플레이 장치는 상기 영상 출력 데이터를 표시한다. 상기 멀티 코어 시스템은 멀티 코어 프로세서 및 상기 멀티 코어 프로세서에 의해 수행되는 명령어를 저장하는 메모리부를 포함한다. 상기 멀티 코어 프로세서는 상기 메모리부에 저장된 상기 명령어를 임시로 저장하는 하나의 명령어 캐시(cache) 및 상기 명령어 캐시를 공유하는 복수의 코어(core)들을 포함한다. 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 연속되는 주소들에 상응하는 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행한다.
상기와 같은 본 발명의 실시예들에 따른 멀티 코어 프로세서는 하나의 명령어 캐시를 복수의 코어들이 공유하여 동작하고 복수의 코어들 간의 명령어 요청 신호의 충돌을 효과적으로 중재함으로써 전체적인 사이즈를 감소시키고 동작 속도를 증가시킬 수 있다.
또한, 하나의 명령어 캐시는 싱글 포트 메모리로 구현됨으로써 전체적인 사이즈를 더욱 감소시킬 수 있고 소비전력 또한 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 코어 프로세서를 나타내는 블록도이다.
도 2는 도 1의 멀티 코어 프로세서에 포함되는 명령어 캐시의 일 예를 나타내는 블록도이다.
도 3은 도 1의 멀티 코어 프로세서의 성능을 설명하기 위한 시뮬레이션 도면이다.
도 4는 본 발명의 다른 실시예에 따른 멀티 코어 프로세서를 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 멀티 코어 프로세서의 명령어 캐시 공유 방법을 나타내는 순서도이다.
도 6은 본 발명의 일 실시예에 따른 멀티 코어 시스템을 나타내는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 멀티 코어 프로세서를 나타내는 블록도이다.
도 1을 참조하면, 멀티 코어 프로세서(1000)는 복수의 코어(core)들(100-1, ..., 100-n)(n은 양의 정수) 및 하나의 명령어 캐시(instruction cache; ICACHE)(200)를 포함한다.
명령어 캐시(200)는 복수의 코어들(100-1, ..., 100-n)에 의해 수행될 명령어(instruction)들을 저장한다.
복수의 코어들(100-1, ..., 100-n)은 하나의 명령어 캐시(200)를 공유한다. 복수의 코어들(100-1, ..., 100-n) 각각은 명령어 캐시(200)로부터 명령어를 수신하여 상기 수신되는 명령어에 상응하는 동작을 수행한다. 복수의 코어들(100-1, ..., 100-n) 각각은 명령어 캐시(200)로부터 명령어를 수신하는 경우, 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)(m은 양의 정수)을 동시에 수신하여 복수의 명령어들(INST1, ..., INSTm) 각각에 상응하는 동작을 순차적으로 수행한다.
복수의 코어들(100-1, ..., 100-n) 각각은 버퍼(110-1, ..., 110-n)를 포함할 수 있다. 복수의 코어들(100-1, ..., 100-n) 각각은 명령어 캐시(200)로부터 수신되는 복수의 명령어들(INST1, ..., INSTm)을 버퍼(110-1, ..., 110-n)에 저장하고, 버퍼(110-1, ..., 110-n)에 저장된 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 순차적으로 수행할 수 있다.
복수의 코어들(100-1, ..., 100-n) 각각은 새로운 명령어가 필요한 경우 상기 새로운 명령어에 대한 주소(ADDR)를 포함하는 명령어 요청 신호(IR1, ..., IRn)를 명령어 캐시(200)에 제공한다. 즉, 제1 코어(100-1)는 제1 명령어 요청 신호(IR1)를 명령어 캐시(200)에 제공하고, 제n 코어(100-n)는 제n 명령어 요청 신호(IRn)를 명령어 캐시(200)에 제공한다. 예를 들어, 복수의 코어들(100-1, ..., 100-n) 각각은 버퍼(110-1, ..., 110-n)에 저장된 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 수행하는 과정에서 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우, 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 수행하는 도중에 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우 등에 상기 필요한 명령어에 대한 주소(ADDR)를 포함하는 명령어 요청 신호(IR1, ..., IRn)를 명령어 캐시(200)에 제공할 수 있다.
명령어 캐시(200)는 복수의 코어들(100-1, ..., 100-n) 각각으로부터 명령어 요청 신호(IR1, ..., IRn)를 수신하는 경우, 명령어 요청 신호(IR1, ..., IRn)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 명령어 요청 신호(IR1, ..., IRn)를 제공한 코어에 동시에 출력할 수 있다.
복수의 코어들(100-1, ..., 100-n) 각각과 명령어 캐시(200)를 연결하는 인터페이스의 비트폭(bit width)은 한 번의 명령어 요청 신호(IR1, ..., IRn)에 응답하여 명령어 캐시(200)가 동시에 출력하는 복수의 명령어들(INST1, ..., INSTm)의 개수에 따라 상이하게 결정될 수 있다. 명령어 캐시(200)가 명령어 요청 신호(IR1, ..., IRn)에 응답하여 출력하는 복수의 명령어들(INST1, ..., INSTm)의 개수는 멀티 코어 프로세서(1000)의 동작 속도 및 멀티 코어 프로세서(1000)의 구현 크기를 고려하여 미리 정해질 수 있다.
도 2는 도 1의 멀티 코어 프로세서에 포함되는 명령어 캐시의 일 예를 나타내는 블록도이다.
도 2를 참조하면, 명령어 캐시(200)는 싱글 포트 메모리(single port memory)(210) 및 제어부(220)를 포함할 수 있다.
싱글 포트 메모리(210)는 복수의 코어들(100-1, ..., 100-n)에 의해 수행될 명령어(instruction)들을 저장할 수 있다.
제어부(220)는 복수의 코어들(100-1, ..., 100-n) 각각으로부터 명령어 요청 신호(IR1, ..., IRn)를 수신하여 명령어 요청 신호(IR1, ..., IRn)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 싱글 포트 메모리(210)로부터 독출하여 명령어 요청 신호(IR1, ..., IRn)를 제공한 코어에 동시에 출력할 수 있다.
제어부(220)는 복수의 코어들(100-1, ..., 100-n) 중에서 두 개 이상의 코어들로부터 명령어 요청 신호(IR1, ..., IRn)를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 선택된 코어(COREi)(i는 n 이하의 양의 정수)로부터 제공되는 명령어 요청 신호(IRi)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 싱글 포트 메모리(210)로부터 독출하여 선택된 코어(COREi)에 출력하고, 상기 두 개 이상의 코어들 중에서 선택된 코어(COREi)보다 우선순위가 낮은 코어들에는 대기 신호(WAIT_S)를 출력할 수 있다.
일 실시예에 있어서, 제어부(220)는 복수의 코어들(100-1, ..., 100-n)의 일련번호들과 상기 두 개 이상의 코어들 각각이 선택되는 시점을 나타내는 선택 시각(S_TIME)을 연관시켜 저장하는 우선순위 테이블(211)을 포함할 수 있다.
이 경우, 제어부(220)는 복수의 코어들(100-1, ..., 100-n) 중에서 두 개 이상의 코어들로부터 명령어 요청 신호(IR1, ..., IRn)를 동시에 수신하는 경우, 우선순위 테이블(221)에서 상기 두 개 이상의 코어들에 상응하는 선택 시각(S_TIME)들을 독출하여 선택 시각(S_TIME)이 늦은 순서로 상기 두 개 이상의 코어들을 선택하고, 선택된 코어(COREi)로부터 제공되는 명령어 요청 신호(IRi)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 싱글 포트 메모리(210)로부터 독출하여 선택된 코어(COREi)에 출력하고, 상기 두 개 이상의 코어들 중에서 선택된 코어(COREi)보다 우선순위가 낮은 코어들에는 대기 신호(WAIT_S)를 출력할 수 있다.
다른 실시예에 있어서, 제어부(220)는 복수의 코어들(100-1, ..., 100-n) 각각에 대해 미리 정해진 우선순위를 저장하고, 상기 저장된 우선순위에 따라 상기 두 개 이상의 코어들을 선택할 수도 있다.
다시 도 1을 참조하면, 복수의 코어들(100-1, ..., 100-n) 각각은 명령어에 대한 가상 주소(virtual address)와 물리 주소(physical address) 쌍들을 저장하는 명령어 변환 참조 버퍼(Instruction Translation Lookaside Buffer; ITLB)(120-1, ..., 120-n)를 더 포함할 수 있다. 명령어 캐시(200)가 물리 주소를 인덱스(index)로 사용하는 경우, 복수의 코어들(100-1, ..., 100-n) 각각은 필요한 명령어에 대한 가상 주소를 명령어 변환 참조 버퍼(120-1, ..., 120-n)를 사용하여 물리 주소로 변환한 이후 상기 변환된 물리 주소를 사용하여 명령어 요청 신호(IR1, ..., IRn)를 생성할 수 있다.
종래의 멀티 코어 프로세서의 경우, 멀티 코어 포로세서에 포함되는 각각의 코어들은 개별적인 캐시를 구비하고, 상기 각각의 코어들은 상기 개별적인 캐시에 명령어를 저장해놓고 동작한다. 이 때, 하나의 코어가 업데이트한 값이 개별적인 캐시에만 반영이 되는 경우 다른 코어에서 그 이후에 사용하는 값은 업데이트되지 않은 값이 되어 전체적인 동작에 오류를 야기하게 된다. 이를 위해, 종래의 멀티 코어 프로세서는 일관성 관리 프로토콜에 따라 개별적인 캐시들 간의 일관성을 관리하는 일관성 관리 유닛(Cache Coherence Management Unit; CMU)을 포함한다. 그러나 멀티 코어 프로세서가 상기 일관성 관리 유닛을 포함하는 경우 하드웨어적으로 많은 공간을 차지하게 되고, 개별적인 캐시들 간의 일관성을 관리하는 데에 많은 사이클이 소비되므로 멀티 코어 프로세서의 전체적인 동작 속도가 저하되는 문제점이 있다.
이에 반해, 상술한 바와 같이, 본 발명의 일 실시예에 따른 멀티 코어 프로세서(1000)는 하나의 명령어 캐시(200)를 복수의 코어들(100-1, ..., 100-n)이 공동으로 사용한다. 이 때, 복수의 코어들(100-1, ..., 100-n)이 하나의 명령어 캐시(200)를 공유함에 의해 발생하는 명령어 요청 신호(IR1, ..., IRn)의 충돌을 감소시키기 위해, 복수의 코어들(100-1, ..., 100-n) 각각은 명령어 캐시(200)에 명령어 요청시, 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 동시에 수신하여 버퍼(110-1, ..., 110-n)에 저장한 후, 버퍼(110-1, ..., 110-n)에 저장된 복수의 명령어들(INST1, ..., INSTm) 각각에 상응하는 동작을 순차적으로 수행한다. 따라서 멀티 코어 프로세서(1000)는 전체적인 사이즈를 줄일 수 있고 동작 속도를 증가시킬 수 있다.
또한, 하나의 명령어 캐시(200)는 사이즈 및 소비전력이 상대적으로 큰 듀얼 포트 메모리(dual port memory)가 아닌 사이즈 및 소비전력이 상대적으로 작은 싱글 포트 메모리(210)를 사용하여 구현되고, 복수의 코어들(100-1, ..., 100-n)로부터의 명령어 요청 신호(IR1, ..., IRn)의 충돌은 제어부(220)가 중재하도록 구현된다. 따라서 멀티 코어 프로세서(1000)의 전체적인 사이즈 및 소비전력을 효과적으로 감소시킬 수 있다.
도 3은 도 1의 멀티 코어 프로세서의 성능을 설명하기 위한 시뮬레이션 도면이다.
도 3에서, 인터럽트는 발생하지 않는 것으로 가정하고, 복수의 코어들(100-1, ..., 100-n)이 수행하는 명령어들 중에서 20%의 명령어들이 브랜치(branch) 종류의 명령어들인 것으로 가정한다. 또한, 복수의 코어들(100-1, ..., 100-n)의 개수, 즉, n은 2인 것으로 가정한다.
도 3에서, 가로축은 한 번의 명령어 요청 신호(IR1, ..., IRn)에 응답하여 명령어 캐시(200)가 동시에 출력하는 복수의 명령어들(INST1, ..., INSTm)의 개수를 나타내고, 세로축은 표준 프로그램 수행 시간(standard execution time)과 복수의 코어들(100-1, ..., 100-n)로부터의 명령어 요청 신호(IR1, ..., IRn) 간의 충돌로 인한 프로그램 수행 시간의 증가분(overhead)의 비율을 나타낸다.
복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 하나의 명령어를 수행하므로, 복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 하나의 명령어를 필요로 한다.
따라서, 도 3에 도시된 바와 같이, 복수의 코어들(100-1, ..., 100-n) 각각이 한 번의 명령어 요청 신호(IR1, ..., IRn)에 응답하여 한 개의 명령어를 명령어 캐시(200)로부터 수신하여 동작하는 경우, 복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 명령어 캐시(200)에 명령어 요청 신호(IR1, ..., IRn)를 출력하게 되어 매 사이클마다 명령어 요청 신호(IR1, ..., IRn)가 충돌하게 된다. 따라서 전체적인 프로그램 수행 시간은 두 배가 된다.
복수의 코어들(100-1, ..., 100-n) 각각이 한 번의 명령어 요청 신호(IR1, ..., IRn)에 응답하여 두 개의 명령어를 명령어 캐시(200)로부터 수신하여 버퍼(110-1, ..., 110-n)에 저장한 후 동작하는 경우, 복수의 코어들(100-1, ..., 100-n)로부터의 명령어 요청 신호(IR1, ..., IRn)의 충돌 빈도가 감소하게 되어 전체적인 프로그램 수행 시간은 약 40% 정도 증가하게 된다.
그러나, 복수의 코어들(100-1, ..., 100-n) 각각이 한 번의 명령어 요청 신호(IR1, ..., IRn)에 응답하여 네 개 이상의 명령어를 명령어 캐시(200)로부터 수신하여 버퍼(110-1, ..., 110-n)에 저장한 후 동작하는 경우, 복수의 코어들(100-1, ..., 100-n)로부터의 명령어 요청 신호(IR1, ..., IRn)의 충돌 빈도가 더욱 감소하게 되어 전체적인 프로그램 수행 시간 증가분은 20% 미만에 불과하게 된다.
따라서 본 발명의 일 실시예에 따른 멀티 코어 프로세서(1000)는 복수의 코어들(100-1, ..., 100-n)이 하나의 명령어 캐시(200)를 공유함으로써 전체적인 사이즈를 줄일 수 있고, 복수의 코어들(100-1, ..., 100-n) 간의 명령어 요청 신호(IR1, ..., IRn)의 충돌을 최소화시킴으로써 동작 속도를 증가시킬 수 있다.
도 4는 본 발명의 다른 실시예에 따른 멀티 코어 프로세서를 나타내는 블록도이다.
도 4를 참조하면, 멀티 코어 프로세서(1001)는 복수의 코어(core)들(100-1, ..., 100-n), 하나의 명령어 캐시(instruction cache; ICACHE)(200) 및 하나의 데이터 캐시(data cache; DCACHE)(300)를 포함한다.
도 4의 멀티 코어 프로세서(1001)와 도 1의 멀티 코어 프로세서(1000)를 비교하면, 도 4의 멀티 코어 프로세서(1001)는 하나의 데이터 캐시(300)를 더 포함하는 것을 제외하고는 도 1의 멀티 코어 프로세서(1000)와 동일하다. 도 1의 멀티 코어 프로세서(1000)의 구성 및 동작에 대해서는 도 1 및 2를 참조하여 상세히 설명하였으므로, 여기서는 중복되는 설명은 생략하고 데이터 캐시(300)를 중심으로 설명한다.
데이터 캐시(300)는 복수의 코어들(100-1, ..., 100-n)이 명령어 캐시(200)로부터 수신하는 명령어를 수행하는 데에 필요한 데이터를 저장한다.
복수의 코어들(100-1, ..., 100-n)은 데이터 캐시(300)를 공동으로 사용하여 명령어 캐시(200)로부터 수신되는 복수의 명령어들(INST1, ..., INSTm) 각각에 상응하는 동작을 수행할 수 있다.
복수의 코어들(100-1, ..., 100-n) 각각은 명령어를 수행함에 있어 데이터가 필요한 경우 상기 필요한 데이터에 대한 주소(ADDR)를 포함하는 데이터 요청 신호(DR1, ..., DRn)를 데이터 캐시(300)에 제공할 수 있다. 즉, 제1 코어(100-1)는 제1 데이터 요청 신호(DR1)를 데이터 캐시(300)에 제공하고, 제n 코어(100-n)는 제n 데이터 요청 신호(DRn)를 데이터 캐시(300)에 제공할 수 있다.
일 실시예에 있어서, 데이터 캐시(300)는 복수의 코어들(100-1, ..., 100-n) 각각으로부터 데이터 요청 신호(DR1, ..., DRn)를 수신하는 경우, 데이터 요청 신호(DR1, ..., DRn)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 데이터들을 데이터 요청 신호(DR1, ..., DRn)를 제공한 코어에 동시에 출력할 수 있다. 이 경우, 데이터 캐시(300)는 도 2에 도시된 명령어 캐시(200)와 동일한 구성을 가질 수 있다. 도 2의 명령어 캐시(200)의 구성 및 동작에 대해서는 도 1 및 2를 참조하여 상세히 설명하였으므로, 여기서는 중복되는 설명은 생략한다.
복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 하나의 명령어를 수행하므로, 복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 하나의 명령어를 필요함에 반해, 복수의 코어들(100-1, ..., 100-n) 각각은 매 사이클마다 데이터를 필요로 하지는 않는다. 따라서 데이터 캐시(300)에서 복수의 코어들(100-1, ..., 100-n) 간의 데이터 요청 신호(DR1, ..., DRn)가 충돌하는 빈도는 상대적으로 낮다. 따라서, 다른 실시예에 있어서, 데이터 캐시(300)는 복수의 코어들(100-1, ..., 100-n) 각각으로부터 데이터 요청 신호(DR1, ..., DRn)를 수신하는 경우, 데이터 요청 신호(DR1, ..., DRn)에 포함되는 주소(ADDR)에 상응하는 하나의 데이터(DT)를 데이터 요청 신호(DR1, ..., DRn)를 제공한 코어에 출력할 수도 있다.
복수의 코어들(100-1, ..., 100-n) 각각은 데이터에 대한 가상 주소(virtual address)와 물리 주소(physical address) 쌍들을 저장하는 데이터 변환 참조 버퍼(Data Translation Lookaside Buffer; DTLB)(130-1, ..., 130-n)를 더 포함할 수 있다. 데이터 캐시(300)가 물리 주소를 인덱스(index)로 사용하는 경우, 복수의 코어들(100-1, ..., 100-n) 각각은 필요한 데이터에 대한 가상 주소를 데이터 변환 참조 버퍼(130-1, ..., 130-n)를 사용하여 물리 주소로 변환한 이후 상기 변환된 물리 주소를 사용하여 데이터 요청 신호(DR1, ..., DRn)를 생성할 수 있다.
도 5는 본 발명의 일 실시예에 따른 멀티 코어 프로세서의 명령어 캐시 공유 방법을 나타내는 순서도이다.
이하, 도 1 내지 5를 참조하여 멀티 코어 프로세서의 명령어 캐시 공유 방법에 대해 설명한다.
복수의 코어들(100-1, ..., 100-n) 각각이 필요로 하는 명령어에 대한 주소(ADDR)를 포함하는 명령어 요청 신호(IR1, ..., IRn)를 하나의 명령어 캐시(200)에 제공한다(단계 S100).
명령어 캐시(200)는 복수의 코어들(100-1, ..., 100-n) 중에서 두 개 이상의 코어들로부터 명령어 요청 신호(IR1, ..., IRn)를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 선택된 코어(COREi)로부터 제공되는 명령어 요청 신호(IRi)에 포함되는 주소(ADDR)를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들(INST1, ..., INSTm)을 싱글 포트 메모리(210)로부터 독출하여 선택된 코어(COREi)에 출력하고, 상기 두 개 이상의 코어들 중에서 선택된 코어(COREi)보다 우선순위가 낮은 코어들에는 대기 신호(WAIT_S)를 출력한다(단계 S200).
복수의 코어들(100-1, ..., 100-n) 각각은 명령어 캐시(200)로부터 수신되는 복수의 명령어들(INST1, ..., INSTm)을 버퍼(110-1, ..., 110-n)에 저장한다(단계 S300).
복수의 코어들(100-1, ..., 100-n) 각각은 버퍼(110-1, ..., 110-n)에 저장된 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 순차적으로 수행한다(단계 S400).
본 발명의 일 실시예에 따른 멀티 코어 프로세서의 명령어 캐시 공유 방법은 복수의 코어들(100-1, ..., 100-n) 각각이 버퍼(110-1, ..., 110-n)에 저장된 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 수행하는 과정에서 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우, 복수의 명령어들(INST1, ..., INSTm)에 상응하는 동작을 수행하는 도중에 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우 등에 상기 필요한 명령어에 대한 주소(ADDR)를 포함하는 명령어 요청 신호(IR1, ..., IRn)를 명령어 캐시(200)에 제공하는 단계를 더 포함할 수 있다(단계 S500).
이후, 단계 S100 내지 단계 S500이 반복적으로 수행될 수 있다.
도 5에 도시된 멀티 코어 프로세서의 명령어 캐시 공유 방법은 도 1의 멀티 코어 프로세서(1000) 및 도 4의 멀티 코어 프로세서(1001) 중의 하나에 의해 수행될 수 있다. 도 1의 멀티 코어 프로세서(1000) 및 도 4의 멀티 코어 프로세서(1001)의 구성 및 동작에 대해서는 도 1 내지 4를 참조하여 상세히 설명하였으므로, 여기서는 도 5의 각 단계에 대한 상세한 설명은 생략한다.
도 6은 본 발명의 일 실시예에 따른 멀티 코어 시스템을 나타내는 블록도이다.
도 6을 참조하면, 멀티 코어 시스템(2000)은 멀티 코어 프로세서(2100) 및 메모리부(2200)를 포함한다.
메모리부(2200)는 멀티 코어 프로세서(2100)에 의해 수행되는 명령어들을 저장한다.
멀티 코어 프로세서(2100)는 하나의 명령어 캐시 및 복수의 코어들을 포함한다.
상기 명령어 캐시는 메모리부(2200)에 저장된 상기 명령어를 임시로 저장한다.
상기 복수의 코어들은 상기 명령어 캐시를 공유하여 동작한다. 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 연속되는 주소들에 상응하는 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행한다.
도 6의 멀티 코어 프로세서(2100)는 도 1의 멀티 코어 프로세서(1000) 및 도 4의 멀티 코어 프로세서(1001) 중의 어느 하나로 구현될 수 있다. 도 1의 멀티 코어 프로세서(1000) 및 도 4의 멀티 코어 프로세서(1001)의 구성 및 동작에 대해서는 도 1 내지 4를 참조하여 상세히 설명하였으므로, 여기서는 멀티 코어 프로세서(2100)에 대한 상세한 설명은 생략한다.
멀티 코어 시스템(2000)은 타이머(2300) 및 연결 브리지(interconnect bridge)(2400)를 더 포함할 수 있다.
타이머(2300)는 멀티 코어 시스템(2000)의 동작 사이클을 제어하는데 사용될 수 있다. 연결 브리지(2400)는 멀티 코어 시스템(2000)을 외부 장치와 연결하는데 사용될 수 있다.
도 7은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 7을 참조하면, 전자 장치(3000)는 멀티 코어 시스템(3100), 저장 장치(3200) 및 디스플레이 장치(3300)를 포함한다.
저장 장치(3200)는 멀티미디어 데이터를 저장한다. 저장 장치(3200)는 플래시 메모리 장치(flash memory device), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD), 씨디롬(CD-ROM) 및 모든 형태의 비휘발성 메모리 장치 등을 포함할 수 있다.
멀티 코어 시스템(3100)은 저장 장치(3200)로부터 상기 멀티미디어 데이터를 수신한다. 멀티 코어 시스템(3100)은 상기 멀티미디어 데이터를 변환하여 영상 출력 데이터를 생성하고, 상기 생성된 영상 출력 데이터를 디스플레이 장치(3300)에 제공한다.
멀티 코어 시스템(3100)은 도 6의 멀티 코어 시스템(2000)으로 구현될 수 있다. 도 6의 멀티 코어 시스템(2000)의 구성 및 동작에 대해서는 도 1 내지 6을 참조하여 상세히 설명하였으므로, 여기서는 멀티 코어 시스템(3100)에 대한 상세한 설명은 생략한다.
디스플레이 장치(3300)는 멀티 코어 시스템(3100)으로부터 수신되는 상기 영상 출력 데이터를 표시한다. 디스플레이 장치(3300)는 유기 발광 표시 장치(Organic Light Emitting Display Device), LCD 장치(Liquid Crystal Display Device) 등을 포함할 수 있다.
전자 장치(3000)는 메모리 장치(MEMORY DEVICE)(3400), 사용자 인터페이스(USER INTERFACE)(3500) 및 입출력 장치(I/O DEVICE)(3600)를 더 포함할 수 있다. 또한, 도 7에는 도시되지 않았지만, 전자 장치(3000)는 메모리 카드, USB 장치 등과 통신하거나 다른 전자 기기들과 통신할 수 있는 여러 포트(port)들을 더 포함할 수 있다.
메모리 장치(3400)는 전자 장치(3000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(3400)는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM), 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM) 등과 같은 휘발성 메모리 장치 및 이피롬(Erasable Programmable Read-Only Memory; EPROM), 이이피롬(Electrically Erasable Programmable Read-Only Memory; EEPROM) 및 플래시 메모리 장치(flash memory device) 등과 같은 비휘발성 메모리 장치를 포함할 수 있다.
사용자 인터페이스(3500)는 사용자가 전자 장치(3000)를 동작시키는데 필요한 다양한 수단을 포함할 수 있다. 입출력 장치(3600)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터 등과 같은 출력 수단을 포함할 수 있다.
전자 장치(3000)는 멀티 코어 프로세서를 포함하는 임의의 장치일 수 있다. 예를 들어, 전자 장치(3000)는 스마트폰, 휴대폰, PDA(Personal Digital Assistant), 셋톱박스, 디지털 카메라, 모바일 게임기, 노트북, 컴퓨터, 텔레비전 등을 포함할 수 있다.
본 발명은 멀티 코어 프로세서를 포함하는 임의의 전자 장치에 유용하게 이용될 수 있다. 특히 본 발명은 복수의 코어들을 포함하는 멀티 코어 프로세서에 적용되어 전체적인 사이즈 및 소비전력을 감소시키고 동작 속도를 증가시키는 데에 유용하게 사용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
1000, 1001: 멀티 코어 프로세서 100-1 - 100-n: 코어
110-1 - 110-n: 버퍼 120-1 - 120-n: 명령어 변환 참조 버퍼
130-1 - 130-n: 데이터 변환 참조 버퍼
200: 명령어 캐시 210: 싱글 포트 메모리
220: 제어부 221: 우선순위 테이블
300: 데이터 캐시 2000: 멀티 코어 시스템
3000: 전자 장치

Claims (15)

  1. 명령어(instruction)를 저장하는 하나의 명령어 캐시(cache); 및
    상기 명령어 캐시를 공유하고, 수행할 명령어가 필요한 경우 상기 필요한 명령어에 대한 주소를 포함하는 명령어 요청 신호를 상기 명령어 캐시에 제공하는 복수의 코어(core)들을 포함하고,
    상기 명령어 캐시는 상기 복수의 코어들 중의 어느 한 코어로부터 상기 명령어 요청 신호를 수신하는 경우, 상기 명령어 요청 신호에 포함되는 상기 주소를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들을 상기 어느 한 코어에 동시에 출력하고, 상기 어느 한 코어는 상기 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행하는 것을 특징으로 하는 멀티 코어 프로세서.
  2. 제1 항에 있어서, 상기 복수의 코어들 각각은 상기 명령어 캐시로부터 수신되는 상기 복수의 명령어들을 저장하는 버퍼를 포함하는 것을 특징으로 하는 멀티 코어 프로세서.
  3. 제2 항에 있어서, 상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 순차적으로 수행하는 것을 특징으로 하는 멀티 코어 프로세서.
  4. 제2 항에 있어서, 상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우 및 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우에 상기 명령어 요청 신호를 상기 명령어 캐시에 제공하는 것을 특징으로 하는 멀티 코어 프로세서.
  5. 제1 항에 있어서, 상기 복수의 코어들 각각과 상기 명령어 캐시를 연결하는 인터페이스의 비트폭(bit width)은 상기 명령어 요청 신호에 응답하여 상기 명령어 캐시가 동시에 출력하는 상기 복수의 명령어들의 개수에 기초하여 결정되는 것을 특징으로 하는 멀티 코어 프로세서.
  6. 제1 항에 있어서, 상기 명령어 캐시는,
    상기 명령어를 저장하는 싱글 포트 메모리(single port memory); 및
    상기 복수의 코어들 중의 상기 어느 한 코어로부터 상기 명령어 요청 신호를 수신하는 경우, 상기 명령어 요청 신호에 상응하는 상기 복수의 명령어들을 상기 싱글 포트 메모리로부터 독출하여 상기 어느 한 코어에 동시에 출력하는 제어부를 포함하는 것을 특징으로 하는 멀티 코어 프로세서.
  7. 제6 항에 있어서, 상기 제어부는 상기 복수의 코어들 중에서 두 개 이상의 코어들로부터 상기 명령어 요청 신호를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 상기 선택된 코어로부터 제공되는 상기 명령어 요청 신호에 상응하는 복수의 명령어들을 상기 싱글 포트 메모리로부터 독출하여 상기 선택된 코어에 출력하고, 상기 두 개 이상의 코어들 중에서 상기 선택된 코어보다 우선순위가 낮은 코어들에는 대기 신호를 출력하는 것을 특징으로 하는 멀티 코어 프로세서.
  8. 삭제
  9. 제1 항에 있어서, 데이터를 저장하는 하나의 데이터 캐시를 더 포함하고,
    상기 복수의 코어들은 상기 데이터 캐시를 공동으로 사용하여 상기 복수의 명령어들 각각에 상응하는 동작을 수행하는 것을 특징으로 하는 멀티 코어 프로세서.
  10. 제9 항에 있어서, 상기 복수의 코어들 각각은,
    상기 명령어에 대한 가상 주소와 물리 주소 쌍들을 저장하는 명령어 변환 참조 버퍼(Instruction Translation Lookaside Buffer; ITLB); 및
    상기 데이터에 대한 가상 주소와 물리 주소 쌍들을 저장하는 데이터 변환 참조 버퍼(Data Translation Lookaside Buffer; DTLB)를 포함하는 것을 특징으로 하는 멀티 코어 프로세서.
  11. 복수의 코어들 각각이 수행할 명령어가 필요한 경우 상기 필요한 명령어에 대한 주소를 포함하는 명령어 요청 신호를 하나의 명령어 캐시에 제공하는 단계;
    상기 명령어 캐시는 상기 복수의 코어들 중에서 두 개 이상의 코어들로부터 상기 명령어 요청 신호를 동시에 수신하는 경우, 상기 두 개 이상의 코어들을 우선순위에 따라 순차적으로 선택하고, 상기 선택된 코어로부터 제공되는 상기 명령어 요청 신호에 포함되는 상기 주소를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들을 상기 선택된 코어에 동시에 제공하고, 상기 두 개 이상의 코어들 중에서 상기 선택된 코어보다 우선순위가 낮은 코어들에는 대기 신호를 제공하는 단계;
    상기 복수의 코어들 각각이 상기 명령어 캐시로부터 동시에 수신되는 상기 복수의 명령어들을 버퍼에 저장하는 단계; 및
    상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 순차적으로 수행하는 단계를 포함하는 멀티 코어 프로세서의 명령어 캐시 공유 방법.
  12. 제11 항에 있어서, 상기 복수의 코어들 각각은 상기 버퍼에 저장된 상기 복수의 명령어들에 상응하는 동작을 모두 수행하여 다음 주소의 명령어가 필요한 경우, 브랜치(branch) 명령이 발생하여 연속되지 않은 주소의 명령어가 필요한 경우 및 인터럽트(interrupt)가 발생하여 인터럽트 핸들러(handler)에 대한 명령어가 필요한 경우에 상기 필요한 명령어에 대한 주소를 포함하는 상기 명령어 요청 신호를 상기 명령어 캐시에 제공하는 단계를 더 포함하는 것을 특징으로 하는 멀티 코어 프로세서의 명령어 캐시 공유 방법.
  13. 제11 항에 있어서, 상기 명령어 캐시는 상기 명령어를 저장하는 싱글 포트 메모리(single port memory)를 포함하는 것을 특징으로 하는 멀티 코어 프로세서의 명령어 캐시 공유 방법.
  14. 멀티 코어 프로세서; 및
    상기 멀티 코어 프로세서에 의해 수행되는 명령어(instruction)를 저장하는 메모리부를 포함하고,
    상기 멀티 코어 프로세서는,
    상기 메모리부에 저장된 상기 명령어를 임시로 저장하는 하나의 명령어 캐시(cache); 및
    상기 명령어 캐시를 공유하고, 수행할 명령어가 필요한 경우 상기 필요한 명령어에 대한 주소를 포함하는 명령어 요청 신호를 상기 명령어 캐시에 제공하는 복수의 코어(core)들을 포함하고,
    상기 명령어 캐시는 상기 복수의 코어들 중의 어느 한 코어로부터 상기 명령어 요청 신호를 수신하는 경우, 상기 명령어 요청 신호에 포함되는 상기 주소를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들을 상기 어느 한 코어에 동시에 출력하고, 상기 어느 한 코어는 상기 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행하는 것을 특징으로 하는 멀티 코어 시스템.
  15. 멀티미디어 데이터를 저장하는 저장 장치;
    상기 저장 장치로부터 수신되는 상기 멀티미디어 데이터를 변환하여 영상 출력 데이터로서 출력하는 멀티 코어 시스템; 및
    상기 영상 출력 데이터를 표시하는 디스플레이 장치를 포함하고,
    상기 멀티 코어 시스템은 멀티 코어 프로세서 및 상기 멀티 코어 프로세서에 의해 수행되는 명령어를 저장하는 메모리부를 포함하고,
    상기 멀티 코어 프로세서는,
    상기 메모리부에 저장된 상기 명령어를 임시로 저장하는 하나의 명령어 캐시(cache); 및
    상기 명령어 캐시를 공유하고, 수행할 명령어가 필요한 경우 상기 필요한 명령어에 대한 주소를 포함하는 명령어 요청 신호를 상기 명령어 캐시에 제공하는 복수의 코어(core)들을 포함하고,
    상기 명령어 캐시는 상기 복수의 코어들 중의 어느 한 코어로부터 상기 명령어 요청 신호를 수신하는 경우, 상기 명령어 요청 신호에 포함되는 상기 주소를 시작으로 하여 연속되는 주소들에 상응하는 복수의 명령어들을 상기 어느 한 코어에 동시에 출력하고, 상기 어느 한 코어는 상기 복수의 명령어들을 동시에 수신하여 상기 복수의 명령어들 각각에 상응하는 동작을 순차적으로 수행하는 것을 특징으로 하는 전자 장치.
KR1020120002394A 2012-01-09 2012-01-09 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법 KR101356541B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120002394A KR101356541B1 (ko) 2012-01-09 2012-01-09 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120002394A KR101356541B1 (ko) 2012-01-09 2012-01-09 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법

Publications (2)

Publication Number Publication Date
KR20130081425A KR20130081425A (ko) 2013-07-17
KR101356541B1 true KR101356541B1 (ko) 2014-01-29

Family

ID=48993119

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120002394A KR101356541B1 (ko) 2012-01-09 2012-01-09 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법

Country Status (1)

Country Link
KR (1) KR101356541B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892046B2 (en) 2014-11-28 2018-02-13 Samsung Electronics Co., Ltd. Cache allocation based on quality-of-service information

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102030462B1 (ko) 2017-12-08 2019-10-10 현대오트론 주식회사 복수의 차량용 멀티 코어 프로세서 오류 모니터링 장치 및 그 방법
CN113138711B (zh) * 2020-01-20 2023-11-17 北京希姆计算科技有限公司 一种存储管理装置及芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010074544A (ko) * 2000-01-24 2001-08-04 비센트 비.인그라시아, 알크 엠 아헨 인터럽트 강제 레지스터를 포함하는 유연 인터럽트 제어기
KR100936601B1 (ko) * 2008-05-15 2010-01-13 재단법인서울대학교산학협력재단 멀티 프로세서 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010074544A (ko) * 2000-01-24 2001-08-04 비센트 비.인그라시아, 알크 엠 아헨 인터럽트 강제 레지스터를 포함하는 유연 인터럽트 제어기
KR100936601B1 (ko) * 2008-05-15 2010-01-13 재단법인서울대학교산학협력재단 멀티 프로세서 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892046B2 (en) 2014-11-28 2018-02-13 Samsung Electronics Co., Ltd. Cache allocation based on quality-of-service information
US10503647B2 (en) 2014-11-28 2019-12-10 Samsung Electronics Co., Ltd. Cache allocation based on quality-of-service information

Also Published As

Publication number Publication date
KR20130081425A (ko) 2013-07-17

Similar Documents

Publication Publication Date Title
CN109154918B (zh) 自刷新状态机mop阵列
EP2946302B1 (en) Heterogeneous memory systems, and related methods and computer-readable media for supporting heterogeneous memory access requests in processor-based systems
JPWO2008087779A1 (ja) アレイ型プロセッサおよびデータ処理システム
WO2014031255A1 (en) Multiport memory emulation using single-port memory devices
KR102004849B1 (ko) 동적 메모리 재할당 관리 방법과 상기 방법을 수행할 수 있는 장치
US20090300319A1 (en) Apparatus and method for memory structure to handle two load operations
US20120102262A1 (en) Memory control device, storage device, and memory control method
US20140025930A1 (en) Multi-core processor sharing li cache and method of operating same
US8184110B2 (en) Method and apparatus for indirect interface with enhanced programmable direct port
US20120047311A1 (en) Method and system of handling non-aligned memory accesses
KR101356541B1 (ko) 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법
CN103455468A (zh) 一种多gpu运算卡及多gpu之间的数据传输方法
KR100631778B1 (ko) 데이터 버퍼 회로, 인터페이스 회로 및 그 제어 방법
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
CN105190577A (zh) 合并存储器访问请求
US20080022052A1 (en) Bus Coupled Multiprocessor
US8990516B2 (en) Multi-core shared memory system with memory port to memory space mapping
US9767054B2 (en) Data transfer control device and memory-containing device
JP5382113B2 (ja) 記憶制御装置及びその制御方法
US8334874B2 (en) Apparatus and method for processing data
US20170255554A1 (en) Cache memory and operation method thereof
US11093432B1 (en) Multi-channel DIMMs
WO2019061227A1 (en) FIRST PRIMING WITH A MEMORY CHANNEL
KR101103818B1 (ko) 메모리 관리 유닛 제어 장치, 이를 포함하는 멀티 코어 프로세서, 컴퓨터 시스템 및 메모리 관리 유닛 제어 방법
Gulur et al. Row-buffer reorganization: simultaneously improving performance and reducing energy in drams

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 7