KR101710116B1 - 프로세서, 메모리 관리 장치 및 방법 - Google Patents

프로세서, 메모리 관리 장치 및 방법 Download PDF

Info

Publication number
KR101710116B1
KR101710116B1 KR1020100082694A KR20100082694A KR101710116B1 KR 101710116 B1 KR101710116 B1 KR 101710116B1 KR 1020100082694 A KR1020100082694 A KR 1020100082694A KR 20100082694 A KR20100082694 A KR 20100082694A KR 101710116 B1 KR101710116 B1 KR 101710116B1
Authority
KR
South Korea
Prior art keywords
mode
storage
processing core
unit
data
Prior art date
Application number
KR1020100082694A
Other languages
English (en)
Other versions
KR20120019329A (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 KR1020100082694A priority Critical patent/KR101710116B1/ko
Priority to US13/216,852 priority patent/US20120054468A1/en
Priority to EP11178827A priority patent/EP2423821A3/en
Priority to CN2011102514947A priority patent/CN102385502A/zh
Publication of KR20120019329A publication Critical patent/KR20120019329A/ko
Application granted granted Critical
Publication of KR101710116B1 publication Critical patent/KR101710116B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

하나의 메모리를 VLIW instruction cache 및 CGA configuration memory로 공용화해서 사용하기 위한 장치 및 방법이 제공된다. 구체적으로, 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부로부터 제 1 모드 및 제 2 모드를 갖는 프로세싱 코어에 데이터를 제공할 때, 프로세싱 코어가 상기 제 1 모드인지 또는 상기 제 2 모드인지 여부를 판단하고, 프로세싱 코어가 제 1 모드인 경우, 다수의 저장 공간 중 선택된 하나의 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하고, 프로세싱 코어가 제 2 모드인 경우, 다수의 저장 공간 중 선택된 적어도 2개의 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력한다.

Description

프로세서, 메모리 관리 장치 및 방법{Processor, Apparatus and Method for memory management}
재구성 가능 어레이(reconfigurable array)의 메모리 활용 기술과 관련된다.
재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다. 또한 재구성 가능 아키텍처는 수행 중인 작업 별로 그 구조가 최적화되는 것이 가능하기 때문에, 최근에는 VLIW 모드에서 일반적인 인스트럭션을 실행하고 CGA 모드에서 루프 연산을 실행하는 혼합형 VLIW/CGA 프로세서가 등장하게 되었다.
혼합형 VLIW/CGA 프로세서는 서로 다른 두 가지 종류의 메모리를 사용한다. 첫 번째는 VLIW 모드에서 인스트럭션을 저장하는 캐시 메모리(cache memory)이다. 두 번째는 CGA 모드에서 CGA 구성 정보를 저장하는 구성 메모리(configuration memory)이다. 그런데, 각각의 모드는 서로 배타적이기 때문에 실행 도중에 어느 하나의 메모리는 사용되지 않게 된다. 즉 VLIW 모드에서는 구성 메모리가 필요 없고, CGA 모드에서는 캐시 메모리가 필요 없게 되는데 이것은 메모리 집적 효율 및 에너지 활용 측면에서 좋지 못하다.
캐시 메모리 및 구성 메모리로 사용할 수 있는 재구성 가능 어레이의 공용 메모리 및 이러한 공용 메모리를 이용한 메모리 관리 기술이 제공된다.
본 발명의 일 양상에 따른 프로세서는 동작 모드로써 제 1 모드 또는 제 2 모드를 갖는 프로세싱 코어부, 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부, 및 프로세싱 코어부가 상기 제 1 모드인 경우, 다수의 저장 공간 중 하나를 선택하고 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하고, 프로세싱 코어부가 제 2 모드인 경우, 다수의 저장 공간 중 적어도 2개를 선택하고 선택된 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 출력 인터페이스부를 포함할 수 있다.
본 발명의 일 양상에 따른 메모리 관리 장치는 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부, 및 제 1 모드에서 다수의 저장 공간 중 하나를 선택하고 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하고, 제 2 모드에서 다수의 저장 공간 중 적어도 2개를 선택하고 선택된 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 출력 인터페이스부를 포함할 수 있다.
본 발명의 일 양상에 따른 메모리 관리 방법은 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부로부터 제 1 모드 및 제 2 모드를 갖는 프로세싱 코어에 데이터를 제공하기 위한 메모리 관리 방법으로써, 프로세싱 코어가 제 1 모드인지 또는 제 2 모드인지 여부를 판단하는 단계, 프로세싱 코어가 제 1 모드인 경우, 다수의 저장 공간 중 하나를 선택하고, 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하는 단계. 및 프로세싱 코어가 제 2 모드인 경우, 다수의 저장 공간 중 적어도 2개를 선택하고, 선택된 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 단계를 포함할 수 있다.
개시된 내용에 의하면, 하나의 메모리 장치를 인스트럭션 캐시 및 구성 메모리로 공용화해서 사용할 수 있기 때문에 메모리 칩의 집적 공간 및 에너지 소비를 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치를 도시한다.
도 2는 본 발명의 일 실시예에 따른 프로세싱 코어를 도시한다.
도 3은 본 발명의 일 실시예에 따른 메모리 관리 장치를 도시한다.
도 4는 본 발명의 일 실시예에 따른 출력 인터페이스부를 도시한다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 내부 메모리의 동작을 도시한다.
도 6은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치(100)를 도시한다.
도 1을 참조하면, 컴퓨팅 장치(100)는 프로세서(101)와 외부 메모리(102)를 포함하고, 프로세서(101)는 프로세싱 코어(103)와 내부 메모리(104)를 포함한다.
프로세서(101)는 여러 가지의 데이터를 처리한다. 처리될 데이터는 외부 메모리(102)로부터 내부 메모리(103)로 패치(fetch)된다. 프로세서(101) 내부의 프로세싱 코어(103)가 어떤 태스크를 수행할 때 외부 메모리(102)에 접근하는 것보다 내부 메모리(104)에 접근하는 것이 더 빠르기 때문에 처리될 데이터를 내부 메모리(103)로 가져다 놓고 처리하는 것이 처리 속도 면에서 더 유리하다.
프로세싱 코어(103)는 동적 재구성 가능 어레이(dynamic reconfigurable array)에 기초하여 형성된다. 동적 재구성 가능 어레이란 시스템의 구조가 그 시스템의 사용 목적에 따라 동적으로 바뀔 수 있는 프로세서를 말한다. 따라서 프로세싱 코어(103)의 하드웨어 아키텍처는 처리 목적에 따라 변할 수 있다. 예를 들어, 프로세싱 코어(103)는 서로 배타적인 제 1 모드와 제 2 모드를 가질 수 있다. 제 1 모드는 일반적인 연산 수행에 적합한 VLIW(very long instruction word) 모드가 될 수 있다. 제 2 모드는 루프 연산 수행에 적합한 CGA(coarse-grained mode) 모드가 될 수 있다. 예컨대, 프로세싱 코어(103)는 제 1 모드에서 일반적인 연산을 처리하다가 루프 연산을 만나게 되면 제 2 모드로 전환해서 루프 연산을 처리하고 루프 연산이 끝나면 다시 제 1 모드로 전환되는 것이 가능하다.
각각의 모드에서 프로세싱 코어(103)의 구조는 각 모드에서 수행되는 연산에 최적화된다. 예를 들어, 제 2 모드에서 프로세싱 코어(103)의 구조는 루프 연산을 처리하기 위해 그 루프 연산에 최적화되는 것이 가능하다. 각각의 모드에서 처리되는 데이터, 인스트럭션 및 프로세싱 코어(103)의 구조를 정의하는 구성 정보(configuration information)는 내부 메모리(104)에 저장될 수 있다.
내부 메모리(104)는 프로세싱 코어(103)의 각 모드마다 다른 종류의 데이터를 출력한다. 내부 메모리(104)는 프로세싱 코어(103)의 제 1 모드에 응답하여 제 1 데이터를 출력하고, 프로세싱 코어(103)의 제 2 모드에 응답하여 제 1 데이터와 상이한 제 2 데이터를 출력할 수 있다. 예컨대, 제 1 데이터는 VLIW 모드에서의 일반적인 인스트럭션이 될 수 있고, 제 2 데이터는 CGA 모드에서의 루프 인스트럭션 및 CGA 구조를 정의하는 구성 정보(configuration information)가 될 수 있다.
다시 말해, 내부 메모리(104)는, 프로세싱 코어(103)가 제 1 모드인 경우, 인스트럭션 캐시(instruction cache)로 동작하고, 프로세싱 코어(103)가 제 2 모드인 경우, 구성 메모리(configuration memory)로 동작하는 것이 가능하다.
도 2는 본 발명의 일 실시예에 따른 프로세싱 코어를 도시한다. 이것은 도 1의 프로세싱 코어(103)에 관한 일 예가 될 수 있다.
도 1 및 도 2를 참조하면, 프로세싱 코어(200)는 다수의 프로세싱 엘리먼트(201)와 중앙 데이터 레지스터 파일(202)을 포함한다.
각각의 프로세싱 엘리먼트(PE#0~PE#15)는 계산 유닛(function unit), 또는 계산 유닛 및 레지스터 파일(register file)로 구성될 수 있다. 그리고 각 프로세싱 엘리먼트(PE#0~PE#15)은 어떤 작업을 독립적으로 처리하는 것이 가능하다.
다수의 프로세싱 엘리먼트(201) 중에서 첫 번째 행의 프로세싱 엘리먼트들(PE#0~PE#3)은 제 1 모드에서 VLIW 프로세서로 사용될 수 있다. 즉 VLIW 모드에서 첫 번째 행의 프로세싱 엘리먼트들(PE#0~PE#3)은 일반적인 인스트럭션을 수행하는 것이 가능하다. 또는 레지스터 파일을 공유하는 별도의 프로세싱 엘리먼트가 VLIW 프로세서로 사용될 수 있다.
다수의 프로세싱 엘리먼트(201) 중에서 전체의 프로세싱 엘리먼트들(PE#0~PE#15)은 제 2 모드에서 CGA 프로세서로 사용될 수 있다. 즉 CGA 모드에서 전체의 프로세싱 엘리먼트들(PE#0~PE#15)은 루프 연산에 최적화되어 루프와 관련된 인스트럭션을 수행하는 것이 가능하다.
중앙 데이터 레지스터 파일(202)은 VLIW 모드에서 CGA 모드로의 전환, 또는 그 역으로의 전환 시에 데이터를 임시로 저장한다.
본 실시예에 따라, 제 1 모드 또는 VLIW 모드에서 필요한 데이터 및 인스트럭션들을 제 1 데이터라고 하고, 제 2 모드 또는 CGA 모드에서 필요한 데이터 및 인스트럭션들을 제 2 데이터라고 한다. 즉, 제 1 데이터는 VLIW 모드에서의 VLIW instruction이 될 수 있고, 제 2 데이터는 CGA 모드에서 프로세싱 엘리먼트들(201)의 연결 상태와 어떤 데이터를 어떤 프로세싱 엘리먼트가 처리할지를 정의한 configuration information이 될 수 있다.
도 3은 본 발명의 일 실시예에 따른 메모리 관리 장치를 도시한다. 이것은 도 1의 내부 메모리(104)에 관한 일 예가 될 수 있다.
도 1 및 도 3을 참조하면, 메모리 관리 장치(300)는 저장부(301)와 출력 인터페이스부(302)를 포함한다.
저장부(301)는 다수의 저장 공간(bank#0~bank#n)으로 구성되며, 각각의 저장 공간(bank#0~bank#n)은 다수의 저장 라인(303)으로 구분된다.
출력 인터페이스부(302)는 프로세싱 코어(103)의 모드에 따라 서로 다른 종류의 데이터를 프로세싱 코어(103)로 제공한다. 일 예로써, 프로세싱 코어(103)가 VLIW 모드인 경우, 출력 인터페이스부(302)는 어느 하나의 저장 공간(bank#0)을 선택하고 선택된 저장 공간(bank#0)의 저장 라인에 대응되는 데이터(data1)를 출력한다. 다른 예로써, 프로세싱 코어(103)가 CGA 모드인 경우, 출력 인터페이스부(302)는 모든 저장 공간(bank#0~bank#n)을 선택하고, 선택된 저장 공간(bank#0~bank#n)의 각 저장 라인에 대응되는 데이터(data2, data3, ..., data n)를 합쳐서 출력한다. 따라서, 본 실시예에 따라, VLIW 모드에서 출력된 제 1 데이터(310)는 VLIW instruction이 될 수 있고, CGA 모드에서 출력된 제 2 데이터(320)는 CGA configuration information이 될 수 있다.
출력 인터페이스부(302)가 저장부(301)의 어떤 저장 라인을 선택할지는 프로세싱 코어(103)로부터 전달 받은 주소에 따라 결정될 수 있다. 또한, 선택적으로, 제 1 모드에서 출력되는 데이터는 전달 받은 주소에 포함된 오프셋에 따라 선택된 저장 공간(bank#0)의 저장 라인에 대응되는 데이터(data1)중 일부가 출력될 수도 있다. 나아가, 제 2 모드에서 모든 저장 공간(bank#0~bank#n)의 저장 라인이 선택될 수도 있고 configuration information의 크기에 따라 일부의 저장 공간(bank#0~bank#1)의 저장 라인이 선택될 수도 있다.
도 4는 본 발명의 일 실시예에 따른 출력 인터페이스부를 도시한다.
도 1, 도 3 및 도 4를 참조하면, 출력 인터페이스부(400)는 제 1 출력부(401), 제 2 출력부(402), 및 모드 판단부(403)를 포함할 수 있다.
제 1 출력부(401)는 다수의 저장 공간(bank#0~bank#n) 중에서 하나를 선택한다. 선택되는 저장 공간(예컨대, bank#0)은 프로세싱 코어(103)로부터 전달 받은 주소에 포함된 tag에 따라 결정될 수 있다. 제 1 출력부(401)는 선택된 저장 공간(bank#0)에서 특정한 저장 라인을 선택한다. 선택되는 저장 라인은 프로세싱 코어(103)로부터 전달 받은 주소에 포함된 index에 따라 결정될 수 있다. 제 1 출력부(401)는 선택된 저장 라인에 존재하는 데이터 중 일부 또는 전부(310)를 출력해서 프로세싱 코어(103)로 제공한다.
제 2 출력부(402)는 다수의 저장 공간(bank#0~bank#n) 중에서 연속적으로 2개 이상을 선택한다. 일 예로써, 제 2 출력부는(402)는 모든 저장 공간(301)을 선택하는 것이 가능하다. 제 2 출력부(402)는 선택된 저장 공간(301)에서 특정한 저장 라인을 선택한다. 선택되는 저장 라인은 프로세싱 코어(103)로부터 전달 받은 주소에 포함된 index에 따라 결정될 수 있다. 제 2 출력부(402)는 선택된 저장 라인에 존재하는 데이터를 결합한 데이터(302)를 출력해서 프로세싱 코어(103)로 제공한다.
모드 판단부(403)는 프로세싱 코어(103)의 모드 전환을 판단한다. 예를 들어, 모드 판단부(403)는 프로세싱 코어(103)가 VLIW 모드인지 또는 CGA 모드인지 여부를 판단한다. 그리고 모드 판단부(403)는 판단 결과에 따라 제 1 출력부(401) 또는 제 2 출력부(402) 중 하나를 활성화시킨다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 내부 메모리의 동작을 도시한다.
도 5a를 참조하면, 내부 메모리(500)는 VLIW 모드에서 VLIW instruction을 제공하는 "n-way set associative cache"로 동작할 수 있다. 예컨대, 도 5a에서, 주소가 수신되면, 주소의 index는 각각 tag set과 data set으로 전달되고 주소의 tag는 태그 비교기(501)로 전달된다. 태그 비교기(501)는 주소에 포함된 tag와 index로부터 식별된 tag를 비교해서 일치하는지 여부를 확인한다. 만약 tag가 일치하면 일치하는 tag를 데이터 선택부(502)로 전달한다. 데이터 선택부(502)는 일치하는 tag에 대응되는 데이터를 data set에서 선택하고 선택된 data를 출력한다. 또한 선택적으로, 데이터 선택부(502)는 선택된 data에서 offset을 고려해서 그 일부를 출력할 수도 있다. 데이터 선택부(502)로부터 출력되는 data에는 VLIW 모드에서 사용될 데이터 및 인스트럭션 등이 담길 수 있다.
도 5b를 참조하면, 내부 메모리(500)는 CGA 모드에서 CGA configuration information을 제공하는 "directed-mapped cached configuration memory"로 동작할 수 있다. 예컨대, 도 5b에서, 주소가 수신되면, 주소의 index는 각각 tag set과 data set으로 전달되고 주소의 tag는 태그 비교기(501)로 전달된다. CGA 모드에서의 configuration information은 VLIW 모드에서의 VLIW instruction 보다 그 크기가 크므로 도 5b에서는 도 5a와 같이 n-way를 구분하지 않고 tag set을 하나만 사용하고 여러 개의 data set을 하나의 data set로 취급하는 것이 가능하다. 태그 비교기(501)는 주소에 포함된 tag와 index로부터 식별된 tag를 비교해서 일치하는지 여부를 확인한다. 만약 tag가 일치하면 일치하는 tag를 데이터 결합부(503)로 전달한다. 데이터 결합부(503)는 일치하는 tag에 대응되는 데이터를 data set에서 선택하고 선택된 data를 출력한다. 즉, 도 5b에서는 data set의 하나의 라인이 configuration line이 될 수 있으며, 데이터 결합부(503)로부터 출력되는 data에는 CGA 모드에서 사용될 데이터 및 인스트럭션, 하드웨어 아키텍처의 구성 정보 등이 담길 수 있다.
도 6은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.
도1, 도 3, 도 4 및 도 6을 참조하여 본 실시예에 따른 메모리 관리 방법을 설명하면 다음과 같다.
먼저 프로세싱 코어(103)가 VLIW 모드인지 또는 CGA 모드인지 여부를 판단한다(601). 예컨대, 모드 전환부(403)가 프로세싱 코어(103)에서 수행될 인스트럭션 셋 중에서 모드 전환이 이루어지는 부분을 검출해서 프로세싱 코어(103)의 모드 전환 여부를 판단하는 것이 가능하다.
프로세싱 코어(103)가 VLIW 모드인 경우, 제 1 출력부(401)를 활성화한다(602). 그리고 제 1 출력부(401)를 통해 VLIW instruction을 출력한다(603). 예를 들어, 제 1 출력부(401)가 다수의 저장 공간(bank#0~bank#n) 중에서 하나를 선택하고, 선택된 저장 공간(예컨대, bank#0)의 특정한 저장 라인에 포함된 데이터의 전부 또는 일부를 출력하는 것이 가능하다.
프로세싱 코어(103)가 CGA 모드인 경우, 제 2 출력부(402)를 활성화한다(604). 그리고 제 2 출력부(402)를 통해 CGA configuration을 출력한다(605). 예를 들어, 제 2 출력부(402)가 모든 저장 공간(301)을 선택하고 선택된 저장 공간(301)의 각 저장 라인의 데이터를 결합해서 출력하는 것이 가능하다.
이상에서 살펴본 것과 같이, 개시된 장치 및 방법에 의하면, VLIW/CGA mixed processor에서 processor의 각 상태에 따라 processor 내부의 하나의 메모리 장치를 "n-way set associative cache" 또는 "directed-mapped cached configuration memory"로 선택적으로 사용할 수 있게 된다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명의 실시를 위한 구체적인 예를 살펴보았다. 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (12)

  1. 동작 모드로써 제 1 모드 또는 제 2 모드를 갖는 프로세싱 코어부;
    다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부; 및
    상기 프로세싱 코어부로부터 태그(tag) 및 인덱스(index)를 포함하는 주소(address)를 전달 받고, 상기 프로세싱 코어부가 상기 제 1 모드인 경우, 상기 다수의 저장 공간 중 하나를 선택하고 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하고, 상기 프로세싱 코어부가 상기 제 2 모드인 경우, 상기 다수의 저장 공간 중 적어도 2개를 선택하고 선택된 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 출력 인터페이스부; 를 포함하고,
    상기 출력 인터페이스부는
    상기 프로세싱 코어부가 상기 제 1 모드인지 또는 상기 제 2 모드인지 여부를 판단하고, 상기 프로세싱 코어부에서 수행될 인스트럭션 셋 중에서 모드 전환이 이루어지는 부분을 검출하여 상기 프로세싱 코어부의 모드 전환 여부를 판단하는 모드 판단부;
    상기 프로세싱 코어부가 상기 제 1 모드인 경우, 상기 주소에 포함된 태그에 따라 상기 하나의 저장 공간을 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 선택된 저장 공간의 저장 라인을 선택하며, 상기 선택된 저장 라인에 대응되는 제 1 데이터를 출력하는 제 1 출력부; 및
    상기 프로세싱 코어부가 상기 제 2 모드인 경우, 구성 정보의 크기에 따라 상기 다수의 저장 공간 중 적어도 2개를 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 선택된 적어도 2개의 저장 공간들의 저장 라인을 선택하고, 상기 선택된 저장 라인에 대응되는 제 2 데이터를 출력하는 제 2 출력부; 를 포함하는 프로세서.
  2. 제 1 항에 있어서, 상기 프로세싱 코어부는
    재구성 가능 어레이(reconfigurable array)로 형성되고,
    상기 제 1 모드에서 VLIW(very long instruction word) 아키텍처로 동작하는 프로세서.
  3. 제 2 항에 있어서, 상기 출력 인터페이스부는
    상기 제 1 데이터로써 상기 VLIW 아키텍처 상에서 처리될 VLIW 인스트럭션을 출력하는 프로세서.
  4. 제 1 항에 있어서, 상기 프로세싱 코어부는
    재구성 가능 어레이(reconfigurable array)로 형성되고,
    상기 제 2 모드에서 CGA(coarse-grained array) 아키텍처로 동작하는 프로세서.
  5. 제 4 항에 있어서, 상기 출력 인터페이스부는
    상기 제 2 데이터로써 상기 CGA 아키텍처 상에서 처리될 CGA 인스트럭션 및 상기 CGA 아키텍처의 구조를 정의하기 위한 구성 정보(configuration information)를 출력하는 프로세서.
  6. 삭제
  7. 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부; 및
    프로세싱 코어부로부터 태그(tag) 및 인덱스(index)를 포함하는 주소(address)를 전달 받고, 제 1 모드에서 상기 다수의 저장 공간 중 하나를 선택하고 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하고, 제 2 모드에서 구성 정보의 크기에 따라 상기 다수의 저장 공간 중 적어도 2개를 선택하고 선택된 저장 공간들의 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 출력 인터페이스부; 를 포함하고,
    상기 출력 인터페이스부는,
    상기 제 1 데이터 또는 상기 제 2 데이터를 처리할 프로세싱 코어부가 상기 제 1 모드인지 또는 상기 제 2 모드인지 여부를 판단하고, 프로세싱 코어부에서 수행될 인스트럭션 셋 중에서 모드 전환이 이루어지는 부분을 검출하여 상기 프로세싱 코어부의 모드 전환 여부를 판단하는 모드 판단부;
    상기 프로세싱 코어부가 상기 제 1 모드인 경우, 상기 주소에 포함된 태그에 따라 상기 하나의 저장 공간을 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 선택된 저장 공간의 저장 라인을 선택하며, 상기 선택된 저장 라인에 대응되는 제 1 데이터를 출력하는 제 1 출력부; 및
    상기 프로세싱 코어부가 상기 제 2 모드인 경우, 구성 정보의 크기에 따라 상기 다수의 저장 공간 중 적어도 2개를 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 선택된 적어도 2개의 저장 공간들의 저장 라인을 선택하고, 상기 선택된 저장 라인에 대응되는 제 2 데이터를 출력하는 제 2 출력부; 를 포함하는 메모리 관리 장치.
  8. 삭제
  9. 다수의 저장 라인을 갖는 적어도 1 이상의 저장 공간을 포함하는 저장부로부터 제 1 모드 및 제 2 모드를 갖는 프로세싱 코어에 데이터를 제공하기 위한 메모리 관리 방법으로써,
    상기 프로세싱 코어로부터 태그(tag) 및 인덱스(index)를 포함하는 주소(address)를 전달 받는 단계;
    상기 프로세싱 코어에서 수행될 인스트럭션 셋 중에서 모드 전환이 이루어지는 부분을 검출하여 상기 프로세싱 코어가 상기 제 1 모드인지 또는 상기 제 2 모드인지 여부를 판단하는 단계;
    상기 프로세싱 코어가 상기 제 1 모드인 경우, 상기 주소에 포함된 태그에 따라 상기 다수의 저장 공간 중 하나를 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 선택된 저장 공간의 저장 라인을 선택하며, 상기 선택된 저장 공간의 저장 라인에 대응되는 제 1 데이터를 출력하는 단계; 및
    상기 프로세싱 코어가 상기 제 2 모드인 경우, 구성 정보의 크기에 따라 상기 다수의 저장 공간 중 적어도 2개를 선택하고, 상기 주소에 포함된 인덱스에 따라 상기 적어도 2개의 저장 공간들의 저장 라인을 선택하고, 상기 선택된 저장 라인들에 대응되는 데이터들을 결합한 제 2 데이터를 출력하는 단계; 를 포함하는 메모리 관리 방법.
  10. 제 9 항에 있어서,
    상기 제 1 모드는 상기 프로세싱 코어의 VLIW 모드이고,
    상기 제 2 모드는 상기 프로세싱 코어의 CGA 모드인 메모리 관리 방법.
  11. 제 10 항에 있어서, 상기 제 1 데이터를 출력하는 단계는
    상기 VLIW 모드에서 처리될 VLIW 인스트럭션을 출력하는 메모리 관리 방법.
  12. 제 10 항에 있어서, 상기 제 2 데이터를 출력하는 단계는
    상기 CGA 모드에서 처리될 CGA 인스트럭션 및 상기 CGA의 구성 정보를 출력하는 메모리 관리 방법.
KR1020100082694A 2010-08-25 2010-08-25 프로세서, 메모리 관리 장치 및 방법 KR101710116B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020100082694A KR101710116B1 (ko) 2010-08-25 2010-08-25 프로세서, 메모리 관리 장치 및 방법
US13/216,852 US20120054468A1 (en) 2010-08-25 2011-08-24 Processor, apparatus, and method for memory management
EP11178827A EP2423821A3 (en) 2010-08-25 2011-08-25 Processor, apparatus, and method for fetching instructions and configurations from a shared cache
CN2011102514947A CN102385502A (zh) 2010-08-25 2011-08-25 用于存储器管理的处理器、设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100082694A KR101710116B1 (ko) 2010-08-25 2010-08-25 프로세서, 메모리 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120019329A KR20120019329A (ko) 2012-03-06
KR101710116B1 true KR101710116B1 (ko) 2017-02-24

Family

ID=44582452

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100082694A KR101710116B1 (ko) 2010-08-25 2010-08-25 프로세서, 메모리 관리 장치 및 방법

Country Status (4)

Country Link
US (1) US20120054468A1 (ko)
EP (1) EP2423821A3 (ko)
KR (1) KR101710116B1 (ko)
CN (1) CN102385502A (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101687995B1 (ko) * 2010-09-27 2016-12-20 삼성전자주식회사 프로세서 및 그 동작 방법
KR20130091113A (ko) * 2012-02-07 2013-08-16 삼성전자주식회사 재구성 기반 컴퓨팅 장치의 제1메모리 제어기 및 제2메모리 제어기와, 디버깅용 트레이스 데이터 처리가 가능한 재구성 기반 컴퓨팅 장치
CN103383862B (zh) * 2012-05-03 2016-08-03 旺宏电子股份有限公司 集成电路装置及其操作方法
KR102044784B1 (ko) * 2012-07-19 2019-11-14 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
CN103699360B (zh) * 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
US9876762B2 (en) * 2012-12-31 2018-01-23 Elwha Llc Cost-effective mobile connectivity protocols
US9635605B2 (en) 2013-03-15 2017-04-25 Elwha Llc Protocols for facilitating broader access in wireless communications
US9713013B2 (en) 2013-03-15 2017-07-18 Elwha Llc Protocols for providing wireless communications connectivity maps
US9980114B2 (en) 2013-03-15 2018-05-22 Elwha Llc Systems and methods for communication management
US9832628B2 (en) 2012-12-31 2017-11-28 Elwha, Llc Cost-effective mobile connectivity protocols
US9781664B2 (en) 2012-12-31 2017-10-03 Elwha Llc Cost-effective mobile connectivity protocols
US8965288B2 (en) 2012-12-31 2015-02-24 Elwha Llc Cost-effective mobile connectivity protocols
US9451394B2 (en) 2012-12-31 2016-09-20 Elwha Llc Cost-effective mobile connectivity protocols
US9843917B2 (en) 2013-03-15 2017-12-12 Elwha, Llc Protocols for facilitating charge-authorized connectivity in wireless communications
US9866706B2 (en) 2013-03-15 2018-01-09 Elwha Llc Protocols for facilitating broader access in wireless communications
US9813887B2 (en) 2013-03-15 2017-11-07 Elwha Llc Protocols for facilitating broader access in wireless communications responsive to charge authorization statuses
US9706382B2 (en) 2013-03-15 2017-07-11 Elwha Llc Protocols for allocating communication services cost in wireless communications
US9693214B2 (en) 2013-03-15 2017-06-27 Elwha Llc Protocols for facilitating broader access in wireless communications
US9706060B2 (en) 2013-03-15 2017-07-11 Elwha Llc Protocols for facilitating broader access in wireless communications
US9596584B2 (en) 2013-03-15 2017-03-14 Elwha Llc Protocols for facilitating broader access in wireless communications by conditionally authorizing a charge to an account of a third party
US9781554B2 (en) 2013-03-15 2017-10-03 Elwha Llc Protocols for facilitating third party authorization for a rooted communication device in wireless communications
US9807582B2 (en) 2013-03-15 2017-10-31 Elwha Llc Protocols for facilitating broader access in wireless communications
CN103942181B (zh) * 2014-03-31 2017-06-06 清华大学 用于生成动态可重构处理器的配置信息的方法、装置
KR102347657B1 (ko) * 2014-12-02 2022-01-06 삼성전자 주식회사 전자 장치 및 이의 공유 캐시 메모리 제어 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087846A1 (en) 2000-11-06 2002-07-04 Nickolls John R. Reconfigurable processing system and method
EP1422618A2 (en) 2002-11-21 2004-05-26 STMicroelectronics, Inc. Clustered VLIW coprocessor with runtime reconfigurable inter-cluster bus
WO2004061675A1 (en) * 2002-12-17 2004-07-22 International Business Machines Corporation Selectively changeable line width memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
US6223255B1 (en) * 1995-02-03 2001-04-24 Lucent Technologies Microprocessor with an instruction level reconfigurable n-way cache
EP1634182A2 (en) * 2003-06-17 2006-03-15 PACT XPP Technologies AG Data processing device and method
US7133997B2 (en) * 2003-12-22 2006-11-07 Intel Corporation Configurable cache
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
KR101137418B1 (ko) 2009-01-09 2012-04-20 공주대학교 산학협력단 엔진 공회전 제어장치 및 그 제어방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087846A1 (en) 2000-11-06 2002-07-04 Nickolls John R. Reconfigurable processing system and method
EP1422618A2 (en) 2002-11-21 2004-05-26 STMicroelectronics, Inc. Clustered VLIW coprocessor with runtime reconfigurable inter-cluster bus
WO2004061675A1 (en) * 2002-12-17 2004-07-22 International Business Machines Corporation Selectively changeable line width memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BINGFENG MEI 외 4명. ‘ADRES: An Architecture with Tightly Coupled VLIW Processor and Coarse-Grained Reconfigurable Matrix.’ Proceedings of 13th International Conference on FPLA, September 1-3, 2003.*

Also Published As

Publication number Publication date
EP2423821A2 (en) 2012-02-29
CN102385502A (zh) 2012-03-21
KR20120019329A (ko) 2012-03-06
US20120054468A1 (en) 2012-03-01
EP2423821A3 (en) 2012-06-06

Similar Documents

Publication Publication Date Title
KR101710116B1 (ko) 프로세서, 메모리 관리 장치 및 방법
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
EP2289003B1 (en) Method & apparatus for real-time data processing
CN102750133B (zh) 支持simd的32位三发射的数字信号处理器
US11093250B2 (en) Apparatus and method for gang invariant operation optimizations using dynamic evaluation
KR101978409B1 (ko) 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
JP2006134331A (ja) ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US20200104139A1 (en) Architecture and method for data parallel single program multiple data (spmd) execution
CN105027075A (zh) 具有共享前端单元的处理核
CN101189574B (zh) 指令存储器单元和操作方法
US7805590B2 (en) Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US8555097B2 (en) Reconfigurable processor with pointers to configuration information and entry in NOP register at respective cycle to deactivate configuration memory for reduced power consumption
US7346737B2 (en) Cache system having branch target address cache
KR101912427B1 (ko) 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
KR20080067711A (ko) 인스트럭션 실행 방법, 프로세싱 시스템 및 데이터 프로세싱 시스템
US7925862B2 (en) Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
US8683181B2 (en) Processor and method for distributing load among plural pipeline units
JP2007193433A (ja) 情報処理装置
US8677099B2 (en) Reconfigurable processor with predicate signal activated operation configuration memory and separate routing configuration memory
KR20010085353A (ko) 고속 컨텍스트 전환을 갖는 컴퓨터

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant