KR101388134B1 - 뱅크 충돌 방지 장치 및 방법 - Google Patents

뱅크 충돌 방지 장치 및 방법 Download PDF

Info

Publication number
KR101388134B1
KR101388134B1 KR1020070098952A KR20070098952A KR101388134B1 KR 101388134 B1 KR101388134 B1 KR 101388134B1 KR 1020070098952 A KR1020070098952 A KR 1020070098952A KR 20070098952 A KR20070098952 A KR 20070098952A KR 101388134 B1 KR101388134 B1 KR 101388134B1
Authority
KR
South Korea
Prior art keywords
access
bank
command
write
read
Prior art date
Application number
KR1020070098952A
Other languages
English (en)
Other versions
KR20090033756A (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 KR1020070098952A priority Critical patent/KR101388134B1/ko
Priority to US12/071,910 priority patent/US8214617B2/en
Publication of KR20090033756A publication Critical patent/KR20090033756A/ko
Application granted granted Critical
Publication of KR101388134B1 publication Critical patent/KR101388134B1/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

본 발명에 의한 뱅크 충돌 방지 장치 및 방법은, 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들 중 하나인 제1 명령의 실행 시점을, 그 억세스 명령들이 뱅크 충돌을 야기시키지 않게 되도록 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 제1 명령을 제2 명령으로 변경한 뒤, 당초에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부가 그 뱅크에 제2 명령의 실행 시점에 억세스하여 그 뱅크로부터 데이터를 독출한 뒤, 제1 명령의 실행 시점에야 비로소 그 독출된 데이터를 입력받도록 한다. 이에 따라, 본 발명에 의한 뱅크 충돌 방지 장치 및 방법은, 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 기입독출부들에 대해 주어지더라도, 뱅크 충돌이 실제로 발생되는 것을 막음으로써, 뱅크 충돌의 발생으로 인해 프로세서의 성능이 떨어지는 것을 방지하는 효과를 갖는다.
뱅크, 스케쥴링, 선취

Description

뱅크 충돌 방지 장치 및 방법{Apparatus and method for avoiding bank conflicts in a Single-Port Multi-Bank Memory System}
본 발명은 메모리에의 데이터 억세스(access)에 관한 것으로, 특히, 단일 포트(single-port) 뱅크(bank)에의 억세스를 제어하는 방안에 관한 것이다.
동시에 보다 많은 양의 데이터 처리를 수행할 수 있는 프로세서(processor)가 각광받는 최근의 추세와 맞물려, 오늘날 상당수의 프로세서는 다수의 뱅크(bank)들에 동시에 억세스할 수 있도록 설계된다. 여기서, 프로세서는 다수의 기입독출부(load/store unit)들을 구비하며, 각각의 기입독출부는 하나의 뱅크에 억세스할 수 있다. 이 때, 하나의 뱅크에는 최대 하나의 기입독출부만 억세스할 수 있으며, 하나의 뱅크에 복수의 기입독출부들이 억세스할 수는 없다.
그럼에도 불구하고, 복수의 기입독출부들은 동일한 뱅크에 억세스하고자 할 수 있으며, 이 경우, 뱅크 충돌(bank conflict)이 발생되게 되는데, 빈번한 뱅크 충돌은 프로세서의 성능을 떨어뜨리는 주요 원인이라는 점에서, 뱅크 충돌의 발생이 예상되는 경우 뱅크 충돌의 발생을 막을 수 있는 방안이 요구되고 있다.
본 발명이 이루고자 하는 기술적 과제는, 뱅크 충돌의 발생이 예상되는 경우 뱅크 충돌의 발생을 막을 수 있는 뱅크 충돌 방지 장치를 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 뱅크 충돌의 발생이 예상되는 경우 뱅크 충돌의 발생을 막을 수 있는 뱅크 충돌 방지 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 뱅크 충돌의 발생이 예상되는 경우 뱅크 충돌의 발생을 막기 위한 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다.
상기 기술적 과제를 이루기 위해, 본 발명에 의한 뱅크 충돌 방지 장치는, 미리 마련된 적어도 하나의 뱅크; 자신들에 대해 주어지는 억세스 명령들에 따라 각각은 하나의 상기 뱅크에 억세스 가능한 기입독출부들; 상기 억세스 명령들 중 상기 기입독출부들 중 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하게 않게 되도록, 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들 중 하나인 제1 명령의 실행 시점을 상기 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 상기 제1 명령을 제2 명령으로 변경하는 스케쥴링부; 및 상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크로부터 독출한 데이터를 상기 제1 명령의 실행 시점에 입력받도록 하는 스위칭부를 포함하는 것이 바람직하다.
상기 다른 기술적 과제를 이루기 위해, 자신들에 대해 주어지는 억세스 명령들에 따라 각각은 미리 마련된 적어도 하나의 뱅크 중 하나의 상기 뱅크에 억세스 가능한 기입독출부들을 위한 본 발명에 의한 뱅크 충돌 방지 방법은, 상기 억세스 명령들 중 상기 기입독출부들 중 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하게 않게 되도록, 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들 중 하나인 제1 명령의 실행 시점을 상기 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 상기 제1 명령을 제2 명령으로 변경하는 단계; 및 상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크로부터 독출한 데이터를 상기 제1 명령의 실행 시점에 입력받도록 하는 단계를 포함하는 것이 바람직하다.
상기 또 다른 기술적 과제를 이루기 위해, 자신들에 대해 주어지는 억세스 명령들에 따라 각각은 미리 마련된 적어도 하나의 뱅크 중 하나의 상기 뱅크에 억세스 가능한 기입독출부들을 위한 본 발명에 의한 컴퓨터로 읽을 수 있는 기록매체는, 상기 억세스 명령들 중 상기 기입독출부들 중 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하게 않게 되도록, 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들 중 하나인 제1 명령의 실행 시점을 상기 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 상기 제1 명령을 제2 명령으로 변경하는 단계; 및 상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크로부터 독출한 데이터를 상기 제1 명령의 실행 시점에 입력받도록 하는 단계를 컴퓨터에서 실행시키기 위한 컴퓨터 프로그램을 저장하는 것이 바람직하다.
본 발명에 의한 뱅크 충돌 방지 장치 및 방법은, 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들 중 하나인 제1 명령의 실행 시점을, 그 억세스 명령들이 뱅크 충돌을 야기시키지 않게 되도록 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 제1 명령을 제2 명령으로 변경한 뒤, 당초에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부가 그 뱅크에 제2 명령의 실행 시점에 억세스하여 그 뱅크로부터 데이터를 독출한 뒤, 제1 명령의 실행 시점에야 비로소 그 독출된 데이터를 입력받도록 한다. 이에 따라, 본 발명에 의한 뱅크 충돌 방지 장치 및 방법은, 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 기입독출부들에 대해 주어지더라도, 뱅크 충돌이 실제로 발생되는 것을 막음으로써, 뱅크 충돌의 발생으로 인해 프로세서의 성능이 떨어지는 것을 방지하는 효과를 갖는다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 그 첨부 도면을 설명하는 내용을 참조하여야만 한다.
이하, 본 발명에 의한 뱅크 충돌 방지 장치 및 방법을 첨부한 도면들을 참조하여 다음과 같이 설명한다.
도 1a는 본 발명에 의한 뱅크 충돌 방지 장치를 설명하기 위한 회로도이고, 도 1b는 본 발명에 의한 뱅크 충돌 방지 장치를 설명하기 위한 블록도이다. 도 1a 및 도 1b에 도시된 바에 따르면, 본 발명에 의한 뱅크 충돌 방지 장치는, 하나 이상의 뱅크(bank)들(MB0, MB1, MB2, ..., MBM)(110-0, 110-1, 110-2, ..., 110-M)단, M은 음이 아닌 정수), '복수의 기입독출부(load/store unit)들(L/S0, L/S1, L/S2, ..., L/S N)(120-0, 120-1, 120-2, ..., 120-N)(단, N은 자연수)로서 구현된 프로세서(processor)', 먹스(MUX: Multiplexer)/디먹스(DEMUX: Demultiplexer)들(122-0, 122-1, 122-2, ..., 122-N), 디먹스/먹스들(124-0, 124-1, 124-2, ..., 124-N), 버스(130), 메모리 콘트롤러(135), PFU(Pre Fetching Unit)(140), 버퍼(buffer)들(B0, B1, B2, ..., B N)(144-0, 144-1, 144-2, ..., 144-N)을 포함할 수 있다. 이하에서는 설명의 편의상, M은 N이라 가정한다. 즉, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 각각과, 기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 각각과, 먹스/디먹스들(122-0, 122-1, 122-2, ..., 122-N) 각각과, 디먹스/먹스들(124-0, 124-1, 124-2, ..., 124-N) 각각과, 버퍼들(144-0, 144-1, 144-2, ..., 144-N) 각각은 서로 일대일 매칭(matching)되어 있다고 가정한다.
뱅크(110-n, 단, n은 n≤N인 음이 아닌 정수)란 메모리의 논리 단위를 의미한다. 즉, 메모리의 어드레스(address)는 뱅크(110-n)마다 독립적으로 부여된다. 도 1a에 도시된 바와 같이, 뱅크들(110-0, 110-1, 110-2, ..., 110-N)의 출력 단자들(111-0, 111-1, 111-2, ..., 111-N) 각각은 뱅크들 각각의 출력 단자이다. 즉, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 각각은 단일 포트(single-port) 뱅크이 다. 구체적으로, 뱅크(110-n)가 뱅크(110-n)의 외부와 정보를 주고 받을 수 있는 통로의 개수는 오직 하나이다.
기입독출부(120-n)는 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 하나의 뱅크에 억세스(access)할 수 있다. 구체적으로, 기입독출부(110-n)는 뱅크들(110-0 , 110-1, 110-2, ..., 110-N) 중 하나의 뱅크로부터 어떠한 데이터를 독출(load)하고자 그 하나의 뱅크에 억세스할 수도 있고, 기입독출부(110-n)는 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 하나의 뱅크로부터 어떠한 데이터를 기입(store)하고자 그 하나의 뱅크에 억세스할 수도 있다.
전술한 바와 같이, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 각각은 단일 포트 뱅크이므로, 하나의 뱅크(110-n)에는 기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 하나만 억세스할 수 있을 뿐이다.
먹스/디먹스들(122-0, 122-1, 122-2, ..., 122-N) 각각은 먹스로서 기능할 수도 있고 디먹스로서 기능할 수도 있고 입력받은 정보를 그대로 바이패스(bypass)하여 출력할 수도 있는 블록을 의미하고, 디먹스/먹스들(124-0, 124-1, 124-2, ..., 124-N) 각각은 디먹스로서 기능할 수도 있고 먹스로서 기능할 수도 있고 입력받은 정보를 그대로 바이패스하여 출력할 수도 있는 블록을 의미한다.
버스(130)는 먹스/디먹스들(122-0, 122-1, 122-2, ..., 122-N) 각각마다, 먹스/디먹스(122-n)를 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 하나의 뱅크에 연결시킬 수도 있고, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 뱅크에도 연결시키지 않을 수도 있다. 한편, 먹스/디먹스(122-n), 디먹스/먹스(124-n), 기입독출부(120-n)는 서로 연결되어 있다. 결국, 버스(130)는 기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 각각마다, 기입독출부(110-n)를 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 특정 뱅크에 연결시킬 수도 있고, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 뱅크에도 연결시키지 않을 수도 있다. 또한, 기입독출부(120-n)는 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 버스(130)에 의해 연결된 뱅크에 억세스한다.
버스(130)가 기입독출부(120-n)를, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 뱅크에도 연결시키지 않을지 아니면, 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 특정 뱅크에 연결시킬지는, 메모리 콘트롤러(135)에 의해 제어된다.
구체적으로, 메모리 콘트롤러(135)는 억세스 명령(access instruction)들에 따라 버스(130)의 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 및 기입독출부들(120-0, 120-1, 120-2, ..., 120-N)과의 연결 상태를, 프로세서의 프로세서 사이클이 바뀔 때마다 갱신한다. 여기서, 억세스 명령들은, 프로세서의 프로세서 사이클(processor cycle)이 바뀔 때마다 본 발명에 의한 뱅크 충돌 방지 장치에 기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대해 주어지며, 기입독출부(120-n)에 대한 억세스 명령은, 기입독출부(120-n)가 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 뱅크에도 억세스되지 말 것을 지시할 것을 지시하거나, 기입독출부(120-n)가 뱅크들(110-0, 110-1, 110-2, ..., 110-N) 중 어느 특정 뱅크에 억세스될 것을 지시하는 명령(instruction)을 의미한다. 또한, 프로세서 사이클이란, 프로세서에 구비된 클럭의 클럭 사이클(clock cycle)을 의미한다.
보다 구체적으로, 본 발명에 의한 뱅크 충돌 방지 장치에 구비된 패치(fetch)/디코드(decode)부(미 도시)는, 그 뱅크 충돌 방지 장치에 마련된 프로세서의 프로세서 사이클이 변경될 때마다, 기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들로서 '그 뱅크 충돌 방지 장치의 외부에 부호화되어 미리 마련된' 억세스 명령들을 그 외부로부터 가져온다(fetch). 한편, 패치/디코드부(미 도시)는 그 가져온 억세스 명령들을 프로세서의 프로세서 사이클이 바뀔 때마다 복호화(decode)한 뒤, 복호화된 억세스 명령들을 후술할 PFU(140)에 전달한다. 이 후, PFU(140)는 프로세서의 프로세서 사이클이 일정 횟수만큼 경과하는 동안, 그 전달된 억세스 명령들을 적절히 조정할 수 있다. 만일, 그 전달된 억세스 명령들이 적절히 조정되었다면, PFU(140)는 그 일정 횟수의 프로세서 사이클이 경과한 직후에 그 조정된 억세스 명령들을 메모리 콘트롤러(135)에 전달한다. 반면, 그 전달된 억세스 명령들이 조정되지 않았다면, PFU(140)는 그 일정 횟수의 프로세서 사이클이 경과한 직후에 그 전달된 억세스 명령들을 메모리 콘트롤러(135)에 전달한다. 여기서, '그 전달된 억세스 명령들을 적절히 조정한다'란, 후술할 PFU(140)의 스케쥬링부(미 도시)의 그 전달된 억세스 명령들에 대한 동작을 의미한다.
PFU(140)는 스케쥴링(scheduling)부(미 도시), 및 스위칭부(190)를 포함한다.
스케쥴링부(미 도시)는 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억 세스 명령들 중, '기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 적어도 일부의 기입독출부들의 동일한 뱅크(120-n)에의 억세스를 지시하는 억세스 명령들'이 존재하는지 검사한다. 여기서, 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들은, 프로세서의 프로세서 사이클이 바뀔 때마다 갱신되며, 패치/디코드부(미 도시)에 의해 복호화된 '기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들'을 의미한다.
만일, 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들 중, '기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 적어도 일부의 기입독출부들의 동일한 뱅크(120-n)에의 억세스를 지시하는 억세스 명령들'이 존재한다고 검사되면, 스케쥴링부(미 도시)는 그 적어도 일부의 기입독출부들의 동일한 뱅크에의 억세스를 지시하는 억세스 명령들이, 그 적어도 일부의 기입독출부들의 동일한 뱅크에의 억세스를 지시하지 않게 되도록, 그 적어도 일부의 기입독출부들의 동일한 뱅크에의 억세스를 지시하는 억세스 명령들 중 하나인 제1 명령의 실행 시점을 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 제1 명령을 제2 명령으로 변경한다.
즉, 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재한다고 검사되면, 스케쥴링부(미 도시)는, '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들' 중 하나인 제1 명령의 실행 시점을, 그 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 뱅크 충돌을 야기시키지 않도록 제1 명령의 실행 시점의 이전 시점으로 변경함으로써, 제1 명령을 제2 명령으로 변경한다.
제1 명령과 제2 명령간에는 실행 시점의 차이만 있을 뿐이다. 구체적으로, 제1 명령이 지시하는 바와 제2 명령이 지시하는 바는 서로 동일하며, 다만, 제2 명령의 실행 시점이 제1 명령의 실행 시점에 앞설 뿐이다. 본 명세서에서, 제1 명령과 제2 명령 각각은, 기입독출부의 독출 작업을 지시하는 억세스 명령이다. 즉, 제1 명령과 제2 명령 각각은, 기입독출부가 어느 한 뱅크에 억세스하여 그 뱅크로부터 어떠한 데이터를 독출할 것을 지시하는 억세스 명령이다. 이에 반해, 패치/디코드부(미 도시)에 의해 복호화된 '기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들' 중, 제1 명령을 제외한 억세스 명령들에는 기입독출부의 기입 작업을 지시하는 억세스 명령도 포함될 수 있다. 즉, 패치/디코드부(미 도시)에 의해 복호화된 '기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들' 중, 제1 명령을 제외한 억세스 명령들에는 기입독출부가 어느 한 뱅크에 억세스하여 그 뱅크에 어떠한 데이터를 기입할 것을 지시하는 억세스 명령도 포함될 수 있다.
스케쥴링부(미 도시)는 테이블 저장부(160), 테이블 갱신부(170), 및 뱅크충돌 예측부(180)를 포함하며, 스케쥴링부(미 도시)의 동작을 보다 구체적으로 설명하면 다음과 같다.
테이블 저장부(160)는 '패치/디코드부(미 도시)에 의해 복호화되었던 억세스 명령들 중 아직 실행되지 않은 억세스 명령들'을 나타내는 도표인 선취 테이블(PFT: Pre Fetch Table)을 저장한다.
또한, 테이블 저장부(160)는 선취 테이블에 대응되는 매스크 테이블(Masked PFT)도 그 선취 테이블과 함께 저장한다. 여기서, 매스크 테이블이란, 선취 테이블에 나타난 '하나의 기입독출부 및 하나의 뱅크에 대한 억세스 명령'을, "그 선취 테이블에 나타난 억세스 명령들로서 '하나의 기입독출부 및 하나의 뱅크에 대한 억세스 명령' 이외의 억세스 명령들" 중 적어도 일부를 고려하여 갱신한 결과를 의미한다.
한편, 프로세서의 프로세서 사이클이 바뀔 때마다, 패치/디코드부(미 도시)는 본 발명에 의한 뱅크 충돌 방지 장치에 주어졌던 억세스 명령들 중 그 바뀐 프로세서 사이클에 대응되는 복호화 시점을 갖는 억세스 명령들을 복호화한다. 또한, 프로세서의 프로세서 사이클이 바뀔 때마다, 기입독출부들(120-0, 120-1, 120-2, ..., 120-N)은 본 발명에 의한 뱅크 충돌 방지 장치에 주어졌던 억세스 명령들 중 그 바뀐 프로세서 사이클에 대응되는 실행 시점을 갖는 억세스 명령들을 실행한다.
이에 따라, 테이블 갱신부(170)는 프로세서의 프로세서 사이클이 바뀔 때마다, 테이블 저장부(160)에 저장된 선취 테이블과 매스크 테이블을 갱신한다.
뱅크충돌 예측부(180)는, 테이블 갱신부(170)로부터 선취 테이블을 독출하고, 독출된 선취 테이블을 이용하여, 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들 중, '기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 적어도 일부의 기입독출부들의 동일한 뱅크(120-n)에의 억세스를 지시하는 억세스 명령들'이 존재하는지 검사한다. 여기서, 본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들은, 프로세서의 프로세서 사이클이 바뀔 때마다 갱신되며, 패치 /디코드부(미 도시)에 의해 복호화된 '기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들'을 의미한다.
이 경우, 테이블 갱신부(170)는 뱅크충돌 예측부(180)에서의 검사 결과에 응답하여, 테이블 저장부(160)에 저장된 선취 테이블에 나타난 제1 명령을 제2 명령으로 변경함으로써, 그 저장된 선취 테이블을 갱신한다. 구체적으로, 뱅크충돌 예측부(180)에 의해 "본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들 중, '기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 적어도 일부의 기입독출부들의 동일한 뱅크(120-n)에의 억세스를 지시하는 억세스 명령들'이 존재한다고 검사되면", 데이터 갱신부(170)는 테이블 저장부(160)에 저장된 선취 테이블에 나타난 제1 명령을 제2 명령으로 변경함으로써, 그 저장된 선취 테이블을 갱신한다. 이 때, 그 갱신된 선취 테이블은 '제1 명령이 선취 테이블상에서 어떻게 존재했었는가'를 나타내고 있다.
다만, 테이블 갱신부(170)는 뱅크충돌 예측부(180)에서의 검사 결과에 응답하여, 테이블 저장부(160)에 저장된 매스크 테이블에 나타난 제1 명령을 제2 명령으로 변경함으로써, 그 저장된 매스크 테이블을 갱신할 수도 있다. 구체적으로, 뱅크충돌 예측부(180)에 의해 "본 발명에 의한 뱅크 충돌 방지 장치에 주어지는 억세스 명령들 중, '기입독출부들(120-0, 120-1, 120-2, ..., 120-N) 중 적어도 일부의 기입독출부들의 동일한 뱅크(120-n)에의 억세스를 지시하는 억세스 명령들'이 존재한다고 검사되면", 데이터 갱신부(170)는 테이블 저장부(160)에 저장된 매스크 테이블에 나타난 제1 명령을 제2 명령으로 변경함으로써, 그 저장된 매스크 테이블을 갱신한다. 이 때, 그 갱신된 매스크 테이블은 '제1 명령이 매스크 테이블상에서 어떻게 존재했었는가'를 나타내고 있다. 이와 같이, 테이블 갱신부(170)가 뱅크충돌 예측부(180)에서의 검사 결과에 응답하여, 테이블 저장부(160)에 저장된 매스크 테이블을 갱신하면, 테이블 갱신부(170)는 매스크 테이블이 갱신된 원리를 이용하여, 테이블 저장부(160)에 저장된 선취 테이블도 갱신한다.
한편, 스위칭부(190)는, '제1 명령이 제2 명령으로 변경되기 전에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부'가 그 뱅크에 제2 명령의 실행 시점에 억세스하여 그 뱅크로부터 데이터를 독출한 뒤, 제1 명령의 실행 시점에야 비로소 그 독출된 데이터를 입력받도록 한다. 구체적으로, 스위칭부(190)는, 뱅크충돌 예측부(180)에서의 검사 결과에 응답하여 테이블 갱신부(170)에 의해 갱신된 선취 테이블을 고려하여 동작하는 것이 바람직하다.
스위칭부(190)는 경로 개입부(192), 및 버퍼들(144-0, 144-1, 144-2, ..., 144-N)을 포함하고, 스위칭부(190)의 동작을 보다 구체적으로 설명하면 다음과 같다.
경로 개입부(192)는 '제1 명령이 제2 명령으로 변경되기 전에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부(120-n)'가 그 뱅크에 제2 명령의 실행 시점에 억세스하여 그 뱅크로부터 데이터를 독출하도록 한다.
이 경우, '제1 명령이 제2 명령으로 변경되기 전에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부(120-n)'는 제2 명령에 따라 그 뱅크에 억세스하여 그 뱅크로부터 데이터를 독출하고, '제1 명령이 제2 명령으로 변경되기 전에 는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부(120-n)'에 대응된 버퍼(144-n)는 그 독출된 데이터를 임시로 저장한다.
이 후, 프로세서의 프로세서 사이클이 '제1 명령의 실행 시점과 제2 명령의 실행 시점간의 시간차'만큼 경과하여, 제1 명령의 실행 시점이 되면, 경로 개입부(192)는 '제1 명령이 제2 명령으로 변경되기 전에는 제1 명령에 따라 뱅크에 억세스될 예정이었던 기입독출부(120-n)'가 버퍼(144-n)에 저장된 그 데이터를 제1 명령의 실행 시점에 버퍼(144-n)로부터 독취하도록 한다.
도 2는 본 발명에 의한 선취 단계를 설명하기 위한 참고도이다. 도시된 바에서, i(단, i는 자연수), i+1, i+2, i+3, ..., i+11 각각은 프로세서 사이클을 의미한다.
도 2에 도시된 바와 같이, 프로세서의 프로세서 사이클이 바뀔 때마다, 본 발명에 의한 뱅크 충돌 방지 장치에는 기입독출부들(120-0, 120-1, 120-2, ..., 120-N)에 대한 억세스 명령들이 새롭게 주어진다. 즉, 프로세서의 프로세서 사이클이 i번째 프로세서 사이클일 때, 패치/디코드부(미 도시)에는 제a(단, a는 자연수) 억세스 명령(210)이 억세스 명령으로서 입력되고, 프로세서의 프로세서 사이클이 i+1번째 프로세서 사이클일 때, 패치/디코드부(미 도시)에는 제a+1 억세스 명령(220)이 억세스 명령으로서 입력되고, 프로세서의 프로세서 사이클이 i+2번째 프로세서 사이클일 때, 패치/디코드부(미 도시)에는 제a+2 억세스 명령(230)이 억세스 명령으로서 입력되고, 프로세서의 프로세서 사이클이 i+3번째 프로세서 사이클일 때, 패치/디코드부(미 도시)에는 제a+3 억세스 명령(240)이 억세스 명령으로서 입력되고, 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클일 때, 패치/디코드부(미 도시)에는 제a+4 억세스 명령(250)이 억세스 명령으로서 입력된다.
한편, 억세스 명령은 '패치(fetch) 단계', '복호화(decode) 단계', '선취(pre fetch) 단계', '실행(execution) 단계', '역기입(write-back) 단계'를 순차적으로 거치게 된다. 여기서, 패치 단계란, 억세스 명령이 패치/디코드부(미 도시)에 의해 패치(fetch)되는 단계를 의미하고, 복호화 단계란, 그 패치된 억세스 명령이 패치/디코드부(미 도시)에 의해 복호화되는 단계를 의미하고, 선취 단계란, 그 디코드된 억세스 명령이 스케쥴링부(미 도시)에 의해 적절히 조정될 수 있는(예컨대, 제1 명령을 제2 명령으로 변경) 단계를 의미하고, 실행 단계란, 억세스 명령이 실행되는 단계를 의미하고, 역기입 단계란, 억세스 명령의 실행에 의해 획득된 데이터(예컨대, 뱅크로부터 독출된 데이터)를 그 뱅크에 기입하는 단계를 의미한다. 이 때, 역기입 단계는 생략될 수 있다. 도 2에 도시된 바에서, F, D, PF, E, WB 각각은 패치 단계, 복호화 단계, 선취 단계, 실행 단계, 역기입 단계 각각을 의미한다.
이에 따라, 본 발명에 의한 억세스 명령에는, '패치 시점', '복호화 시점', '선취 시점', '실행 시점', '역기입 시점'이 부여되어 있기 마련이다. 이 때, 역기입 단계가 억세스 명령이 거치게 되는 단계들 중 하나가 아니라면, 그 억세스 명령에는 역기입 시점이 부여되지 않는다. 여기서, 패치 시점이란, 패치 단계를 거치게 되는 시점을 의미하고, 복호화 시점이란, 복호화 단계를 거치게 되는 시점을 의미하고, 선취 시점이란, 선취 단계를 거치게 되는 시점을 의미하고, 실행 시점이란, 실행 단계를 거치게 되는 시점을 의미하고, 역기입 시점이란, 역기입 단계를 거치게 되는 시점을 의미한다. 예컨대, 제a 억세스 명령(210)의 패치 시점은 프로세서 사이클이 i번째 프로세서 사이클일 때이고, 제a+1 억세스 명령(220)의 패치 시점은 프로세서 사이클이 i+1번째 프로세서 사이클일 때이고, 제a+2 억세스 명령(230)의 패치 시점은 프로세서 사이클이 i+2번째 프로세서 사이클일 때이고, 제a+3 억세스 명령(240)의 패치 시점은 프로세서 사이클이 i+3번째 프로세서 사이클일 때이고, 제a+4 억세스 명령(250)의 패치 시점은 프로세서 사이클이 i+4번째 프로세서 사이클일 때이다.
한편, 도 2에 도시된 바에서, 패치 단계, 복호화 단계, 실행 단계, 역기입 단계 각각은 하나의 프로세서 사이클동안 수행되는 반면, 선취 단계는 5개의 프로세서 사이클동안 수행된다. 패치 단계, 복호화 단계, 선취 단계, 실행 단계, 역기입 단계 각각의 이와 같은 수행 시간은, 설명의 편의를 위한 것이므로 이에 제한되지는 않는다.
도 3a 내지 도 3c는 본 발명에 의한 PFU(140)의 다양한 동작 모드들을 설명하기 위한 참고도들이다.
도 3a는 PFU(140)가 바이패스(bypass) 모드에서 동작하는 경우를 나타낸다. 구체적으로, PFU(140)는, 기입독출부(120-n)에 대해 주어진 억세스 명령이 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들' 중 하나가 아니라면, 기입독출부(120-n)에 대해 바이패스 모드에서 동작한다. 보다 구체적으로, 기입독출부(120-n)에 대해 주어진 억세스 명령이 '기입독출부(120-n)가 뱅크(110-n)로부터 데이터 를 독출할 것'을 지시하는 억세스 명령이면서 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들' 중 하나는 아니라면, PFU(140)는 기입독출부(120-n)가 그 억세스 명령의 실행 시점에 뱅크(110-n)에 억세스하여 뱅크(110-n)로부터 데이터를 독출하도록 한다.
도 3b는 PFU(140)가 선취(pre-fetch) 모드에서 동작하는 경우를 나타낸다. 구체적으로, PFU(140)는, 기입독출부(120-n)에 대해 주어진 억세스 명령이 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들' 중 하나라면, 기입독출부(120-n)에 대해 선취 모드에서 동작한다. 보다 구체적으로, 기입독출부(120-n)에 대해 주어진 억세스 명령이 제1 명령이라면(즉, 기입독출부(120-n)에 대해 주어진 억세스 명령이 '기입독출부(120-n)가 뱅크(110-n)로부터 데이터를 독출할 것'을 지시하는 억세스 명령이면서 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들' 중 하나라면), PFU(140)는 기입독출부(120-n)가 제2 명령의 실행 시점에 뱅크(110-n)에 억세스하여 뱅크(110-n)로부터 데이터를 독출하도록 한다. 이 경우, 기입독출부(120- n)는 제2 명령의 실행 시점에 뱅크(110-n)에 억세스하여 뱅크(110-n)로부터 데이터를 독출하고, 버퍼(144-n)는 그 독출된 데이터를 임시로 저장한다.
도 3c는 PFU(140)가 블록/디스패치(block & dispatch) 모드에서 동작하는 경우를 나타낸다. 구체적으로, PFU(140)는, 기입독출부(120-n)에 대해 선취 모드에서 동작한 바 있는 경우, 그 선취 모드에서의 동작이 완료되고 일정 시점이 경과한 뒤에, 기입독출부(120-n)에 대해 블록/디스패치 모드에서 동작한다. 보다 구체적으로, 기입독출부(120-n)가 제2 명령의 실행 시점에 뱅크(110-n)에 억세스하여 뱅 크(110-n)로부터 데이터를 독출한 바 있고, 버퍼(144-n)가 그 독출된 데이터를 임시로 저장한 바 있다면, PFU(140)는 기입독출부(120-n)가 제1 명령의 실행 시점에 뱅크(110-n)에 억세스하고자 하는 것을 막고(block), 대신, 기입독출부(120-n)가 버퍼(144-n)에 저장된 데이터를 제1 명령의 실행 시점에 입력받도록 한다(dispatch). 이로써, 기입독출부(120-n)는 버퍼(144-n)에 저장된 데이터를 제1 명령의 실행 시점에 입력받는다. 즉, 버퍼(144-n)에 저장된 데이터는 제1 명령의 실행 시점에 기입독출부(120-n)로 디스패치(dispatch)된다.
도 4는 M=N=4인 경우의 본 발명에 의한 선취 테이블(400)의 일 례를 나타낸 도면이다.
도 4에 도시된 바에서, 16개의 제b(단, b는 자연수) 억세스 명령들(410) 각각은 복호화 시점이 '프로세서 사이클이 i번째 프로세서 사이클일 때'인 억세스 명령이고, 16개의 제b+1 억세스 명령들(420) 각각은 복호화 시점이 '프로세서 사이클이 i+1번째 프로세서 사이클일 때'인 억세스 명령이고, 16개의 제b+2 억세스 명령들(430) 각각은 복호화 시점이 '프로세서 사이클이 i+2번째 프로세서 사이클일 때'인 억세스 명령이고, 16개의 제b+3 억세스 명령들(440) 각각은 복호화 시점이 '프로세서 사이클이 i+3번째 프로세서 사이클일 때'인 억세스 명령이다. 즉, 프로세서의 프로세서 사이클이 i번째 사이클일 때, 패치/디코드부(미 도시)에 의해 제b 억세스 명령들(410)이 복호화되고, 프로세서의 프로세서 사이클이 i+1번째 사이클일 때, 패치/디코드부(미 도시)에 의해 제b+1 억세스 명령들(420)이 복호화되고, 프로세서의 프로세서 사이클이 i+2번째 사이클일 때, 패치/디코드부(미 도시)에 의해 제b+2 억세스 명령들(430)이 복호화되고, 프로세서의 프로세서 사이클이 i+3번째 사이클일 때, 패치/디코드부(미 도시)에 의해 제b+3 억세스 명령들(440)이 복호화된다.
도 4에 도시된 선취 테이블(400)은, 제b 억세스 명령들(410), 제b+1 억세스 명령들(420), 제b+2 억세스 명령들(430), 제b+3 억세스 명령들(440) 모두 아직 실행되지 않았음을 나타낸다.
도 4에 도시된 바에서, LO, L1, L2, L3 각각은 L/S0(120-0), L/S1(120-1), L/S2(120-2), L/S3(120-3) 각각을 의미한다.
도 4에 도시된 바에서, 각 수치들(1 또는 0)은 억세스 명령을 의미한다. 구체적으로, 기입독출부(120-k, 단, p는 1≤p≤4인 정수) 및 뱅크(110-q, 단, q는 1≤q≤4인 정수)에 대한 수치 1은, 기입독출부(120-p)에 대한 억세스 명령이며, 기입독출부(120-p)가 뱅크(110-q)에 억세스할 것을 지시하는 억세스 명령을 의미한다. 이 때, 수치 1은, 기입독출부(120-p)가 뱅크(110-q)로부터 데이터를 독출하고자 기입독출부(120-p)가 뱅크(110-q)에 억세스할 것을 지시하는 억세스 명령을 의미할 수도 있고, 기입독출부(120-p)가 뱅크(110-q)에 데이터를 기입하고자 기입독출부(120-p)가 뱅크(110-q)에 억세스할 것을 지시하는 억세스 명령을 의미할 수도 있다. 반면, 기입독출부(120-p) 및 뱅크(110-q)에 대한 수치 0은, 기입독출부(120-p)에 대한 억세스 명령이며, 기입독출부(120-p)가 뱅크(110-q)에 억세스하지 않을 것을 지시하는 억세스 명령을 의미한다.
도 4에 도시된 바에 따르면, 제b 억세스 명령들(410) 중 '뱅크 충돌을 야기 시킬 것으로 예상되는 억세스 명령들'은 존재하지 않는다. 또한, 제b+1 억세스 명령들(420) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재한다. 즉, 제b+1 억세스 명령들(420) 중 '기입독출부(120-1)가 뱅크(110-0)에 억세스될 것을 지시하는 억세스 명령'과 '기입독출부(120-2)가 뱅크(110-0)에 억세스될 것을 지시하는 억세스 명령'은, 제b+1 억세스 명령들(420)의 실행 시점에 뱅크(110-0)에서의 뱅크 충돌을 야기시킬 예정이다. 마찬가지로, 제b+2 억세스 명령들(430)에도 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재한다. 즉, 제b+2 억세스 명령들(430) 중 '기입독출부(120-1)가 뱅크(110-2)에 억세스될 것을 지시하는 억세스 명령'과 '기입독출부(120-3)가 뱅크(110-2)에 억세스될 것을 지시하는 억세스 명령'은, 제b+2 억세스 명령들(430)의 실행 시점에 뱅크(110-2)에서의 뱅크 충돌을 야기시킬 예정이다. 또한, 제b+3 억세스 명령들(440)에도 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재한다. 즉, 제b+3 억세스 명령들(440) 중 '기입독출부(120-0)가 뱅크(110-3)에 억세스될 것을 지시하는 억세스 명령'과 '기입독출부(120-2)가 뱅크(110-3)에 억세스될 것을 지시하는 억세스 명령'과 '기입독출부(120-3)가 뱅크(110-3)에 억세스될 것을 지시하는 억세스 명령'은, 제b+3 억세스 명령들(440)의 실행 시점에 뱅크(110-3)에서의 뱅크 충돌을 야기시킬 예정이다.
도 5는 도 4에 나타난 억세스 명령들 중 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 뱅크 충돌을 야기시키지 않도록 그 억세스 명령들을 선취 테이블(400)상에서 조정하는 원리를 설명하기 위한 도면이다. 구체적으로, 도 5에 도 시된 선취 테이블(500)은, 테이블 갱신부(170)가 도 4에 도시된 선취 테이블(400)을 갱신한 결과이다.
도 5에 도시된 화살표들 각각은, 제1 명령이 제2 명령으로 변경되는 과정을 나타낸다. 구체적으로, 화살표들 각각의 종점에 표기된 P는 '제2 명령'을 의미하고 시점에 표기된 D는 '제2 명령으로 변경되기 전에는 제1 명령이었음'을 의미한다. 보다 구체적으로, 기입독출부(120-k) 및 뱅크(110-q)에 대한 표식 P는, 기입독출부(120-p)에 대한 억세스 명령이며, 기입독출부(120-p)가 뱅크(110-q)에 억세스할 것을 지시하는 억세스 명령을 의미한다. 반면, 기입독출부(120-p) 및 뱅크(110-q)에 대한 표식 D는, 기입독출부(120-p)에 대한 억세스 명령이며, 기입독출부(120-p)가 뱅크(110-q)에 억세스하지 않을 것을 지시하는 억세스 명령을 의미한다. 다만, 그럼에도 불구하고, 표식 P를 수치 1로서 표현하지 않고, 표식 D를 수치 0으로서 표현하지 않은 이유는 다음과 같다. 기입독출부(120-k) 및 뱅크(110-q)에 대한 표식 P가 의미하는 억세스 명령은, "메모리 콘트롤러(135)는 기입독출부(120-k)가 뱅크(110-q)에 억세스되도록 하고, PFU(140)는 버퍼(144-k)가 '기입독출부(120-k)가 뱅크(110-q)에 억세스하여 뱅크(110-q)로부터 독출한 데이터를 PFU(140) 자신이 가로채 버퍼(144-k)에 전달해 준 데이터'를 저장하도록 하는 억세스 명령"이라는 점에서, 표식 P와 수치 1은 엄밀하게는 서로 동일하지 않다. 마찬가지로, 기입독출부(120-k) 및 뱅크(110-q)에 대한 표식 D가 의미하는 억세스 명령은, "메모리 콘트롤러(135)는 기입독출부(120-k)가 뱅크(110-q)에 억세스되지 않도록 하고, PFU(140)는 기입독출부(120-k)는 뱅크(110-q)에 억세스하고자 하나 이를 막고 기입 독출부(120-k)가 버퍼(144-k)로부터 데이터를 전달받도록 하는 억세스 명령"이라는 점에서, 표식 D와 수치 0은 엄밀하게는 서로 동일하지 않다.
테이블 갱신부(170)는, (i) '선취 테이블(400)에서 제1 명령을 나타내는 수치 1'보다 선취 테이블(400 또는 500)상에서 윗 방향에 존재하는 수치들 중 수치 0이 존재하면서, (ii) 선취 테이블(400)에서 제1 명령을 나타내는 수치 1을 '그 윗 방향에 존재하는 수치 0'과 교체하더라도 선취 테이블(400)상에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 추가로 더 발생되지 않는 경우에 한해, 선취 테이블(400)에서 제1 명령을 나타내는 수치 1을 표식 D로 변경하고, '그 윗 방향에 존재하는 수치 0'을 표식 P로 변경함으로써, 선취 테이블(400)을 선취 테이블(500)로 갱신한다.
이에 따라, 테이블 갱신부(170)는, 제b+2 억세스 명령들(430)에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 더 이상 존재하지 않게 되고, 제b+3 억세스 명령들(440)에도 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 더 이상 존재하지 않게 되도록, 선취 테이블(400)을 갱신할 수 있다. 다만, 선취 테이블(400)에 나타난 '기입독출부(120-2)가 뱅크(110-0)에 억세스될 것을 지시하는 제b+1 억세스 명령(이 때, 수치는 1)'을 '기입독출부(120-2)가 뱅크(110-0)에 억세스될 것을 지시하는 제b 억세스 명령(이 때, 수치는 P)'으로 변경하거나, 선취 테이블(400)에 나타난 '기입독출부(120-1)가 뱅크(110-0)에 억세스될 것을 지시하는 제b+1 억세스 명령(이 때, 수치는 1)'을 '기입독출부(120-1)가 뱅크(110-0)에 억세스될 것을 지시하는 제b 억세스 명령(이 때, 수치는 P)'으로 변경하면, 제b 억세스 명령들(410)이 '이전에는 뱅크 충돌이 예상되지 않았던 뱅크인 뱅크(110-0)'에서의 뱅크 충돌을 야기되게 되므로, 테이블 갱신부(170)는, 제b+1 억세스 명령들(420)에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 더 이상 존재하지 않도록 할 수는 없다.
도 6은 도 4에 도시된 선취 테이블(400)에 대응되는 매스크 테이블(600)을 나타낸 도면이다.
전술한 바와 같이, 매스크 테이블(600)이란, 선취 테이블(400)에 나타난 '하나의 기입독출부 및 하나의 뱅크에 대한 억세스 명령'을, "그 선취 테이블에 나타난 억세스 명령들로서 '하나의 기입독출부 및 하나의 뱅크에 대한 억세스 명령' 이외의 억세스 명령들" 중 적어도 일부를 고려하여 갱신한 결과를 의미한다.
구체적으로, 매스크 테이블(600)은, 선취 테이블(400)에서 '하나의 뱅크 및 모든 기입독출부들'에 대한 억세스 명령들 중 수치 1이 하나라도 존재하는 경우, 그 억세스 명령들 모두를 수치 1로서 갱신한 결과이다. 예컨대, 선취 테이블(400)에서 '뱅크(110-0) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들은 1, 0, 0, 0이지만, 매스크 테이블(600)에서 '뱅크(110-0) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들은 1, 1, 1, 1이다.
또한, 매스크 테이블(600)은, 선취 테이블(400)에서 '하나의 뱅크 및 모든 기입독출부들'에 대한 억세스 명령들 중 수치 0만 존재하는 경우, 그 억세스 명령들을 '뱅크(110-0) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들, '뱅크(110-1) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세 스 명령들, '뱅크(110-2) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들, '뱅크(110-3) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들을 서로 논리합(logical OR)한 결과이다. 예컨대, 선취 테이블(400)에서 '뱅크(110-3) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들은 0, 0, 0, 0이지만, 매스크 테이블(600)에서 '뱅크(110-3) 및 기입독출부들(120-0, 120-1, 120-2, 120-3)'에 대한 억세스 명령들은 1, 1, 1, 0이다. 이 때, '1, 1, 1, 0'의 첫 번째 1은 '1, 0, 0, 0'이 서로 논리합(logical OR)된 결과이고, 두 번째 1은 '0, 1, 0, 0'이 서로 논리합된 결과이고, 세 번째 1은 '0, 0, 1, 0'이 서로 논리합된 결과이고, 네 번째 0은 '0, 0, 0, 0'이 서로 논리합된 결과이다.
이에 따라, 선취 테이블(400)상의 제b 억세스 명령(410), 제b+1 억세스 명령(420), 제b+2 억세스 명령(430), 제b+3 억세스 명령(440) 각각은, 매스크 테이블(600)상에서, 제b 억세스 명령(610), 제b+1 억세스 명령(620), 제b+2 억세스 명령(630), 제b+3 억세스 명령(640) 각각으로 갱신된다.
도 7은 도 4에 나타난 억세스 명령들 중 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 뱅크 충돌을 야기시키지 않도록 그 억세스 명령들을 매스크 테이블상에서 조정하는 원리를 설명하기 위한 도면이다. 구체적으로, 도 7에 도시된 매스크 테이블(700)은, 테이블 갱신부(170)가 도 6에 도시된 매스크 테이블(600)을 갱신한 결과이다.
도 7에 도시된 화살표들 각각은, 제1 명령이 제2 명령으로 변경되는 과정을 나타낸다. 구체적으로, 도 7에 표기된 표식 P, D는, 도 5에 표기된 표식 P, D와 동일하다.
테이블 갱신부(170)는, '매스크 테이블(600)에서 제1 명령을 나타내는 수치 1'보다 매스크 테이블(600 또는 700)상에서 윗 방향에 존재하는 수치들 중 수치 0이 존재하는 경우에 한해, 매스크 테이블(600)에서 제1 명령을 나타내는 수치 1을 표식 D로 변경하고, '그 윗 방향에 존재하는 수치 0'을 표식 P로 변경함으로써, 매스크 테이블(600)을 매스크 테이블(700)로 갱신한다. 결국, 매스크 테이블(600)의 매스크 테이블(700)로의 갱신은, 선취 테이블(400)의 선취 테이블(500)로의 갱신에 비해 신속히 완료될 수 있다. 이에 따라, 테이블 갱신부(170)는 '제1 명령을 제2 명령으로 변경하기 전에는' 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 뱅크 충돌을 야기시키지 않게 되도록 제1 명령을 제2 명령으로 변경하는 작업을, 선취 테이블(400)을 이용하여 수행하지 않고 매스크 테이블(600)을 이용하여 수행함으로써 보다 신속히 완료할 수 있다.
테이블 갱신부(170)는, 제b+2 억세스 명령들(630)에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 더 이상 존재하지 않게 되고, 제b+3 억세스 명령들(640)에도 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 더 이상 존재하지 않게 되도록, 매스크 테이블(600)을 갱신할 수 있다. 다만, 테이블 갱신부(170)는, 제b+1 억세스 명령들(620)에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 더 이상 존재하지 않도록 할 수는 없다.
한편, 테이블 갱신부(170)가, 매스크 테이블(600)을 매스크 테이블(700)로 갱신하였을 당시에, 선취 테이블(400)은 선취 테이블(500)로 갱신하지 않았더라도, 테이블 갱신부(170)는 매스크 테이블(600)이 매스크 테이블(700)로 갱신된 원리를 이용하여, 선취 테이블(400)을 선취 테이블(500)로 갱신한다.
도 8a 내지 도 15c는 본 발명에 의한 뱅크 충돌 방지 원리를 구체적으로 보여주는 참고도들이다.
도 8a 내지 도 15c에 도시된 바에서, M=N=4이며, LO, L1, L2, L3 각각은 L/S0(120-0), L/S1(120-1), L/S2(120-2), L/S3(120-3) 각각을 의미한다.
도 8a 내지 도 15c에 도시된 바에서, 제c(단, c는 자연수) 억세스 명령들(800), 제c+1 억세스 명령들(802 또는 804), 제c+2 억세스 명령들(812 또는 814), 제c+3 억세스 명령들(822 또는 824), 제c+4 억세스 명령들(832 또는 834), 제c+5 억세스 명령들(842 또는 844), 제c+6 억세스 명령들(852 또는 854), 제c+7 억세스 명령들(862 또는 864), 제c+8 억세스 명령들(872 또는 874), 제c+9 억세스 명령들(882 또는 884), 제c+10 억세스 명령들(892 또는 894), 제c+11 억세스 명령들(896) 각각은, 프로세서 사이클이 i번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+1번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+2번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+3번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+4번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+5번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+6번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이 클이 i+7번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+8번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+9번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+10번째 프로세서 사이클일 때 복호화되는 억세스 명령들, 프로세서 사이클이 i+11번째 프로세서 사이클일 때 복호화되는 억세스 명령들 각각을 의미한다.
도 8a 내지 도 15c에 도시된 바에서, 제c+ d(단, d는 0≤d≤10인 정수) 억세스 명령의 패치 단계, 복호화 단계, 실행 단계, 역기입 단계 각각은 하나의 프로세서 사이클동안 수행되는 반면, 제c+d 억세스 명령의 선취 단계는 세 개의 프로세서 사이클동안 수행된다. 즉, 제c+d 억세스 명령의 패치 단계가 프로세서 사이클이 j(단, j는 자연수) 번째 프로세서 사이클일 때 수행된다면, 제c+d 억세스 명령의 복호화 단계는 프로세서 사이클이 j+1번째 프로세서 사이클일 때 수행되고, 제c+d 억세스 명령의 선취 단계 프로세서 사이클이 j+2번째 프로세서 사이클일 때부터 j+4번째 프로세서 사이클일 때까지 수행되고, 제c+d 억세스 명령의 실행 단계는 프로세서 사이클이 j+5번째 프로세서 사이클일 때 수행되고, 제c+d 억세스 명령의 역기입 단계는 프로세서 사이클이 j+6번째 프로세서 사이클일 때 수행된다.
도 8a 내지 도 8c는 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 8a는 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은 제c 억세스 명령들(800)임을 나타내는 도면이다.
또한, 도 8b는 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클일 때의 선취 테이블로서, 제c+1 억세스 명령들(802), 제c+2 억세스 명령들(812), 제c+3 억세스 명령들(822), 제c+4 억세스 명령들(832)을 나타낸다.
한편, 도 8c는 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+1 억세스 명령들(804), 제c+2 억세스 명령들(814), 제c+3 억세스 명령들(824)을 나타낸다. 도 8c에 나타난 제c+4 억세스 명령들(832)은 도 8b에 나타난 제c+4 억세스 명령들(832)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+4번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+3 억세스 명령들(832) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 8b에 도시된 바에 따르면, 제c+3 억세스 명령들(832) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하지 않는다.
도 9a 내지 도 9c는 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 9a는 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은 제c+1 억세스 명령들(802)임을 나타내는 도면이다.
또한, 도 9b는 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클일 때의 선취 테이블로서, 제c+2 억세스 명령들(812), 제c+3 억세스 명령들(822), 제c+4 억세스 명령들(832), 제c+5 억세스 명령들(842)을 나타낸다. 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클이 되면, 제c+1 억세스 명령들(802)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 8b의 선취 테이블을 도 9b의 선취 테이블로 갱신한다.
한편, 도 9c는 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+2 억세스 명령들(814), 제c+3 억세스 명령들(824), 제c+4 억세스 명령들(834)을 나타낸다. 도 9c에 나타난 제c+5 억세스 명령들(842)은 도 9b에 나타난 제c+5 억세스 명령들(842)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+5번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+5 억세스 명령들(842) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 9b에 도시된 바에 따르면, 제c+5 억세스 명령들(842) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(0, 1, 1, 0)'이 존재한다.
하지만, 뱅크충돌 예측부(180)에 의해 제c+5 억세스 명령들(842) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(0, 1, 1, 0)'이 존재하지만, 제c+4 억세스 명령들(834) 중 뱅크(110-0)에 대한 억세스 명령들(1, 1, 1, 1)에 0이 존재하지 않으므로, 테이블 갱신부(170)는 제c+5 억세스 명령들(842)에 존재하는 제1 명령을 제2 명령으로 변경할 수 없다. 이에 따라, 제c+5 억세스 명령들(842)에 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 방치될 수 밖에 없다.
도 10a 내지 도 10d는 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '제1 명령이 제2 명령으로 변경되기 이전의 선취 테이블', '제1 명령이 제2 명령으로 변경되기 이전의 매스크 테이블', '제1 명령이 제2 명령으로 변경된 이후의 선취 테이블'을 나타낸다.
구체적으로, 도 10a는 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은 제c+2 억세스 명령들(812)임을 나타내는 도면이다.
또한, 도 10b는 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클일 때의 선취 테이블로서, 제c+3 억세스 명령들(822), 제c+4 억세스 명령들(832), 제c+5 억세스 명령들(842), 제c+6 억세스 명령들(852)을 나타낸다. 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클이 되면, 제c+2 억세스 명령들(812)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 9b의 선취 테이블을 도 10b의 선취 테이블로 갱신한다.
한편, 도 10c는 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+3 억세스 명령들(824), 제c+4 억세스 명령들(834), 제c+5 억세스 명령들(844)을 나타낸다. 도 10c에 나타난 제c+6 억세스 명령들(852)은 도 10b에 나타난 제c+6 억세스 명령들(852)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+6번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+6 억세스 명령들(852) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 10b에 도시된 바에 따르면, 제c+6 억세스 명령들(852) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(0, 1, 0, 1)'이 존재한다.
이처럼, 뱅크충돌 예측부(180)에 의해 제c+6 억세스 명령들(852) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(0, 1, 0, 1)'이 존재한다고 검사되면, 테이블 갱신부(170)는 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+6 억세스 명령(이 때, 수치는 1)'보다 매스크 테이블상에서의 윗 방향에 수치 0이 존재하므로, 제c+6 억세스 명령들(852) 중 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+6 억세스 명령'을 나타내는 수치 1을 표식 D로 변경하고, 제c+5 억세스 명령들(844) 중 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+5 억세스 명령'을 나타내는 수치 0을 표식 P로 변경하고, 이와 마찬가지로, 제c+5 억세스 명령들(842) 중 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+5 억세스 명령'을 나타내는 수치 0을 표식 P로 변경함으로써, 도 10b에 도시된 선취 테이블을 도 10d에 도시된 선취 테이블로 갱신한다.
도 11a 내지 도 11d는 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '제1 명령이 제2 명령으로 변경되기 이전의 선취 테이블', '제1 명령이 제2 명령으로 변경되기 이전의 매스크 테이블', '제1 명령이 제2 명령으로 변경된 이후의 선취 테이블'을 나타낸다.
구체적으로, 도 11a는 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은 제c+3 억세스 명령들(822)임을 나타내는 도면이다.
또한, 도 11b는 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클일 때의 선취 테이블로서, 제c+4 억세스 명령들(832), 제c+5 억세스 명령들(842), 제 c+6 억세스 명령들(852), 제c+7 억세스 명령들(862)을 나타낸다. 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클이 되면, 제c+3 억세스 명령들(822)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 10b의 선취 테이블을 도 11b의 선취 테이블로 갱신한다.
한편, 도 11c는 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+4 억세스 명령들(834), 제c+5 억세스 명령들(844), 제c+6 억세스 명령들(854)을 나타낸다. 도 11c에 나타난 제c+7 억세스 명령들(862)은 도 11b에 나타난 제c+7 억세스 명령들(862)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+7번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+7 억세스 명령들(862) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 11b에 도시된 바에 따르면, 제c+7 억세스 명령들(862) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(1, 0, 1, 1)'이 존재한다.
이처럼, 뱅크충돌 예측부(180)에 의해 제c+7 억세스 명령들(862) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들(1, 0, 1, 1)'이 존재한다고 검사되면, 테이블 갱신부(170)는 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+7 억세스 명령(이 때, 수치는 1)'보다 매스크 테이블상에서의 윗 방향에 수치 0들이 존재하므로, 제c+7 억세스 명령들(862) 중 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+7 억세스 명령'을 나타내는 수치 1을 표식 D로 변경하고, 제c+5 억세스 명령들(844) 중 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+5 억세스 명령'을 나 타내는 수치 0을 표식 P로 변경하고, 이와 마찬가지로, 제c+5 억세스 명령들(842) 중 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+5 억세스 명령'을 나타내는 수치 0을 표식 P로 변경함으로써, 도 11b에 도시된 선취 테이블을 도 11d에 도시된 선취 테이블로 갱신한다.
도 12a 내지 도 12c는 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 12a는 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은, 도 11d에 나타난 제c+4 억세스 명령들(832)임을 나타내는 도면이다.
또한, 도 12b는 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클일 때의 선취 테이블로서, 제c+5 억세스 명령들(842), 제c+6 억세스 명령들(852), 제c+7 억세스 명령들(862), 제c+8 억세스 명령들(872)을 나타낸다. 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클이 되면, 제c+4 억세스 명령들(832)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 11b의 선취 테이블을 도 12b의 선취 테이블로 갱신한다.
한편, 도 12c는 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+5 억세스 명령들(844), 제c+6 억세스 명령들(854), 제c+7 억세스 명령들(864)을 나타낸다. 도 12c에 나타난 제c+8 억세스 명령들(872)은 도 12b에 나타난 제c+8 억세스 명령들(872)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+8번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+8 억세스 명령들(872) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 12b에 도시된 바에 따르면, 제c+8 억세스 명령들(872) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재하지 않는다.
도 13a 내지 도 13c는 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 13a는 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은, 도 12c에 나타난 제c+5 억세스 명령들(842)임을 나타내는 도면이다.
'기입독출부(120-1) 및 뱅크(110-0)에 대한 제c+5 억세스 명령'과 '기입독출부(120-2) 및 뱅크(110-0)에 대한 제c+5 억세스 명령'은, 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클일 때, 뱅크(110-0)에서의 뱅크 충돌을 발생시킨다. 이 경우, 메모리 콘트롤러(135)가 '기입독출부(120-1) 및 뱅크(110-0)에 대한 제c+5 억세스 명령' 및 '기입독출부(120-2) 및 뱅크(110-0)에 대한 제c+5 억세스 명령' 모두를 고려하여 기입독출부(120-1), 기입독출부(120-2), 뱅크(110-0) 모두의 상태를 조정한 뒤에야 비로소, 프로세서의 프로세서 사이클이 움직이게 된다.
한편, 메모리 콘트롤러(135)는 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+5 억세스 명령'에 따라, 기입독출부(120-3)가 뱅크(110-2)에 억세스하여 데이 터를 독출하도록 한다. 한편, PFU(140)는 기입독출부(120-3)가 독출한 그 데이터를 가로채 버퍼(144-3)에 전달하며 버퍼(144-3)가 그 전달된 데이터를 임시로 저장하도록 한다. 이에 따라, 버퍼(144-3)는 그 독출된 데이터를 임시로 저장한다.
또한, 메모리 콘트롤러(135)는 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+5 억세스 명령'에 따라, 기입독출부(120-0)가 뱅크(110-3)에 억세스하여 데이터를 독출하도록 한다. 한편, PFU(140)는 기입독출부(120-0)가 독출한 그 데이터를 가로채 버퍼(144-0)에 전달하며 버퍼(144-0)가 그 전달된 데이터를 임시로 저장하도록 한다. 이에 따라, 버퍼(144-0)는 그 독출된 데이터를 임시로 저장한다.
도 13b는 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클일 때의 선취 테이블로서, 제c+6 억세스 명령들(852), 제c+7 억세스 명령들(862), 제c+8 억세스 명령들(872), 제c+9 억세스 명령들(882)을 나타낸다. 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클이 되면, 제c+5 억세스 명령들(842)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 12b의 선취 테이블을 도 13b의 선취 테이블로 갱신한다.
한편, 도 13c는 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+6 억세스 명령들(854), 제c+7 억세스 명령들(864), 제c+8 억세스 명령들(874)을 나타낸다. 도 13c에 나타난 제c+9 억세스 명령들(882)은 도 13b에 나타난 제c+9 억세스 명령들(882)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+9번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+9 억세스 명령들(882) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 13b에 도시된 바에 따르면, 제c+9 억세스 명령들(882) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재하지 않는다.
도 14a 내지 도 14c는 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 14a는 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은, 도 13c에 나타난 제c+6 억세스 명령들(852)임을 나타내는 도면이다.
메모리 콘트롤러(135)는 '기입독출부(120-1) 및 뱅크(110-2)에 대한 제c+6 억세스 명령'에 따라, 기입독출부(120-1)가 뱅크(110-2)에 억세스하여 데이터를 독출하도록 한다. 이에 따라, 기입독출부(120-1)는 뱅크(110-2)로부터 데이터를 독취한다.
또한, 메모리 콘트롤러(135)는 '기입독출부(120-2) 및 뱅크(110-3)에 대한 제c+6 억세스 명령'에 따라, 기입독출부(120-2)가 뱅크(110-3)에 억세스하여 데이터를 독출하도록 한다. 한편, PFU(140)는 기입독출부(120-2)가 독출한 그 데이터를 가로채 버퍼(144-2)에 전달하며 버퍼(144-2)가 그 전달된 데이터를 임시로 저장하도록 한다. 이에 따라, 버퍼(144-2)는 그 독출된 데이터를 임시로 저장한다.
또한, PFU(140)는 '기입독출부(120-3) 및 뱅크(110-2)에 대한 제c+6 억세스 명령'에 따라, 기입독출부(120-3)가 뱅크(110-2)에 억세스하는 것을 막고, 기입독 출부(120-3)가 버퍼(144-3)에 저장된 데이터를 버퍼(144-3)로부터 독취하도록 한다. 이에 따라, 기입독출부(120-3)는 버퍼(144-3)로부터 데이터를 독취한다.
도 14b는 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클일 때의 선취 테이블로서, 제c+7 억세스 명령들(862), 제c+8 억세스 명령들(872), 제c+9 억세스 명령들(882), 제c+10 억세스 명령들(892)을 나타낸다. 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클이 되면, 제c+6 억세스 명령들(852)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 13b의 선취 테이블을 도 14b의 선취 테이블로 갱신한다.
한편, 도 14c는 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+7 억세스 명령들(864), 제c+8 억세스 명령들(874), 제c+9 억세스 명령들(884)을 나타낸다. 도 14c에 나타난 제c+10 억세스 명령들(892)은 도 14b에 나타난 제c+10 억세스 명령들(892)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+10번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+10 억세스 명령들(892) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 14b에 도시된 바에 따르면, 제c+10 억세스 명령들(892) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재하지 않는다.
도 15a 내지 도 15c는 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클일 때의 '실행 중인 억세스 명령들', '선취 테이블', '매스크 테이블'을 나타낸다.
구체적으로, 도 15a는 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클일 때, 실행 중인 억세스 명령들은, 도 14c에 나타난 제c+7 억세스 명령들(862)임을 나타내는 도면이다.
메모리 콘트롤러(135)는 '기입독출부(120-3) 및 뱅크(110-3)에 대한 제c+7 억세스 명령'에 따라, 기입독출부(120-3)가 뱅크(110-3)에 억세스하여 데이터를 독출하도록 한다. 이에 따라, 기입독출부(120-3)는 뱅크(110-3)로부터 데이터를 독취한다.
또한, PFU(140)는 '기입독출부(120-0) 및 뱅크(110-3)에 대한 제c+7 억세스 명령'에 따라, 기입독출부(120-0)가 뱅크(110-3)에 억세스하는 것을 막고, 기입독출부(120-0)가 버퍼(144-0)에 저장된 데이터를 버퍼(144-0)로부터 독취하도록 한다. 이에 따라, 기입독출부(120-0)는 버퍼(144-0)로부터 데이터를 독취한다.
마찬가지로, PFU(140)는 '기입독출부(120-2) 및 뱅크(110-3)에 대한 제c+7 억세스 명령'에 따라, 기입독출부(120-2)가 뱅크(110-3)에 억세스하는 것을 막고, 기입독출부(120-2)가 버퍼(144-2)에 저장된 데이터를 버퍼(144-2)로부터 독취하도록 한다. 이에 따라, 기입독출부(120-2)는 버퍼(144-2)로부터 데이터를 독취한다.
도 15b는 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클일 때의 선취 테이블로서, 제c+8 억세스 명령들(872), 제c+9 억세스 명령들(882), 제c+10 억세스 명령들(892), 제c+11 억세스 명령들(896)을 나타낸다. 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클이 되면, 제c+7 억세스 명령들(862)은 실행되고, 테이블 갱신부(170)는 테이블 저장부(160)에 저장되어 있는 도 14b의 선취 테 이블을 도 15b의 선취 테이블로 갱신한다.
한편, 도 15c는 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클일 때의 매스크 테이블로서, 제c+8 억세스 명령들(874), 제c+9 억세스 명령들(884), 제c+10 억세스 명령들(894)을 나타낸다. 도 15c에 나타난 제c+11 억세스 명령들(896)은 도 15b에 나타난 제c+11 억세스 명령들(896)을 의미한다.
이 경우, 즉, 프로세서의 프로세서 사이클이 i+11번째 프로세서 사이클이 되면, 뱅크충돌 예측부(180)는 제c+11 억세스 명령들(896) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'이 존재하는지 검사한다. 도 15b에 도시된 바에 따르면, 제c+11 억세스 명령들(896) 중 '뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들'은 존재하지 않는다.
도 16은 본 발명에 의한 뱅크 충돌 방지 방법을 설명하기 위한 플로우챠트로서, 뱅크 충돌의 발생이 예상되는 경우 뱅크 충돌의 발생을 막기 위한 단계들(제1610~ 제1620 단계들)을 포함할 수 있다.
스케쥴링부(미 도시)는 기입독출부들(120-1 내지 120-N)에 대해 주어지는 억세스 명령들 중, '그 기입독출부들 중 적어도 일부의 기입독출부들의 동일한 뱅크(110-n)에의 억세스를 지시하는 억세스 명령들'이 그 적어도 일부의 기입독출부들의 동일한 뱅크(110-n)에의 억세스를 지시하게 않게 되도록, 그 적어도 일부의 기입독출부들의 동일한 뱅크(110-n)에의 억세스를 지시하는 억세스 명령들 중 하나인 제1 명령의 실행 시점을 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 제1 명령을 제2 명령으로 변경한다(제1610 단계).
제1610 단계 후에, 스위칭부(190)는 그 기입독출부들 중 하나가, 제2 명령에 따라 하나의 뱅크로부터 데이터를 독출한 데이터를 제1 명령의 실행 시점에 입력받도록 한다(제1620 단계).
이상에서 언급된 본 발명에 의한 뱅크 충돌 방지 방법을 컴퓨터에서 실행시키기 위한 프로그램은 컴퓨터로 읽을 수 있는 기록매체에 저장될 수 있다. 여기서, 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬(ROM), 플로피 디스크, 하드 디스크 등), 및 광학적 판독 매체(예를 들면, CD-ROM, Digital Versatile Disc)와 같은 저장매체를 포함한다.
이제까지 본 발명을 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로, 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점들은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1a는 본 발명에 의한 뱅크 충돌 방지 장치를 설명하기 위한 회로도이다.
도 1b는 본 발명에 의한 뱅크 충돌 방지 장치를 설명하기 위한 블록도이다.
도 2는 본 발명에 의한 선취 단계를 설명하기 위한 참고도이다.
도 3a 내지 도 3c는 본 발명에 의한 PFU의 다양한 동작 모드들을 설명하기 위한 참고도들이다.
도 4는 본 발명에 의한 선취 테이블의 일 례를 나타낸 도면이다.
도 5는 도 4에 나타난 억세스 명령들 중 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 뱅크 충돌을 야기시키지 않도록 그 억세스 명령들을 선취 테이블상에서 조정하는 원리를 설명하기 위한 도면이다.
도 6은 도 4에 도시된 선취 테이블에 대응되는 매스크 테이블을 나타낸 도면이다.
도 7은 도 4에 나타난 억세스 명령들 중 뱅크 충돌을 야기시킬 것으로 예상되는 억세스 명령들이 뱅크 충돌을 야기시키지 않도록 그 억세스 명령들을 매스크 테이블상에서 조정하는 원리를 설명하기 위한 도면이다.
도 8a 내지 도 15c는 본 발명에 의한 뱅크 충돌 방지 원리를 구체적으로 보여주는 참고도들이다.
도 16은 본 발명에 의한 뱅크 충돌 방지 방법을 설명하기 위한 플로우챠트이다.

