KR20090095793A - 프로세서 및 컴퓨팅 시스템 - Google Patents

프로세서 및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20090095793A
KR20090095793A KR1020080020939A KR20080020939A KR20090095793A KR 20090095793 A KR20090095793 A KR 20090095793A KR 1020080020939 A KR1020080020939 A KR 1020080020939A KR 20080020939 A KR20080020939 A KR 20080020939A KR 20090095793 A KR20090095793 A KR 20090095793A
Authority
KR
South Korea
Prior art keywords
memory
data
stored
processor core
byte data
Prior art date
Application number
KR1020080020939A
Other languages
English (en)
Other versions
KR101471114B1 (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 KR1020080020939A priority Critical patent/KR101471114B1/ko
Priority to US12/176,605 priority patent/US8495303B2/en
Publication of KR20090095793A publication Critical patent/KR20090095793A/ko
Application granted granted Critical
Publication of KR101471114B1 publication Critical patent/KR101471114B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/46Multiprogramming arrangements

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

프로세서 및 컴퓨팅 시스템이 제공된다. 본 발명의 프로세서는 멀티 포트 프로세서 코어 및 상기 멀티 포트 프로세서 코어가 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하는 버퍼 메모리를 포함하고, 상기 버퍼 메모리는 상기 멀티 포트 프로세서 코어가 요청하는 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정할 수 있다. 이를 통해 멀티 포트 프로세서 또는 멀티 포트 메모리 간의 접근 시 충돌을 줄일 수 있다.
Figure P1020080020939
프로세서, DMQ, 버퍼 메모리, bank conflict

Description

프로세서 및 컴퓨팅 시스템 {PROCESSOR AND COMPUTING SYSTEM}
본 발명은 프로세서 및 메모리 계층 구조(memory hierarchy)에 관한 것으로, 보다 상세하게는 프로세서 코어의 동작을 지원하는 메모리에 관한 것이다.
호스트(host) 또는 프로세서(processor)는 스토리지 장치(storage device)에 저장된 데이터를 읽거나 스토리지 장치에 데이터를 저장하기 위하여 스토리지 장치에 접근(access)한다. 호스트 또는 프로세서가 스토리지 장치로부터 데이터를 읽어 들이는 시간은 호스트 또는 프로세서의 입장에서는 상대적으로 긴 시간이므로 호스트 또는 프로세서는 스토리지 장치에 저장된 데이터의 일부를 저장하는 메모리 (스토리지 장치보다 데이터 입출력 시간이 짧은)를 이용할 수 있다.
호스트 또는 프로세서는 한번 읽은 데이터를 가까운 시간 내에 다시 한번 읽어 들이는 경향이 있다. 이러한 경향을 시간적 지역성(temporal locality)라고 하며, 종래의 스토리지 장치 및 관리 시스템(management system)은 시간적 지역성을 이용하여 호스트 또는 프로세서가 스토리지 장치로부터 읽은 데이터를 저장하는 버퍼 메모리(buffer memory)를 이용한다.
호스트 또는 프로세서의 동작 속도가 빨라짐에 따라 빠른 버퍼 메모리가 필 요하게 되었고, 현재는 호스트 또는 프로세서에 가장 가까우며 가장 빠르게 동작하는 캐시 메모리(cache memory), 캐시 메모리와 스토리지 장치 사이에 위치하며 캐시 메모리보다는 느리고 스토리지 장치보다는 빠르게 동작하는 메인 메모리(main memory)가 이용되고 있다.
이러한 프로세서 - 캐시 메모리 - 메인 메모리 - 스토리지 장치로 연결되는 구조를 메모리 계층(memory hierarchy)이라 하기도 하며, 어플리케이션에 따라서는 캐시 메모리가 L1(Level 1) 캐시 메모리 및 L2(Level 2) 캐시 메모리를 포함하는 복수의 레벨에 따른 계층을 가지는 경우도 있을 수 있다.
본 발명의 일 실시예에 따른 프로세서, 메모리 또는 컴퓨팅 시스템은 호스트 (또는 프로세서)의 메모리에 대한 접근 시 뱅크 간 충돌(bank conflict)을 줄일 수 있다.
본 발명의 일 실시예에 따른 프로세서, 메모리 또는 컴퓨팅 시스템은 멀티 포트 프로세서 코어의 동작에 적합한 메모리 계층 구조(memory hierarchy)를 제공할 수 있다.
본 발명의 일 실시예에 따른 프로세서, 메모리 또는 컴퓨팅 시스템은 호스트 (또는 프로세서)의 메모리에 대한 접근 횟수를 줄일 수 있다.
본 발명의 일 실시예에 따른 프로세서는 멀티 포트 프로세서 코어 및 상기 멀티 포트 프로세서 코어가 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하는 버퍼 메모리를 포함할 수 있다. 이 때, 상기 버퍼 메모리는 상기 멀티 포트 프로세서 코어가 요청하는 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정할 수 있다.
본 발명의 다른 실시예에 따른 버퍼 메모리는 프로세서 코어 및 캐시 메모리 간에 위치하고, 상기 프로세서 코어 및 상기 캐시 메모리와 연결될 수 있다. 상기 버퍼 메모리는 상기 프로세서 코어가 상기 캐시 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 캐시 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하고, 상기 프로세서 코어가 요청하는 제2 바이트 데이터가 저장되어 있는지 판정할 수 있다.
본 발명의 또 다른 실시예에 따른 컴퓨팅 시스템은 멀티 포트 프로세서 코어, 메모리, 및 상기 멀티 포트 프로세서 코어가 상기 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하는 하나 이상의 버퍼 메모리를 포함할 수 있다. 이 때, 상기 하나 이상의 버퍼 메모리는 상기 멀티 포트 프로세서 코어가 요청하는 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정할 수 있다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
프로세서(processor)의 명령어 처리 속도를 빠르게 하기 위하여 병렬적으로 복수의 명령어들을 동시에 처리할 수 있는 프로세서 구조가 이용되고 있다. 이러한 병렬(parallel) 프로세서에서는, 로드(load) 명령 또는 스토어(store) 명령이 병렬적으로 처리될 필요가 있다. 따라서, 병렬 프로세서는, 로드 명령 또는 스토어 명령을 처리하는 복수의 로드/스토어 유닛들을 포함하고, 메모리 장치도 복수의 로드 명령 또는 스토어 명령을 병렬적으로 처리하기 위한 복수의 포트를 포함할 필요가 있다.
캐시(cache) 메모리는 컴퓨터 시스템에서 메모리를 보다 효율적으로 사용하기 위하여 사용되며, 프로세서 코어와 메인 메모리 사이에 위치하고, 메인 메모리 보다 빠르게 동작할 수 있고 메인 메모리보다 작은 크기를 가지는 메모리이다. 일반적으로 프로세서 또는 호스트에 의해 접근된 데이터는 가까운 시간 내에 다시 프로세서 또는 호스트에 의해 접근될 가능성이 높으므로, 캐시 메모리는 프로세서 또는 호스트에 의해 접근된 데이터를 저장하여 두었다가 프로세서 또는 호스트로부터 접근 요청이 있을 때 프로세서 또는 호스트로 신속하게 요청된 데이터를 제공할 수 있다.
컴퓨팅 시스템에 따라서는, 레벨 1(Level 1, L1) 캐시 메모리와 L1 메모리보다 크고 L1 캐시 메모리보다 느리게 동작하는 레벨 2(Level 2, L2) 캐시 메모리를 포함할 수 있다. L2 캐시 메모리는 메인 메모리보다 빠르고 메인 메모리보다 작은 것이 일반적이다. L1 및 L2 캐시 메모리는 프로세서와 동일한 반도체 칩 상에 구현될 수도 있다. 이런 경우를 온 칩 캐시라 한다.
프로세서가 요청하는 데이터가 캐시 메모리에 저장되어 있으면 캐시 메모리는 요청된 데이터를 프로세서로 신속하게 제공할 수 있다. 이런 경우에 캐시 힛(cache hit)이 발생했다고 한다. 프로세서가 요청하는 데이터가 캐시 메모리에 저장되어 있지 않으면 프로세서는 요청된 데이터를 메인 메모리 (또는 L2 캐시 메모리)로부터 읽어야 한다. 이런 경우에 캐시 미스(cache miss)가 발생했다고 하며, 캐시 미스가 발생했을 때 캐시 힛이 발생한 경우보다 요청된 데이터를 읽어 오는 데에 걸리는 시간이 길다. 캐시 미스가 발생했을 때 요청된 데이터를 읽어 오는 데 걸리는 상대적으로 긴 시간을 페널티(penalty)라 하기도 한다.
캐시 메모리는 프로세서에 의해 요청된 데이터의 캐시 힛 여부를 판정하는 로직을 포함한다. 캐시 미스가 발생한 경우 캐시 메모리는 메인 메모리로부터 프로세서로 전달되는 데이터를 저장하여 프로세서의 다음 요청에 대비할 수 있다. 이 때, 캐시 메모리에 빈 공간이 없으면 캐시 메모리에 저장된 데이터 중 일부를 메인 메모리로 방출(evict)해야 한다. 캐시 메모리는 어느 데이터를 방출할 지를 결정하는 로직을 포함한다.
캐시 메모리는 캐시 힛 여부를 판정하는 로직 및 어느 데이터를 방출할 지를 결정하는 로직을 포함하므로 싱글 포트로 구성될 수 있다.
병렬 프로세서는 복수의 로드/스토어 유닛들을 포함할 수 있다. 복수의 로드/스토어 유닛들 각각은 병렬적으로 로드 또는 스토어 명령어를 처리할 수 있다. 서로 다른 로드/스토어 유닛들이 동일한 싱글 포트 캐시 메모리에 접근할 경우 상기 접근 요청들은 순차적으로(sequentially) 처리되어야 한다.
캐시 메모리는 복수의 뱅크로 구분될 수 있다. 메모리 뱅크 각각은 병렬적으로 동작하여 프로세서에 독립적으로 데이터를 제공할 수 있다.
서로 다른 로드/스토어 유닛들이 동일한 싱글 포트 캐시 메모리 뱅크에 접근하는 경우를 뱅크 충돌(bank conflict)이 발생했다고 하며, 뱅크 충돌이 발생하면 뱅크에 대한 접근 요청은 순차적으로 처리되어야 하고 이러한 과정에서 처리 시간이 증가한다.
본 발명의 실시예들에 따르면 캐시 메모리 및 프로세서 간에 버퍼 메모리를 위치시켜 복수의 로드/스토어 유닛들 간의 뱅크 충돌을 줄일 수 있다.
본 발명의 실시예들은 캐시 메모리를 이용하는 경우를 위주로 설명되었지만 캐시 메모리를 이용하는 경우에 국한되지 않고, 스크래치패드 메모리(scratchpad memory, SPM) 등의 구조를 이용하는 경우에도 적용될 수 있다. SPM은 하드웨어 구성이 간단하고, 내부 제어 회로 등을 포함하지 않으며, SPM의 제어는 소프트웨어의 도움을 받아 수행될 수 있다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 도시하는 도면이다.
도 1을 참조하면, 프로세서(100)는 멀티 포트 프로세서 코어(110) 및 버퍼 메모리(120)를 포함한다. 프로세서(100)는 메모리(130)로부터 데이터를 읽고, 메모리(130)에 데이터를 저장할 수 있다.
멀티 포트 프로세서 코어(110)는 복수의 로드/스토어 유닛들을 포함할 수 있다. 로드/스토어 유닛들 각각은 서로 독립적으로 데이터를 로드(load)하거나 스토어(store)할 수 있다.
버퍼 메모리(120)는 멀티 포트 프로세서 코어(110)가 메모리(130)로부터 읽는 제1 바이트(byte) 데이터를 포함하는 워드(word) 데이터를 메모리(130)로부터 읽고, 읽은 워드 데이터를 저장한다. 버퍼 메모리(120)는 멀티 포트 프로세서 코어(110)가 제2 바이트 데이터를 요청하면, 요청된 제2 바이트 데이터가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정한다.
멀티 포트 프로세서 코어(110)는 바이트 단위로 데이터를 처리한다. 멀티 포트 프로세서 코어(110) 내의 로드/스토어 유닛들 각각도 바이트 단위로 데이터를 처리한다.
메모리(130)는 바이트 단위로 데이터를 처리할 수도 있고, 워드 단위로 데이 터를 처리할 수도 있다. 메모리(130)는 바이트 단위로 데이터를 처리하는 데 걸리는 시간 내에 워드 단위로 데이터를 처리할 수 있다.
만일 제1 바이트 데이터의 주소가 "1001"이면 제1 바이트 데이터를 포함하는 워드 데이터의 주소는 "10XX"이다. 여기서, X는 don't care를 의미하며 "1" 또는 "0" 어느 값을 취하여도 무방하다는 의미이다.
상기 워드 데이터는 주소 "1000"에 대응하는 바이트 데이터, 주소 "1001"에 대응하는 바이트 데이터(제1 바이트 데이터), 주소 "1010"에 대응하는 바이트 데이터 및 주소 "1011"에 대응하는 바이트 데이터이다.
메모리(130)가 워드 데이터를 출력하는 데 걸리는 시간은 바이트 데이터를 출력하는 데 걸리는 시간과 동일하거나 거의 유사하며, 버퍼 메모리(120)는 별도의 시간 페널티 없이 메모리(130)로부터 워드 데이터를 읽을 수 있다.
일반적으로 워드는 32bit의 비트열이고, 바이트는 8bit의 비트열이지만, 본 발명의 실시예들은 32bit 또는 8bit의 비트열에 국한되지 않으며 복수의 바이트들을 포함하는 워드로 이루어지는 데이터 구조에 적용 가능하다.
메모리(130)는 캐시(cache) 메모리일 수도 있고, SPM(scratchpad memory)일 수도 있다. 메모리(130)가 SPM인 경우 멀티 포트 프로세서 코어(110)는 메모리(130)의 동작을 제어할 수 있다.
일반적으로 멀티 포트 프로세서 코어(110)가 접근한 데이터는 가까운 시간 내에 다시 접근될 가능성이 높다. 이러한 경향을 데이터 접근의 시간적 지역성(temporal locality)이라 한다. 시간적 지역성은 동일한 데이터에만 국한되지 않고, 이전에 접근된 데이터의 주변에 위치한 데이터도 가까운 시간 내에 접근될 가능성이 높다.
버퍼 메모리(120)는 멀티 포트 프로세서 코어(110)에 의해 접근된 제1 바이트 데이터의 주변 바이트 데이터를 저장해 둠으로써 멀티 포트 프로세서 코어(110)에 의한 메모리(130)로의 접근 횟수를 줄일 수 있다. 버퍼 메모리(120)는 빈번하게 참조되는 데이터를 저장하므로, 본 명세서에서는 상기 버퍼 메모리(120)를 FVB(Frequent Value Buffer)로 명명하기로 한다.
프로세서(100)는 동일한 워드 데이터 내에 포함되는 서로 다른 바이트 데이터에 대한 접근이 가까운 시간 내에 이루어질 경우 메모리(130)에 대한 접근 횟수를 줄일 수 있다. 프로세서(100)는 프로세서(100) 및 메모리(130) 간의 데이터 전송 횟수를 줄임으로써 프로세서(100) 및 메모리(130) 간의 데이터 전송 시 소모되는 전력을 줄일 수 있다.
프로세서(100)는 메모리 접근 충돌 횟수를 줄임으로써 컴파일러에서 프로그램 코드를 컴파일할 때의 제약 조건을 경감시킬 수 있다.
버퍼 메모리(120)는 메모리(130)로부터 읽은 워드 데이터와 함께 워드 데이터의 메모리(130)에서의 주소를 저장할 수 있다. 버퍼 메모리(120)는 제2 바이트 데이터의 주소를 버퍼 메모리(120)에 저장된 주소와 비교하여 제2 바이트 데이터가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정할 수 있다.
버퍼 메모리(120)는 제2 바이트 데이터의 주소 중 하위 2비트를 제외하고 남은 주소를 버퍼 메모리(120)에 저장된 주소와 비교할 수 있다. 하위 2비트는 바이 트 데이터와 워드 데이터의 크기 차이에 대응하는 값이다. 버퍼 메모리(120)는 제2 바이트 데이터를 멀티 포트 프로세서 코어(110)로 전달할 때에는 상기 하위 2비트의 주소까지 포함하는 주소를 이용하여 제2 바이트 데이터를 출력할 수 있다.
멀티 포트 프로세서 코어(110)에 의해 요청된 제2 바이트 데이터가 버퍼 메모리(120)에 저장된 것으로 판정된 경우에, 본 명세서에서는 FVB hit이 발생했다고 표시하기로 한다. 반대로 제2 바이트 데이터가 버퍼 메모리(120)에 저장되어 있지 않을 것으로 판정된 경우에, 본 명세서에서는 FVB miss 가 발생했다고 표시하기로 한다. 이들 표현은 설명의 편의를 위한 것으로 이들 표현에 의해 본 발명의 권리 범위가 좁아지도록 해석되어서는 안 될 것이다.
버퍼 메모리(120)는 제2 바이트 데이터가 저장되어 있으면 버퍼 메모리(120)에 저장된 제2 바이트 데이터를 멀티 포트 프로세서 코어(110)로 출력할 수 있다. 제2 바이트 데이터에 대한 FVB hit이 발생하면 멀티 포트 프로세서 코어(110)는 메모리(130)에 접근할 필요 없이 버퍼 메모리(120)로부터 제2 바이트 데이터를 읽을 수 있다.
멀티 포트 프로세서 코어(110)는 제2 바이트 데이터가 버퍼 메모리(120)에 저장되어 있으면 메모리(130)에 대한 데이터 요청을 취소할 수 있다. 제2 바이트 데이터에 대한 FVB hit이 발생하면 멀티 포트 프로세서 코어(110)는 메모리(130)에 대한 접근 요청을 취소함으로써 메모리(130)에 대한 접근 충돌을 회피할 수 있다.
예를 들어 멀티 포트 프로세서 코어(110)의 제1 포트(도시되지 않음)가 제2 바이트 데이터를 요청함과 동시에 멀티 포트 프로세서 코어(110)의 제2 포트(도시 되지 않음)는 제5 바이트 데이터를 요청할 수 있다. 이 때, 제2 바이트 데이터에 대한 FVB hit이 발생하면 상기 제1 포트는 버퍼 메모리(120)로부터 제2 바이트 데이터를 읽어 올 수 있고 메모리(130)에 접근할 필요가 없다. 따라서 상기 제2 포트는 상기 제1 포트와 충돌 없이 메모리(130)로부터 제5 바이트 데이터를 읽을 수 있다.
버퍼 메모리(120)는 멀티 포트 프로세서 코어(110)가 메모리(130)에 저장하는 제3 바이트 데이터의 주소에 대응하는 제4 바이트 데이터가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정할 수 있다. 제4 바이트 데이터가 버퍼 메모리(120)에 저장되어 있으면 버퍼 메모리(120)는 저장된 제4 바이트 데이터를 포함하는 저장된 워드 데이터를 무효화(invalidate)할 수 있다.
멀티 포트 프로세서 코어(110)는 스토어 명령어를 통해 데이터를 저장한다. 멀티 포트 프로세서 코어(110)는 메모리(130)에 데이터를 저장하고, 이 때 저장되는 제3 바이트 데이터는 버퍼 메모리(120)에 저장된 제4 바이트 데이터보다 최근의 데이터이다.
버퍼 메모리(120)는 메모리(130)로부터 제1 바이트 데이터를 포함하는 워드 데이터를 저장할 때 워드 데이터의 메모리(130) 내의 주소를 함께 저장할 수 있다. 따라서 버퍼 메모리(120)는 스토어 명령어에 의해 저장되는 제3 바이트 데이터의 주소가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정할 수 있다. 버퍼 메모리(120)는 제3 바이트 데이터의 주소가 저장되어 있는지 여부를 판정함으로써 제4 바이트 데이터가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정할 수 있다.
만일 제4 바이트 데이터가 버퍼 메모리(120)에 저장되어 있으면 (또는 제3 바이트 데이터의 주소가 버퍼 메모리(120)에 저장되어 있으면) 제4 바이트 데이터보다 최근의 데이터인 제3 바이트 데이터가 메모리(130)에 저장되므로 제4 바이트 데이터는 낡은 데이터로 간주될 수 있다. 따라서, 버퍼 메모리(120)는 제3 바이트 데이터의 주소가 버퍼 메모리(120)에 저장되어 있으면 상기 저장된 제4 바이트 데이터를 invalidate할 수 있다. 상기 과정에 의하여 버퍼 메모리(120) 및 메모리(130)는 데이터 간의 coherence를 유지할 수 있다.
실시예에 따라서는, 버퍼 메모리(120)는 상기 저장된 제4 바이트 데이터를 포함하는 저장된 워드 데이터를 무효화할 수 있다.
멀티 포트 프로세서 코어(110)는 메모리(130)에 데이터를 저장하는 스토어 명령어를 처리하는 경우 버퍼 메모리(120)를 참조하지 않고 메모리(130)에 직접 접근할 수 있다. 이 때, 스토어 명령어는 버퍼 메모리(120)로 전송될 수 있다. 버퍼 메모리(120)는 전송된 스토어 명령어로부터 제3 바이트 데이터의 주소를 식별할 수 있다.
도 2는 본 발명의 일 실시예에 따른 멀티 포트 프로세서 코어(210), 버퍼 메모리(220) 및 메모리(230)의 로드 명령어 처리 과정의 일 예를 도시하는 도면이다.
도 2를 참조하면, 멀티 포트 프로세서 코어(210)는 버퍼 메모리(220)를 경유하여 메모리(230)로부터 Byte 1(250)를 로드(load)한다.
메모리(230)는 버퍼 메모리(220)를 경유하여 멀티 포트 프로세서 코어(210)로부터 요청된 Byte 1(250)를 포함하는 워드 데이터(240)를 버퍼 메모리(220)로 출 력한다. 워드 데이터(240)는 Byte 0(241), Byte 1(242), Byte 2(243), Byte 3(244)를 포함한다. Byte 1(242)는 Byte 1(250)의 내용과 동일한 내용을 포함한다.
버퍼 메모리(220)는 메모리(230)로부터 읽은 워드 데이터(240)를 저장하고, 워드 데이터(240)의 메모리(230) 내에서의 주소를 저장한다.
버퍼 메모리(220)는 메모리(230)로부터 읽은 워드 데이터(240) 중 멀티 포트 프로세서 코어(210)로부터 요청된 Byte 1(250)를 분리하고, 분리된 Byte 1(250)를 멀티 포트 프로세서 코어(210)로 전송한다.
메모리(230)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)일 수 있다. SRAM 또는 DRAM은 행 주소 및 열 주소에 의하여 데이터를 선택하고, 상기 선택된 데이터를 출력한다. 행 주소에 의하여 SRAM 또는 DRAM의 메모리 셀(cell) 어레이(array)의 행이 선택되고, 열 주소에 의하여 바이트 또는 워드 단위의 열이 선택된다. 하나의 행이 선택되면, 상기 선택된 행 내에서 열 주소에 의하여 바이트 또는 워드 단위로 데이터가 선택되는데 바이트 데이터가 선택되는 경우와 워드 데이터가 선택되는 경우에 걸리는 시간은 동일하거나 거의 유사하다.
메모리(230)는 워드 데이터를 출력할 수도 있고 바이트 데이터를 출력할 수도 있으나 어느 경우이든 걸리는 시간은 동일하거나 거의 유사하다. 또한, 메모리(230)가 워드 데이터를 출력하기 위해 필요로 하는 하드웨어 구성과 바이트 데이터를 출력하기 위해 필요로 하는 하드웨어 구성이 크게 다르지 않으므로, 메모 리(230)는 멀티 포트 프로세서 코어(210)로부터 바이트 데이터의 요청이 있을 때 워드 데이터를 출력하는 데에 추가적인 비용을 필요로 하지 않는다.
멀티 포트 프로세서 코어(210)는 한번 접근한 바이트 데이터의 근처에 위치한 바이트 데이터를 가까운 시간 내에 접근할 가능성이 높다. 이를 시간적 지역성이라 함은 앞에서 설명한 바와 같다. 멀티 포트 프로세서 코어(210)가 요청한 바이트 데이터가 버퍼 메모리(220)에 저장되어 있으면 멀티 포트 프로세서 코어(210)는 버퍼 메모리(220)에 저장된 바이트 데이터를 읽어 오면 되므로 메모리(230)에 접근할 필요가 없다.
버퍼 메모리(220)는 동일한 워드 데이터 내에 포함되는 서로 다른 바이트 데이터에 대한 접근이 가까운 시간 내에 이루어질 경우 멀티 포트 프로세서 코어(210)의 메모리(230)에 대한 접근 횟수를 줄일 수 있다. 버퍼 메모리(220)는 멀티 포트 프로세서 코어(210) 및 메모리(230) 간의 데이터 전송 횟수를 줄임으로써 소모되는 전력을 줄일 수 있다.
버퍼 메모리(210)는 메모리(230) 접근 시의 충돌 횟수를 줄임으로써 컴파일러에서 프로그램 코드를 컴파일할 때의 제약 조건을 경감시킬 수 있다.
도 3은 도 1의 프로세서(100)에 의하여 메모리(130)에 접근 시의 충돌을 회피하는 과정의 일 예를 도시하는 도면이다.
도 3을 참조하면, 제1 시간 구간(310) 동안 프로세서(100)는 Byte 0x0에 대한 Load 명령(311)을 처리한다. 메모리(130)는 Byte 0x0, Byte 0x1, Byte 0x2, Byte 0x3으로 구성된 워드 데이터를 출력하고, 버퍼 메모리(120)는 메모리(130)로 부터 출력된 상기 워드 데이터를 저장한다. 버퍼 메모리(120)는 상기 워드 데이터의 주소를 저장할 수 있다.
제2 시간 구간(320) 동안 프로세서(100)는 Byte 0x1에 대한 Load 명령(321) 및 Byte 0x2 에 대한 Store 명령(322)을 처리한다.
멀티 포트 프로세서 코어(110)의 제1 포트는 Byte 0x1에 대한 Load 명령(321)을 처리하고, 멀티 포트 프로세서 코어(110)의 제2 포트는 Byte 0x2 에 대한 Store 명령(322)을 처리한다.
버퍼 메모리(120)는 Byte 0x1에 대한 Load 명령(321)으로부터 주소 "0x1"를 분리하고, 분리된 주소 "0x1"이 버퍼 메모리(120)에 저장되어 있는지 판정한다. 버퍼 메모리(120)는 제1 시간 구간(310) 동안 워드 데이터의 주소를 저장하였으므로, 주소 "0x1"는 버퍼 메모리(120)에 저장되어 있다. 주소 "0x1"이 버퍼 메모리(120)에 저장되어 있으면 버퍼 메모리(120)는 저장된 Byte 0x1를 멀티 포트 프로세서 코어(110)로 전송한다.
주소 "0x1"이 버퍼 메모리(120)에 저장되어 있으면 버퍼 메모리(120) 또는 멀티 포트 프로세서 코어(110)는 Byte 0x1에 대한 Load 명령(321)에 의한 메모리(130)로의 접근 요청을 취소할 수 있다. 버퍼 메모리(120) 또는 멀티 포트 프로세서 코어(120)는 멀티 포트 프로세서 코어(110)의 제1 포트가 메모리(130)에 접근하지 않도록 제어함으로써 메모리(130)에의 접근 충돌을 회피할 수 있다.
멀티 포트 프로세서 코어(110)의 제2 포트는 Byte 0x2에 대한 Store 명령(322)을 처리하기 위하여 메모리(130)에 접근한다. 제2 포트는 스토어 명령을 처리할 때에는 버퍼 메모리(120)에 접근하지 않고 메모리(130)에 직접 접근할 수 있다.
제1 포트는 메모리(130)에 접근하지 않고 버퍼 메모리(120)로부터 Byte 0x1을 읽으므로 제2 포트는 제1 포트와 충돌하지 않고 메모리(130)에 Byte 0x2를 저장할 수 있다. 프로세서(100)는 충돌 없이 제2 시간 구간(320) 동안 Byte 0x1에 대한 Load 명령(321) 및 Byte 0x2에 대한 Store 명령(322)을 병렬적으로 처리할 수 있다.
버퍼 메모리(120)는 제2 포트가 스토어 명령(322)을 처리하는 동안 스토어 명령(322)을 가로채어 스토어 명령(322)의 주소 "0x2"를 분리할 수 있다. 버퍼 메모리(120)는 스토어 명령(322)의 주소 "0x2"가 버퍼 메모리(120)에 저장되어 있는지 여부를 판정할 수 있다. 주소 "0x2"는 제1 시간 구간(310) 동안 버퍼 메모리(120)에 저장되었으므로 버퍼 메모리(120)는 스토어 명령(322)의 주소 "0x2"가 버퍼 메모리(120)에 저장되어 있다고 판정한다. 스토어 명령(322)의 주소 "0x2"가 버퍼 메모리(120)에 저장되어 있으면 버퍼 메모리(120)는 저장된 Byte 0x2를 무효화할 수 있다.
제2 포트가 스토어 명령(322)에 의하여 새로운 Byte 0x2를 메모리(130)에 저장하므로 버퍼 메모리(120)에 저장된 Byte 0x2는 낡은 데이터이다. 버퍼 메모리(120)는 data coherence를 유지하기 위하여 낡은 데이터인 Byte 0x2를 무효화할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 프로세서 및 FVB(Frequent Value Buffer)의 동작의 일 예를 도시하는 동작 흐름도이다.
도 4를 참조하면, 프로세서는 메모리에 접근하는 주어진 명령어에 의해 실행되는 연산이 로드(load)인지 여부를 판정한다(S410).
단계(S410)의 판정 결과 연산이 로드이면 FVB(Frequent Value Buffer)는 프로세서에 의해 요청된 데이터가 FVB에 저장되어 있는지 여부를 판정한다(S420).
단계(S420)의 판정 결과 요청된 데이터가 FVB에 저장되어 있으면 프로세서는 FVB로부터 데이터를 읽는다(S430).
단계(S420)의 판정 결과 요청된 데이터가 FVB에 저장되어 있지 않으면 프로세서는 메모리에 데이터를 요청한다.
프로세서로부터 데이터를 요청 받은 메모리는 뱅크 충돌이 발생하지 않는지 판정한다(S440).
이 때, 뱅크 충돌의 의미는 동일한 워드 데이터에 대한 복수의 접근 요청이 있는 경우를 가리킬 수 있다.
단계(S440)의 판정 결과 뱅크 충돌이 발생하면 메모리는 데이터 요청을 순차적으로 처리하고, 데이터 요청이 순차적으로 처리되는 동안 프로세서는 대기(stall)한다(S441).
메모리가 프로세서로부터의 데이터 요청을 처리할 수 있게 되면 프로세서는 메모리로부터 데이터를 읽는다(S442).
FVB는 프로세서로부터 읽은 데이터를 FVB에 저장한다(S443). 이 때, 메모리는 프로세서로부터 요청된 바이트 데이터를 포함하는 워드 데이터를 출력할 수 있 고, FVB는 메모리로부터 출력된 워드 데이터를 저장할 수 있다. FVB는 워드 데이터의 주소를 함께 FVB에 저장한다.
단계(S440)의 판정 결과 뱅크 충돌이 발생하지 않으면 프로세서는 메모리로부터 데이터를 읽는다(S442).
단계(S410)의 판정 결과 연산이 로드(load)가 아닌 스토어(store)이면 프로세서는 메모리에 접근한다. 프로세서로부터 접근을 요청 받은 메모리는 뱅크 충돌이 발생하지 않는지 판정한다(S450).
단계(S450)의 판정 결과 뱅크 충돌이 발생하면 메모리는 접근 요청을 순차적으로 처리하고, 접근 요청이 순차적으로 처리되는 동안 프로세서는 대기(stall)한다(S451).
메모리가 프로세서로부터의 접근 요청을 처리할 수 있게 되면 프로세서는 메모리에 데이터를 저장한다(S452).
단계(S450)의 판정 결과 뱅크 충돌이 발생하지 않으면 프로세서는 메모리에 데이터를 저장한다(S452).
단계(S410)의 판정 결과 연산이 로드(load)가 아닌 스토어(store)이면 FVB는 프로세서의 스토어 명령으로부터 주소를 식별한다. FVB는 스토어 명령의 주소가 FVB에 저장되어 있는 주소들 중 어느 하나와 일치하는지 여부를 판정한다(S460).
단계(S460)의 판정 결과 스토어 명령의 주소가 FVB에 저장되어 있는 주소들 중 어느 하나와 일치하면 FVB는 FVB의 상기 일치하는 주소에 대응하는 데이터의 내용을 무효화한다(S461).
단계(S460)의 판정 결과 스토어 명령의 주소가 FVB에 저장되어 있는 주소들 중 어느 것과도 일치하지 않으면 FVB는 스토어 명령과 관련된 동작을 종료한다.
도 5는 본 발명의 다른 실시예에 따른 컴퓨팅 시스템(500)을 도시하는 도면이다.
도 5를 참조하면, 컴퓨팅 시스템(500)은 프로세서 코어(510), 4개의 로드/스토어 유닛들(521 내지 524), 2개의 메모리 뱅크들(531, 532)을 포함한다.
프로세서 코어(510)는 4개의 포트들을 포함하고, 4개의 포트들을 통하여 4개의 로드/스토어 유닛들(521 내지 524)과 통신한다.
예를 들어 프로세서 코어(510)는 제1 포트를 경유하여 로드/스토어 유닛 1(521)과 통신하고, 제2 포트를 경유하여 로드/스토어 유닛 2(522)과 통신할 수 있다.
4개의 로드/스토어 유닛들(521 내지 524)은 서로 독립적으로 로드 명령 또는 스토어 명령을 처리한다.
메모리 뱅크 1(531) 및 메모리 뱅크 2(532) 각각은 4개의 로드/스토어 유닛들(521 내지 524)으로부터 데이터를 받거나 4개의 로드/스토어 유닛들(521 내지 524)으로 데이터를 출력한다.
메모리 뱅크 1(531) 및 메모리 뱅크 2(532)는 서로 독립적으로 메모리 연산을 수행할 수 있다. 메모리 뱅크 1(531) 및 메모리 뱅크 2(532) 각각은 멀티 포트 기능을 수행할 수 있는 버퍼 메모리를 포함할 수 있다.
도 6은 도 5의 메모리 뱅크 1(531)의 일 예를 상세히 도시하는 도면이다.
도 6을 참조하면, 메모리 뱅크 1(531)는 데이터를 저장하는 메모리 뱅크 1(610) 및 버퍼 메모리(620)를 포함한다. 버퍼 메모리(620)는 FVB(Frequent Value Buffer)일 수 있다.
메모리 뱅크 1(610)는 하나의 포트 또는 복수의 포트들을 경유하여 바이트 데이터 또는 워드 데이터를 출력할 수 있다.
버퍼 메모리(620)는 4개의 로드/스토어 유닛들(521 내지 524)과 통신하는 4개의 포트들을 포함할 수 있다.
메모리 뱅크 1(610)가 읽기 요청에 의하여 데이터를 출력하면 버퍼 메모리(620)는 메모리 뱅크 1(610)로부터 출력된 데이터를 저장할 수 있다. 이 때, 프로세서 코어(510)가 (로드/스토어 유닛들(521 내지 524) 중 어느 하나를 경유하여) 요청한 데이터는 바이트 데이터일 수 있다. 메모리 뱅크 1(610)는 프로세서 코어(510)가 요청한 바이트 데이터를 포함하는 워드 데이터를 출력할 수 있고, 버퍼 메모리(620)는 메모리 뱅크 1(610)로부터 출력된 워드 데이터를 저장할 수 있다.
프로세서 코어(510)가 로드/스토어 유닛들(521 내지 524) 중 어느 하나를 경유하여 데이터를 요청하면 버퍼 메모리(620)는 4개의 포트들 중 어느 하나를 경유하여 상기 요청을 수신한다. 예를 들어 로드/스토어 유닛 1(521)이 데이터를 요청하면 버퍼 메모리(620)는 로드/스토어 유닛 1(521)에 대응하는 제1 포트를 경유하여 요청을 수신한다.
버퍼 메모리(620)는 요청된 데이터가 버퍼 메모리(620)에 저장되어 있는지 여부를 판정한다. FVB hit(요청된 데이터가 버퍼 메모리(620)에 저장되어 있는 경 우)이 발생하면 버퍼 메모리(620)는 제어 신호를 다중화기(multiplexer)(650)로 출력하여 메모리 뱅크 1(610)에 대한 읽기 요청 신호 (Read)을 취소할 수 있다. FVB hit이 발생하면 버퍼 메모리(620)는 요청에 대응하는 저장된 데이터를 다중화기(multiplexer)(630)로 출력한다. 이 때, 버퍼 메모리(620)는 FVB hit이 발생했음을 나타내는 제어 신호를 다중화기(630)로 출력한다.
버퍼 메모리(620)는 메모리 뱅크 1(610)로부터 출력된 워드 데이터를 저장할 때 워드 데이터의 주소를 함께 저장할 수 있다. 버퍼 메모리(620)는 FVB hit 여부를 판정할 때 요청된 데이터의 주소가 버퍼 메모리(620)에 저장된 주소들 중 어느 하나와 일치하는지 여부를 판정한다.
로드/스토어 유닛들(521 내지 524) 중 하나 이상으로부터 읽기 요청이 있는 경우 읽기 요청 신호 (Read) 가 enable된다. 읽기 요청 신호 (Read) 는 다중화기(650)로 전달된다. 다중화기(650)는 "0" 또는 읽기 요청 신호 (Read) 중 어느 하나를 버퍼 메모리(620)로부터 출력되는 제어 신호에 따라 선택하여 메모리 뱅크 1(610)로 출력한다. FVB hit이 발생하면 다중화기(650)는 "0"을 선택하여 출력함으로써 메모리 뱅크 1(610)에 대한 읽기 요청 신호(Read)를 취소할 수 있다.
다중화기(630)는 버퍼 메모리(620)로부터 출력되는 제어 신호에 따라 메모리 뱅크 1(610)로부터 출력되는 데이터 또는 버퍼 메모리(620)로부터 출력되는 데이터 중 어느 하나를 출력할 수 있다. 상기 제어 신호의 값은 FVB hit 여부에 따라 결정된다. FVB hit이 발생하면 다중화기(630)는 버퍼 메모리(620)로부터 출력되는 데이터를 선택하여 역다중화기(de-multiplexer)(640)로 출력할 수 있다.
역다중화기(640)는 다중화기(630)로부터 출력된 데이터를 로드/스토어 유닛들(521 내지 524) 중 어느 하나로 출력한다. 예를 들어 요청된 데이터가 로드/스토어 유닛 4(524)로부터 요청되었으면 역다중화기(640)는 상기 다중화기(630)로부터 출력된 데이터를 로드/스토어 유닛 4(524)로 출력하고, 로드/스토어 유닛 4(524)는 상기 역다중화기(640)로부터 출력된 데이터를 프로세서 코어(510)로 출력한다.
FVB miss가 발생하면 버퍼 메모리(620)는 읽기 요청 신호(Read)가 메모리 뱅크 1(610)로 전달되도록 하는 제어 신호를 다중화기(650)로 전송한다.
메모리 뱅크 1(610)는 읽기 요청 신호(Read)에 의해 요청된 데이터가 바이트 데이터이면 요청된 바이트 데이터를 포함하는 워드 데이터를 출력한다. 버퍼 메모리(620)는 메모리 뱅크 1(610)로부터 출력된 워드 데이터를 저장하고, 워드 데이터의 주소를 함께 저장한다.
FVB miss가 발생하면 다중화기(630)는 메모리 뱅크 1(610)로부터 출력된 데이터를 출력한다.
실시예에 따라서는 다중화기(650)는 4개의 다중화기들을 포함할 수 있고, 다중화기들 각각은 로드/스토어 유닛들(521 내지 524) 중 어느 하나로부터의 읽기 요청 신호 또는 "0" 중 어느 하나를 출력할 수 있다. 이 때, FVB miss가 발생하면 읽기 요청 신호들 각각은 메모리 뱅크 1(610)로 전달된다. 둘 이상의 로드/스토어 유닛들로부터 동시에 데이터가 요청되면 메모리 뱅크 1(610)는 데이터 요청들의 순서를 조정하여 순차적으로 상기 데이터 요청들을 처리할 수 있다.
실시예에 따라서는 다중화기(650) 및 로드/스토어 유닛들(521 내지 524) 간에 데이터 요청들의 순서를 조정하는 회로가 포함될 수 있다. 이 때, 상기 회로는 메모리 접근 충돌을 처리하는 기능을 할 수 있다.
도 7은 도 6의 버퍼 메모리(620)의 일 예를 상세히 도시하는 도면이다.
도 7을 참조하면, 버퍼 메모리(620)는 주소 버퍼(710) 및 데이터 버퍼(720)를 포함한다.
버퍼 메모리(620)는 로드/스토어 유닛들(521 내지 524)과 통신하는 4개의 포트들을 포함할 수 있다. 주소 버퍼(710)는 포트들을 경유하여 로드/스토어 유닛들(521 내지 524)로부터 로드 명령 또는 스토어 명령을 받는다. 주소 버퍼(710)는 로드/스토어 유닛들(521 내지 524) 중 하나 이상으로부터 로드 명령 또는 스토어 명령을 받으면 주소 버퍼(710)에 저장된 주소들을 비교기들(731 내지 734)로 출력한다.
비교기 1(731)는 로드/스토어 유닛 1(521)으로부터 받은 로드 명령 또는 스토어 명령으로부터 주소를 분리한다. 비교기 1(731)는 분리된 주소를 주소 버퍼(710)로부터 전달된 주소들과 비교한다. 예를 들어 주소 버퍼(710)가 4개의 주소들을 저장한다면 비교기 1(731)는 로드 명령 또는 스토어 명령으로부터 분리된 주소를 주소 버퍼(710)로부터 전달된 4개의 주소와 비교한다. 이 때, 비교기 1(731)는 4개의 비교기들을 포함할 수 있다.
비교기 2(732)는 로드/스토어 유닛 2(522)에 대응하고, 비교기 3(733)는 로드/스토어 유닛 3(523)에 대응한다. 비교기 4(734)는 로드/스토어 유닛 4(524)에 대응한다.
로드/스토어 유닛들이 4개이고, 주소 버퍼(710)가 4개의 주소들을 저장한다면 버퍼 메모리(620)는 4 x 4 = 16 개의 비교기들을 포함한다. 필요한 비교기들의 수는 (주소 버퍼(710)의 크기) x (포트들의 수)로 나타내어질 수 있다.
논리 합 회로(logical OR circuit)(735)는 비교기들(731 내지 734)의 비교 결과에 따라 어느 하나라도 같은 주소가 있다면 FVB hit 신호를 enable할 수 있다.
유효 플래그 저장부(740)는 주소 버퍼(710)에 저장된 주소들 각각에 대응하는 유효 플래그들을 저장한다.
논리 회로(750)는 FVB hit 신호가 enable되고 로드/스토어 유닛들(521 내지 524) 중 어느 하나로부터 스토어 명령이 수신되면 수신된 스토어 명령에 대응하는 주소 엔트리를 주소 버퍼(710)에서 탐색하고, 탐색된 주소 엔트리에 대응하는 유효 플래그를 무효화(invalidate)한다.
주소 버퍼(710)는 수신된 로드 또는 스토어 명령이 로드 명령이면 읽기 제어 신호를 데이터 버퍼(720)로 전송할 수 있다. 논리 합 회로(735)로부터 FVB hit 신호를 수신하고 주소 버퍼(710)로부터 읽기 제어 신호를 수신하면 데이터 버퍼(720)는 읽기 제어 신호에 대응하는 데이터를 다중화기(630)로 출력할 수 있다.
도 6 및 도 7은 메모리 뱅크 1(531)에 대해 설명되었으나 메모리 뱅크 2(532)에도 유사하게 적용될 수 있다. 버퍼 메모리(620)는 메모리 뱅크 1(531) 및 메모리 뱅크 2(532) 각각에 하나씩 포함될 수 있다.
도 8은 도 1의 멀티 포트 프로세서 코어(110)의 일 예를 상세히 도시하는 도 면이다.
도 8을 참조하면, 멀티 포트 프로세서 코어(110)는 프로세서 코어(810) 및 4개의 기능 유닛들(820 내지 850)을 포함한다. 기능 유닛들(820 내지 850) 각각은 서로 병렬적으로 명령어에 대응하는 연산을 실행할 수 있다. 어느 명령어가 어느 기능 유닛에 할당되어 실행될지는 컴파일러의 스케줄링으로 결정될 수도 있고, 프로세서 코어(810)가 결정할 수도 있다.
멀티 포트 프로세서 코어(110)는 복수의 명령어를 기능 유닛들(820 내지 850)에 할당하여 실행함으로써 명령어 처리 시간을 단축할 수 있다. 멀티 포트 프로세서 코어(110)는 산술(arithmetic) 또는 논리(logical) 연산은 기능 유닛들(820 내지 850)을 이용하여 실행하고, 메모리 연산 (로드 또는 스토어 명령)은 복수의 로드/스토어 유닛들을 이용하여 실행할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 도시하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 멀티 포트 프로세서 코어(210), 버퍼 메모리(220) 및 메모리(230)의 로드 명령어 처리 과정의 일 예를 도시하는 도면이다.
도 3은 도 1의 프로세서(100)에 의하여 메모리(130)에 접근 시의 충돌을 회피하는 과정의 일 예를 도시하는 도면이다.
도 4는 본 발명의 다른 실시예에 따른 프로세서 및 FVB(Frequent Value Buffer)의 동작의 일 예를 도시하는 동작 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 컴퓨팅 시스템(500)을 도시하는 도면이다.
도 6은 도 5의 메모리 뱅크 1(531)의 일 예를 상세히 도시하는 도면이다.
도 7은 도 6의 버퍼 메모리(620)의 일 예를 상세히 도시하는 도면이다.
도 8은 도 1의 멀티 포트 프로세서 코어(110)의 일 예를 상세히 도시하는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 멀티 포트 프로세서 코어
120: 버퍼 메모리
130: 메모리