Claims (13)

  1. 미리 마련된 적어도 하나의 뱅크;
    자신들에 대해 주어지는 억세스 명령들에 따라 각각은 하나의 상기 뱅크에 억세스 가능한 기입독출부들;
    상기 억세스 명령들 중 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 존재하는지 검사하는 뱅크충돌 예측부;
    상기 억세스 명령들 중 상기 뱅크충돌 예측부가 검사한 결과에 기초하여 동일한 상기 뱅크에의 억세스를 지시하는 것으로 결정된 억세스 명령들 중 하나인 제1 명령의 실행 시점을 상기 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 상기 제1 명령을 제2 명령으로 변경하는 스케쥴링부; 및
    상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크로부터 독출한 데이터를 상기 제1 명령의 실행 시점에 입력받도록 하는 스위칭부를 포함하는 뱅크 충돌 방지 장치.
  2. 제1 항에 있어서, 상기 스케쥴링부는
    상기 억세스 명령들을 나타내는 선취 테이블을 저장하는 테이블 저장부; 및
    상기 검사된 결과에 응답하여, 상기 저장된 선취 테이블상에 나타난 상기 제1 명령을 상기 제2 명령으로 변경하여 상기 저장된 선취 테이블을 갱신하는 테이블 갱신부를 포함하고,
    상기 뱅크충돌 예측부는 상기 억세스 명령들 중 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 존재하는지 상기 저장된 선취 테이블을 이용하여 검사하고, 상기 스위칭부는 상기 갱신된 선취 테이블을 고려하여 동작하는 뱅크 충돌 방지 장치.
  3. 제2 항에 있어서,
    상기 테이블 저장부는 상기 선취 테이블에 나타난 상기 기입독출부들 중 하나 및 하나의 상기 뱅크에 대한 상기 억세스 명령을, 상기 기입독출부들 중 하나 및 하나의 상기 뱅크에 대한 상기 억세스 명령 이외의 상기 억세스 명령들 중 적어도 일부를 고려하여 갱신한 결과인 매스크 테이블을 더 저장하고,
    상기 테이블 갱신부는 상기 검사된 결과에 응답하여, 상기 저장된 매스크 테이블상에 나타난 상기 제1 명령을 상기 제2 명령으로 변경하여 상기 저장된 매스크 테이블을 갱신하고,
    상기 스위칭부는 상기 갱신된 매스크 테이블에 대응되는 상기 갱신된 선취 테이블을 고려하여 동작하는 뱅크 충돌 방지 장치.
  4. 제1 항에 있어서, 상기 스위칭부는
    상기 기입독출부들 중 하나가 상기 제2 명령에 따라 하나의 상기 뱅크에 억세스하여 하나의 상기 뱅크로부터 독출한 데이터를 임시로 저장하는 버퍼; 및
    상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크에 억세스하여 하나의 상기 뱅크로부터 데이터를 독출하도록 하고, 상기 제1 명령의 실행 시점에 상기 저장된 데이터를 상기 버퍼로부터 독취하도록 하는 경로 개입부를 포함하는 뱅크 충돌 방지 장치.
  5. 제1 항에 있어서, 상기 제1 명령을 제외한 상기 억세스 명령들은 상기 기입독출부들 중 하나의 기입 작업을 지시하는 억세스 명령을 포함 가능하고, 상기 제1 명령은 상기 기입독출부들 중 하나의 독출 작업을 지시하는 뱅크 충돌 방지 장치.
  6. 제1 항에 있어서, 각각의 상기 뱅크는 단일 포트 뱅크인 뱅크 충돌 방지 장치.
  7. 자신들에 대해 주어지는 억세스 명령들에 따라 각각은 미리 마련된 적어도 하나의 뱅크 중 하나의 상기 뱅크에 억세스 가능한 기입독출부들을 위한 뱅크 충돌 방지 방법에 있어서,
    (a0) 상기 억세스 명령들 중 상기 적어도 일부의 기입독출부들의 동일한 상기 뱅크에의 억세스를 지시하는 억세스 명령들이 존재하는지 검사하는 단계;
    (a) 상기 억세스 명령들 중 상기 검사한 결과에 기초하여 동일한 상기 뱅크에의 억세스를 지시하는 것으로 결정된 억세스 명령들 중 하나인 제1 명령의 실행 시점을 상기 제1 명령의 실행 시점의 이전 시점으로 변경함으로써 상기 제1 명령을 제2 명령으로 변경하는 단계; 및
    (b) 상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크로부터 독출한 데이터를 상기 제1 명령의 실행 시점에 입력받도록 하는 단계를 포함하는 뱅크 충돌 방지 방법.
  8. 제7 항에 있어서, 상기 (a0) 단계는
    상기 억세스 명령들을 나타내는 선취 테이블을 이용하여 판단하고,
    상기 (a) 단계는
    (a1) 상기 선취 테이블상에 나타난 상기 제1 명령을 상기 제2 명령으로 변경하여 상기 선취 테이블을 갱신하는 단계를 포함하고,
    상기 (b) 단계는 상기 갱신된 선취 테이블을 고려하여 수행되는 뱅크 충돌 방지 방법.
  9. 제8 항에 있어서,
    상기 (a1) 단계는, 상기 선취 테이블에 나타난 상기 기입독출부들 중 하나 및 하나의 상기 뱅크에 대한 상기 억세스 명령을, 상기 기입독출부들 중 하나 및 하나의 상기 뱅크에 대한 상기 억세스 명령 이외의 상기 억세스 명령들 중 적어도 일부를 고려하여 갱신한 결과인 매스크 테이블상에 나타난 상기 제1 명령을 상기 제2 명령으로 변경하여 상기 매스크 테이블을 갱신하고,
    상기 (b) 단계는 상기 갱신된 매스크 테이블에 대응되는 상기 갱신된 선취 테이블을 고려하여 수행되는 뱅크 충돌 방지 방법.
  10. 제7 항에 있어서, 상기 (b) 단계는
    상기 기입독출부들 중 하나가, 상기 제2 명령에 따라 하나의 상기 뱅크에 억세스하여 하나의 상기 뱅크로부터 데이터를 독출하도록 하는 단계;
    상기 기입독출부들 중 하나가 상기 제2 명령에 따라 하나의 상기 뱅크에 억세스하여 하나의 상기 뱅크로부터 독출한 데이터를 미리 마련된 버퍼에 임시로 저장하는 단계; 및
    상기 기입독출부들 중 하나가, 상기 제1 명령의 실행 시점에 상기 저장된 데이터를 상기 버퍼로부터 독취하도록 하는 단계를 포함하는 뱅크 충돌 방지 방법.
  11. 제7 항에 있어서, 상기 제1 명령을 제외한 상기 억세스 명령들은 상기 기입독출부들 중 하나의 기입 작업을 지시하는 억세스 명령을 포함 가능하고, 상기 제1 명령은 상기 기입독출부들 중 하나의 독출 작업을 지시하는 뱅크 충돌 방지 방법.
  12. 제7 항에 있어서, 각각의 상기 뱅크는 단일 포트 뱅크인 뱅크 충돌 방지 방법.
  13. 제7 항 내지 제12 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 컴퓨터 프로그램을 저장한 컴퓨터로 읽을 수 있는 기록매체.
KR1020070098952A 2007-10-01 2007-10-01 뱅크 충돌 방지 장치 및 방법 KR101388134B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070098952A KR101388134B1 (ko) 2007-10-01 2007-10-01 뱅크 충돌 방지 장치 및 방법
US12/071,910 US8214617B2 (en) 2007-10-01 2008-02-27 Apparatus and method of avoiding bank conflict in single-port multi-bank memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070098952A KR101388134B1 (ko) 2007-10-01 2007-10-01 뱅크 충돌 방지 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20090033756A KR20090033756A (ko) 2009-04-06
KR101388134B1 true KR101388134B1 (ko) 2014-04-23

Family

ID=40509719

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070098952A KR101388134B1 (ko) 2007-10-01 2007-10-01 뱅크 충돌 방지 장치 및 방법

Country Status (2)

Country Link
US (1) US8214617B2 (ko)
KR (1) KR101388134B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101687762B1 (ko) * 2014-09-25 2017-01-03 충남대학교산학협력단 저장 장치 및 그것의 커맨드 스케줄링 방법
KR102106541B1 (ko) 2015-03-18 2020-05-04 삼성전자주식회사 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
US10042749B2 (en) * 2015-11-10 2018-08-07 International Business Machines Corporation Prefetch insensitive transactional memory
JP6734760B2 (ja) 2015-11-10 2020-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プリフェッチ・インセンシティブのトランザクション・メモリ
US10649900B2 (en) 2017-11-06 2020-05-12 Samsung Electronics Co., Ltd. Method to avoid cache access conflict between load and fill
US11216212B2 (en) 2019-03-19 2022-01-04 International Business Machines Corporation Minimizing conflicts in multiport banked memory arrays
WO2022198494A1 (en) * 2021-03-24 2022-09-29 Yangtze Memory Technologies Co., Ltd. Memory device with failed main bank repair using redundant bank

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007003370A2 (en) * 2005-06-30 2007-01-11 Interuniversitair Microelektronica Centrum Vzw A memory arrangement for multi-processor systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06314264A (ja) * 1993-05-06 1994-11-08 Nec Corp セルフ・ルーティング・クロスバー・スイッチ
JP3005456B2 (ja) 1995-06-16 2000-01-31 甲府日本電気株式会社 ベクトル処理装置
JPH10307787A (ja) 1997-05-09 1998-11-17 Nec Corp バッファメモリ装置
JP2878256B1 (ja) 1998-02-13 1999-04-05 甲府日本電気株式会社 ベクトル処理装置
US6144604A (en) 1999-11-12 2000-11-07 Haller; Haggai Haim Simultaneous addressing using single-port RAMs
JP3498673B2 (ja) 2000-04-05 2004-02-16 日本電気株式会社 記憶装置
JP4756730B2 (ja) 2000-09-07 2011-08-24 東芝テック株式会社 印台支持装置
US8560795B2 (en) * 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007003370A2 (en) * 2005-06-30 2007-01-11 Interuniversitair Microelektronica Centrum Vzw A memory arrangement for multi-processor systems