Claims (17)

  1. 멀티 포트 프로세서 코어; 및
    상기 멀티 포트 프로세서 코어가 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하는 버퍼 메모리
    를 포함하고,
    상기 버퍼 메모리는 상기 멀티 포트 프로세서 코어가 요청하는 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정하는 프로세서.
  2. 제1항에 있어서,
    상기 버퍼 메모리는
    상기 메모리로부터 읽은 상기 워드 데이터와 함께 상기 워드 데이터의 상기 메모리에서의 주소를 저장하고,
    상기 제2 바이트 데이터의 주소를 상기 저장된 주소와 비교하여 상기 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정하는 프로세서.
  3. 제1항에 있어서,
    상기 버퍼 메모리는
    상기 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있으면 상기 저장된 제2 바이트 데이터를 상기 멀티 포트 프로세서 코어로 출력하는 프로세서.
  4. 제1항에 있어서,
    상기 멀티 포트 프로세서 코어는
    상기 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있으면 상기 메모리에 대한 데이터 요청을 취소하는 프로세서.
  5. 제1항에 있어서,
    상기 버퍼 메모리는
    상기 멀티 포트 프로세서 코어가 상기 메모리에 저장하는 제3 바이트 데이터의 주소에 대응하는 제4 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정하고, 상기 제4 바이트 데이터가 상기 버퍼 메모리에 저장되어 있으면 상기 저장된 제4 바이트 데이터를 포함하는 저장된 워드 데이터를 무효화하는 프로세서.
  6. 제1항에 있어서,
    상기 멀티 포트 프로세서 코어는
    상기 메모리에 데이터를 저장하는 경우에 상기 버퍼 메모리를 참조하지 않고 상기 메모리에 접근하는 프로세서.
  7. 제1항에 있어서,
    상기 멀티 포트 프로세서 코어와 연결되는 복수의 로드/스토어 유닛들
    을 더 포함하고,
    상기 멀티 포트 프로세서 코어는 복수의 명령어를 병렬적으로 처리하는 병렬 프로세서 코어인 프로세서.
  8. 프로세서 코어 및 캐시 메모리 간에 위치하고, 상기 프로세서 코어 및 상기 캐시 메모리와 연결되는 버퍼 메모리에 있어서,
    상기 프로세서 코어가 상기 캐시 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 캐시 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하고,
    상기 프로세서 코어가 요청하는 제2 바이트 데이터가 저장되어 있는지 판정하는 버퍼 메모리.
  9. 제8항에 있어서,
    복수의 포트들을 더 포함하고,
    상기 복수의 포트들을 경유하여 상기 프로세서 코어로부터의 복수의 데이터 요청을 병렬적으로 처리하는 버퍼 메모리.
  10. 제8항에 있어서,
    상기 캐시 메모리로부터 읽은 상기 워드 데이터와 함께 상기 워드 데이터의 상기 캐시 메모리에서의 주소를 저장하고,
    상기 제2 바이트 데이터의 주소를 상기 저장된 주소와 비교하여 상기 제2 바이트 데이터가 저장되어 있는지 판정하는 버퍼 메모리.
  11. 제8항에 있어서,
    상기 판정 결과 상기 제2 바이트 데이터가 저장되어 있으면 상기 저장된 제2 바이트 데이터를 상기 프로세서 코어로 출력하는 버퍼 메모리.
  12. 제8항에 있어서,
    상기 프로세서 코어가 상기 캐시 메모리에 저장하는 제3 바이트 데이터의 주소에 대응하는 제4 바이트 데이터가 저장되어 있는지 판정하고, 상기 제4 바이트 데이터가 상기 저장되어 있으면 상기 저장된 제4 바이트 데이터를 포함하는 저장된 워드 데이터를 무효화하는 버퍼 메모리.
  13. 멀티 포트 프로세서 코어;
    메모리; 및
    상기 멀티 포트 프로세서 코어가 상기 메모리로부터 읽는 제1 바이트 데이터를 포함하는 워드 데이터를 상기 메모리로부터 읽고, 상기 읽은 워드 데이터를 저장하는 하나 이상의 버퍼 메모리
    를 포함하고,
    상기 하나 이상의 버퍼 메모리는 상기 멀티 포트 프로세서 코어가 요청하는 제2 바이트 데이터가 상기 버퍼 메모리에 저장되어 있는지 판정하는 컴퓨팅 시스템.
  14. 제13항에 있어서,
    상기 메모리는 복수의 뱅크를 포함하고,
    상기 하나 이상의 버퍼 메모리는 상기 뱅크 각각마다 하나씩 대응하는 컴퓨팅 시스템.
  15. 제13항에 있어서,
    상기 메모리로부터 출력되는 데이터 및 상기 하나 이상의 버퍼 메모리로부터 출력되는 데이터 중 하나를 상기 판정 결과에 따라 선택하여 상기 멀티 포트 프로세서 코어로 출력하는 다중화기
    를 더 포함하는 컴퓨팅 시스템.
  16. 제13항에 있어서,
    상기 하나 이상의 버퍼 메모리는
    상기 메모리로부터 읽은 상기 워드 데이터와 함께 상기 워드 데이터의 상기 메모리에서의 주소를 저장하고,
    상기 제2 바이트 데이터의 주소를 상기 저장된 주소와 비교하여 상기 제2 바 이트 데이터가 저장되어 있는지 판정하는 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 하나 이상의 버퍼 메모리는
    상기 제2 바이트 데이터가 저장되어 있으면 상기 저장된 제2 바이트 데이터를 상기 멀티 포트 프로세서 코어로 출력하는 컴퓨팅 시스템.