Also Published As

Publication number Publication date
US8214617B2 (en) 2012-07-03
KR20090033756A (ko) 2009-04-06
US20090089551A1 (en) 2009-04-02

Similar Documents

Publication Publication Date Title
KR101388134B1 (ko) 뱅크 충돌 방지 장치 및 방법
JP6143872B2 (ja) 装置、方法、およびシステム
US6889318B1 (en) Instruction fusion for digital signal processor
CN104756090B (zh) 提供扩展的缓存替换状态信息
JP2004157593A (ja) 多ポート統合キャッシュ
JPWO2007099604A1 (ja) コンピュータの分岐予測装置
GB2443298A (en) Cache memory with tag memory bypass circuit
JP2620511B2 (ja) データ・プロセッサ
US20110161631A1 (en) Arithmetic processing unit, information processing device, and control method
US20070233963A1 (en) Data processing system and method for processing data
EP1104559A1 (en) Data processor with an arithmetic logic unit and a stack
KR101100143B1 (ko) 캐시 메모리 제어 장치, 및 파이프 라인 제어 방법
US6704858B1 (en) Information processor and method for switching those register files
US6725355B1 (en) Arithmetic processing architecture having a portion of general-purpose registers directly coupled to a plurality of memory banks
CN115629806A (zh) 一种处理指令的方法、系统、设备和存储介质
US20050278514A1 (en) Condition bits for controlling branch processing
US20190018686A1 (en) Register mapping
US7290120B2 (en) Microprocessor having a power-saving fetch and decoding unit for fetching and decoding compressed program instructions and having a program instruction sequencer
US20080282051A1 (en) Methods and arrangements for controlling results of memory retrival requests
US20070043551A1 (en) Data processing
US20050114626A1 (en) Very long instruction word architecture
TW202340938A (zh) 用於處理排序受限制存取操作之技術
JPH0496132A (ja) 電子計算機
JPH05334267A (ja) 並列プロセッサ
GB2615352A (en) Technique for performing memory access operations

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

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190319

Year of fee payment: 6