KR1020080020939A 2008-03-06 2008-03-06 프로세서 및 컴퓨팅 시스템 KR101471114B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080020939A KR101471114B1 (ko) 2008-03-06 2008-03-06 프로세서 및 컴퓨팅 시스템
US12/176,605 US8495303B2 (en) 2008-03-06 2008-07-21 Processor and computer system with buffer memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080020939A KR101471114B1 (ko) 2008-03-06 2008-03-06 프로세서 및 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20090095793A true KR20090095793A (ko) 2009-09-10
KR101471114B1 KR101471114B1 (ko) 2014-12-10

Family

ID=41054796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080020939A KR101471114B1 (ko) 2008-03-06 2008-03-06 프로세서 및 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US8495303B2 (ko)
KR (1) KR101471114B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436624B2 (en) * 2013-07-26 2016-09-06 Freescale Semiconductor, Inc. Circuitry for a computing system, LSU arrangement and memory arrangement as well as computing system
US20220224927A1 (en) * 2021-01-14 2022-07-14 Samsung Electronics Co., Ltd. Video decoding apparatus and video decoding method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02188856A (ja) 1989-01-17 1990-07-24 Nec Off Syst Ltd メモリアクセス回路
JPH07219845A (ja) 1994-01-28 1995-08-18 Kofu Nippon Denki Kk キャッシュメモリ制御方式
JP2500485B2 (ja) 1994-08-22 1996-05-29 日本電気株式会社 情報処理装置
US5642494A (en) 1994-12-21 1997-06-24 Intel Corporation Cache memory with reduced request-blocking
JPH09146839A (ja) 1995-11-21 1997-06-06 Kofu Nippon Denki Kk キャッシュメモリ制御装置
US6157984A (en) * 1997-05-15 2000-12-05 Seagate Technology, Llc Integrated controller/processor for disc drive having direct memory access
KR19990047968A (ko) 1997-12-06 1999-07-05 정선종 래이드 시스템을 위한 이중 입출력 버스를 갖는어레이 제어기의 구조
KR19990069073A (ko) 1998-02-04 1999-09-06 김영환 쓰기 버퍼를 이용한 캐쉬 참조 및 수정장치
US6732255B1 (en) * 1999-09-15 2004-05-04 Koninklijke Philips Electronics N.V. Can microcontroller that permits concurrent access to different segments of a common memory by both the processor core and the DMA engine thereof
US6604156B1 (en) * 1999-09-15 2003-08-05 Koninklijke Philips Electronics N.V. Message buffer full handling in a CAN device that employs reconfigurable message buffers
US6615302B1 (en) * 1999-09-15 2003-09-02 Koninklijke Philips Electronics N.V. Use of buffer-size mask in conjunction with address pointer to detect buffer-full and buffer-rollover conditions in a CAN device that employs reconfigurable message buffers
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6675280B2 (en) * 2001-11-30 2004-01-06 Intel Corporation Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US6782452B2 (en) * 2001-12-11 2004-08-24 Arm Limited Apparatus and method for processing data using a merging cache line fill to allow access to cache entries before a line fill is completed

Also Published As

Publication number Publication date
US20090228659A1 (en) 2009-09-10
US8495303B2 (en) 2013-07-23
KR101471114B1 (ko) 2014-12-10

Similar Documents

Publication Publication Date Title
JP5440067B2 (ja) キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8527708B2 (en) Detecting address conflicts in a cache memory system
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
EP2275939B1 (en) Processor and address translating method
US7516275B2 (en) Pseudo-LRU virtual counter for a locking cache
US20150106567A1 (en) Computer Processor Employing Cache Memory With Per-Byte Valid Bits
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
US8296518B2 (en) Arithmetic processing apparatus and method
US7216201B2 (en) Parallel cachelets
US20080086598A1 (en) System and method for establishing cache priority for critical data structures of an application
US20160140042A1 (en) Instruction cache translation management
JPWO2010035425A1 (ja) キャッシュメモリ、その制御方法及びメモリシステム
JP2019096309A (ja) メンテナンス動作の実行
US20110087841A1 (en) Processor and control method
US20100011165A1 (en) Cache management systems and methods
US7222217B2 (en) Cache residency test instruction
US20090228667A1 (en) Performing a Least Recently Used (LRU) Algorithm for a Co-Processor
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
KR101503865B1 (ko) 마이크로코드 에뮬레이션 메모리의 캐싱
JP5319049B2 (ja) キャッシュシステム
US20090006777A1 (en) Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
US8473685B2 (en) Cache memory device, processor, and control method for cache memory device to reduce power unnecessarily consumed by cache memory
US6976130B2 (en) Cache controller unit architecture and applied method
KR101471114B1 (ko) 프로세서 및 컴퓨팅 시스템
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법

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: 20171129

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee