KR100701800B1 - 공유 메모리를 갖는 향상된 아키텍처 - Google Patents

공유 메모리를 갖는 향상된 아키텍처 Download PDF

Info

Publication number
KR100701800B1
KR100701800B1 KR1020047014737A KR20047014737A KR100701800B1 KR 100701800 B1 KR100701800 B1 KR 100701800B1 KR 1020047014737 A KR1020047014737 A KR 1020047014737A KR 20047014737 A KR20047014737 A KR 20047014737A KR 100701800 B1 KR100701800 B1 KR 100701800B1
Authority
KR
South Korea
Prior art keywords
memory
processors
processor
delete delete
access
Prior art date
Application number
KR1020047014737A
Other languages
English (en)
Other versions
KR20040093167A (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
Priority claimed from US10/117,668 external-priority patent/US20030088744A1/en
Priority claimed from US10/133,941 external-priority patent/US7346746B2/en
Application filed by 인피니온 테크놀로지스 아게 filed Critical 인피니온 테크놀로지스 아게
Publication of KR20040093167A publication Critical patent/KR20040093167A/ko
Application granted granted Critical
Publication of KR100701800B1 publication Critical patent/KR100701800B1/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
    • 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
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

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

Abstract

현저한 성능 감소없이 싱글 메모리 모듈을 공유하는 다수의 프로세서를 갖는 시스템에 관한 것이다. 상기 메모리 모듈은 독립적으로 n 어드레서블 뱅크로 분할되는 바, 여기서 n= 최소한 2이고, 뱅크들간에 순환되는 순차적인 어드레스를 맵핑하게 된다. 이러한 맵핑은 순차적인 데이터 바이트를 교체 뱅크에 저장되게 한다. 각 뱅크는 다수의 블럭을 분할되어진다. 컴퓨터 프로그램을 실행하기 위하여 프로세서를 스태거링 또는 동기화시킴으로써, 각 프로세서는 동일한 사이클 동안 서로 다른 블럭을 액세스하고, 상기 프로세서는 동시에 메모리를 액세스할 수 있다. 부가적으로, 메모리 경합으로 인한 메모리 지연을 감소시키고자, 프로세서가 서로 다른 메모리 뱅크들로부터의 다수의 데이터 워드들을 메모리부터 인출시킬 수 있는 것을 가능하게 되도록 캐시가 제공되어진다.
공유 메모리를 갖는 향상된 아키텍처, 다수의 프로세서, 뱅크, 메모리 모듈액세스, 어드레스, 메모리 맵, 데이터 바이트, 데이터 워드, 캐시, 메모리 경합

Description

공유 메모리를 갖는 향상된 아키텍처{IMPROVED ARCHITECTURE WITH SHARED MEMORY}
본 발명은 집적회로(ICs)에 관한 것이다. 더욱 상세하게는, 본 발명은 공유메모리를 갖는 향상된 아키텍쳐에 관한 것이다.
도 1은 디지탈 신호 프로세서(DSP)와 같은 종래의 시스템-온-칩(SOC)(100)의 일부를 나타내는 블럭 다이어그램이다. 도시된 바와 같이, 상기 SOC는 버스(180)에 의하여 메모리 모듈(160)과 연결된 프로세서(110)를 포함한다. 상기 메모리 모듈은 명령열을 포함하는 컴퓨터 프로그램을 저장한다. 상기 SOC의 작동중, 상기 프로세서는 원하는 기능을 수행하기 위하여 메모리로부터 컴퓨터 명령을 검색 및 실행시킨다.
상기 SOC에는 프로그램을 실행시키는 멀티프로세서가 제공될 수 있다. 응용(application)에 따라, 상기 프로세서는 서로 다른 프로그램 또는 동일한 프로그램을 실행시킬 수 있다. 일반적으로, 각 프로세서는 성능 향상을 위해 자신이 보유한 메모리 모듈과 함께 연동되는 바, 그 이유는 메모리 모듈이 각 클럭 사이클 동안 하나의 프로세서에 의해서만 액세스될 수 있기 때문이다. 따라서, 프로세서는 연관된 자신의 메모리 모듈을 액세스할 것이기 때문에 프로세서는 자신이 보유한 메모리를 이용하여 메모리가 빌때까지(자유로워질때까지) 기다릴 필요가 없다. 그러나, 성능 향상은 칩 크기에 따라 달성되는 바, 이에 이중 메모리 모듈이 각 프로세서를 위해 필요하게 된다
이러한 설명을 근거로 하여, 프로세서가 종래의 디자인이 갖는 성능 불량의 발생없이 칩크기를 감소시킬 수 있도록 메모리 모듈을 공유시킬 수 있는 시스템을 제공하는 것이 바람직하다.
본 발명의 일실시예를 다수의 프로세서간의 메모리 모듈을 공유하는 방법에 관한 것이다. 상기 메모리 모듈은 n 뱅크로 분할되는 바, 여기서 n= 최소 2이다. 각 뱅크(bank)는 하나 이상의 프로세서에 의하여 한 번에 액세스된다. 상기 메모리 모듈은 메모리의 교대뱅크에 대하여 순차적인 어드레스를 할당할 수 있도록 매핑되는 바, 순차적인 데이터가 메모리 매핑으로 인하여 상기 교대뱅크에 저장된다. 일구현예로서, 상기 메모리 뱅크는 x 블럭으로 분할되는 바, 여기서 x= 최소1이며, 각 블럭은 다수의 프로세서중 하나에 의하여 한 번에 액세스될 수 있다. 다른 구현예로서, 상기 방법은 서로 다른 블럭을 액세스할 수 있도록 프로세서를 동기화시키는 단계를 포함한다. 또 다른 구현예로서, 제1 및 제2신호 경로가 메모리 모듈과 프로세서간에 제공된다. 상기 제1신호 경로는 프로세서와 메모리 모듈을 캐시(cache)와 연결시켜, 프로세서가 서로 다른 뱅크로부터 동시에 다수의 데이터 워드를 인출(fetch)할 수 있도록 한다. 이러한 점은 메모리 경합(contention)에 의한 메모리 지연 현상을 감소시킬 수 있다. 상기 제2신호 경로는 메모리 모듈을 프로세서에 직접적으로 연결시킨다.
도 1은 종래의 SOC 블럭 다이어그램을 나타내고;
도 2는 본 발명의 일실시예에 따른 시스템을 나타내며;
도 3-5는 본 발명에 따른 다른 실시예로서 FCU의 흐름도를 나타내며;
도 6은 본 발명의 또 다른 실시예에 따른 시스템을 나타내며;
도 7-8은 본 발명에 따른 또 다른 실시예로서 중재(arbitration)유니트의 흐름도를 나타내며;
도 9-10은 본 발명에 따른 또 다른 실시예로서 메모리 모듈을 나타낸다.
도 2는 본 발명의 일실시예과 관련된 시스템(200)의 일부를 나타내는 블럭 다이어드램이다. 상기 시스템은 단칩 형태로서 멀티-포트 디지탈 가입자 라인(DSL)용 프로세서(DSPs)를 포함한다. 상기 시스템은 m 프로세서(210)을 포함하는 바, 여기서 m은 정수로서 2보다 크거나 같다. 일례로서, 상기 시스템은 제1 및 제2프로세서(210a-b)(m=2)를 포함한다. 상기 시스템에 두 개 프로세서 이상이 제공 되는 것이 유용하다.
상기 프로세서는 각 메모리 버스(218a,218b)에 의하여 메모리 모듈(260)과 연결된다. 예를들어, 상기 메모리 버스는 16비트 크기(wide)이다. 다른 크기의 버스가 각 데이터 바이트의 폭에 따라 사용될 수 있다. 상기 프로세서에 의하여 액세스된 데이터 바이트는 메모리 모듈에 저장된다. 일구현예로서, 상기 데이터 바이트는 프로그램 명령을 포함하여, 상기 프로세서가 메모리 모듈로부터 실행을 위한 명령을 인출시킨다.
본 발명에 따른 일구현예에 의하면, 상기 메모리 모듈은 현저한 성능 저하없이, 각 프로세서를 위한 이중 메모리 모듈을 제공하는 필요성을 배제하면서 프로세서들간에 공유된다. 현저한 성능 저하는 독립적으로 작동 가능한 뱅크(265)의 갯수에 메모리 모듈이 분리됨으로써 회피되어지고, 여기서 n은 정수로서 2보다 크거나 같다. 바람직하게는, n= 상기 시스템에서의 프로세서 갯수이다(즉, n=m)이다. 상기 메모리 뱅크가 독립적으로 작동하므로, 프로세서는 동일한 클럭 사이클 동안 상기 메모리 모듈의 다른 뱅크들을 동시에 액세스할 수 있다.
다른 구현예로서, 메모리 뱅크는 독립적으로 액세스 가능한 블럭(275a-p)의 갯수 x로 구획되는 바, 여기서 x는 정수로서 1보다 크거나 같다. 일구현예로서, 각 뱅크는 독립적으로 액세스 가능한 8개의 블럭으로 세분화된다. 일반적으로, 블럭의 수가 크면 클수록 경합의 가능성은 점차 낮아진다. 일구현예로서, 상기 블럭의 갯수는 최적의 성능 유지 및 경합 감소를 위하여 선택된다.
일구현예로서, 각 프로세서(210a 또는 210b)는 각 뱅크와 연결된 버스(218a 또는 218b)를 갖는다. 상기 메모리 어레이의 블럭들은 각각 프로세서에 버스상의 데이터를 적절히 배치시키는 제어회로(278)을 갖는다. 상기 제어 회로는 프로세서에 데이터를 안내하는 삼상 버퍼(tri-state buffers) 또는 멀티프렉싱 회로를 포함한다. 각 뱅크는 예를들어, 8개의 블럭으로 구획된다. 뱅크내에 독립적인 블럭을 제공함으로써, 프로세서는 서로 다른 블럭을 액세스할 수 있는 장점을 갖게 되며, 이는 프로세서들간의 잠재적인 충돌을 감소시켜 시스템 성능을 향상시킬 수 있게 한다.
특히, 상기 메모리가 매핑됨에 따라, 연속적인 메모리 어드레스가 서로 다른 메모리 뱅크 간을 순환하게 된다. 예를들어, 두 개의 뱅크 메모리 모듈(즉, 뱅크 0 및 뱅크 1)에 있어서, 하나의 뱅크(뱅크 0)가 짝수 어드레스로 할당되는 동시에 홀수 어드레스는 나머지 뱅크(뱅크 1)에 할당된다. 이는 순차적 어드레스의 데이터 바이트가 뱅크 0에 데이터 바이트 1, 뱅크 1에 데이터 바이트 2, 뱅크 0에 데이터 바이트 3 등과 같이 교대 메모리에 저장됨을 초래한다. 일구현예로서, 상기 데이터 바이트는 프로그램내의 명령를 포함한다. 프로그램 명령은 점프(예를들어, 브랜치 및 루프 명령)의 예외를 가지며 순차적으로 실행되고, 프로세서는 프로그램 실행중에 각 사이클후 상기 메모리 모듈의 서로 다른 뱅크를 액세스하게 된다. 프로그램을 실행시키기 위하여 프로세서를 동기화(synchronizing) 또는 스태거링(staggering)시킴으로써, 프로세서는 동일한 사이클에서 서로 다른 메모리 뱅크들을 액세스하고, 멀티 프로세서들은 동시에 메모리 모듈(260)에 저장된 동일 프로그램을 실행시킨다.
흐름 제어 유니트(FCU)(245)는 메모리 충돌 또는 경합을 방지하기 위하여 서로 다른 메모리 블럭을 액세스하는 프로세서를 동기화시킨다. 메모리 경합의 경우(예를들어, 두 개의 프로세서가 동일한 블럭을 동시에 액세싱함), 상기 FCU는 하나의 프로세서(대기 상태 또는 사이클을 삽입함)를 잠그게 되고, 동시에 다른 프로세서가 메모리를 액세스하는 것을 허용한다. 이는 다음의 클럭 사이클에서 서로 다른 메모리 뱅크들을 액세스하는 프로세서를 동기화시킬 수 있게 한다. 한 번 동기화가 되면, 예를들어 점프 명령에 의한 메모리 경합이 발생될 때까지 양프로세서는 동일한 클럭 사이클동안 메모리 모듈을 액세스시킬 수 있다. 양프로세서(210a, 210b)가 동일한 사이클에서 블럭(275a)을 액세스하려는 시도가 있는 경우, 대기 상태가 일사이클(one cycle)을 위한 프로세서(210b)에 삽입되어, 프로세서(210a)가 우선적으로 블럭(275a)을 액세스시킨다. 다음의 클럭 사이클에 있어서, 프로세서(210a)가 블럭(275b)을 액세스시키고 프로세서(210b)가 블럭(275a)을 액세스시킨다. 이에 상기 프로세서(210a,210b)는 그 다음의 클럭 사이클에서 다른 메모리 뱅크를 액세스시킬 수 있도록 동기화되어진다.
선택적으로, 상기 프로세서들에는 각 임계 메모리 모듈(215)이 장착될 수 있다. 상기 임계 메모리 모듈은 메인 메모리 모듈(260)보다 작고, 프로세서들에 의하여 자주 액세스되는 프로그램 또는 서브루틴을 저장하는데 사용된다(예를들어, MIPS 임계). 상기 임계 메모리 모듈의 사용은 칩의 크기를 크게 증가시키는 것 없이 메모리 경합을 감소시킴으로써 시스템 성능을 향상시키게 된다. 제어회로(214)가 제공된다. 이 제어회로는 메모리 모듈(260) 또는 임게 메모리 모듈(215)로부터의 데이터를 멀티프렉스시킬 수 있도록 버스(217,218)와 연결된다. 일구현예로서, 상기 제어회로는 프로세서와 버스를 연결 또는 분리시킬 수 있는 삼상 버퍼를 포함한다.
일구현예로서, 상기 FCU는 상태 기계로서 실현된다. 도 3은 본 발명의 일실시에 따른 FCU 상태 기계를 나타내는 흐름도이다. 도시된 바와 같이, 상기 FCU 제어는 프로세서(예를들어, A 또는 B)에 의하여 액세스한다. 단계 310에서, 상기 FCU는 초기화된다. 동작중에, 상기 프로세서는 다음의 클럭 사이클에서 메모리 액세스와 일치하는 각 메모리 어드레스(AAdd 또는 BAdd)를 생성한다. 상기 FCU는 단계 320)에서 메모리 경합이 존재하거나 존재하지 않는 것을 결정할 수 있도록 상기 AAdd 및 BAdd를 비교하게 된다(예를들어, 프로세서가 동일한 것을 액세스하거나 서로 다른 메모리 블럭을 액세스하는 것). 일구현예로서, 상기 FCU는 임계 메모리 모듈이 액세스되는 지를 결정하고자 상기 어드레스를 확인하게 된다(미도시됨). 프로세서 A 또는 프로세서 B가 각 로컬 임계 메모리를 액세스하는 중이라면 경합이 발생하지 않게 된다.
경합이 없는 경우, 상기 프로세서들은 동일한 사이클에서 단계 340으로서 메모리 모듈을 액세스하게 된다. 경합이 있는 경우에는 상기 FCU는 단계 350으로서 프로세서에 의하여 우선적인 액세스를 결정하게 된다. 프로세서 A가 보다 우선권을 가지면, 상기 FCU는 프로세서 A에 메모리 액세스를 허용하고, 동시에 프로세서 B는 단계 360으로서 대기상태를 실행한다. 프로세서 B가 보다 우선권을 가지면, 프로세서 B가 메모리를 액세스하고 동시에 프로세서 A가 단계 370으로서 대기상태를 실행하게 된다. 상기 단계 340,360 또는 370의 진행 후, 상기 FCU는 프로세서에 의한 다음의 메모리 액세스를 위하여 어드레스들을 비교하기 위하여 단계 320으로 복귀하게 된다. 예를들어, 경합이 존재하면 단계 360에서와 같이, 대기상태가 프로세서 B를 위해 삽입되는 동시에 프로세서 A는 어드레스 Add에서 메모리를 액세스하게 된다. 이에, 상기 양프로세서는 다음의 사이클에서 서로 다른 메모리 블럭들을 액세스하기 위하여 동기화된다.
도 4는 본 발명에 따른 다른 구현예로서, FCU의 흐름도(401)를 나타낸다.
경합의 경우에 있어서, 상기 FCU는 점프가 실행되었는지 아닌지를 결정하고자 프로세서 A를 검사함으로써, 단계 460으로서 액세스 우선권을 할당하게 된다. 일구현예로서, 프로세서 B가 점프를 실행한 경우, 프로세서 B는 잠기게 되고(예를들어, 대기상태가 실행됨), 동시에 프로세서 A가 액세스 우선권을 갖게 된다. 반면에 프로세서 A가 잠기게 되면 프로세서 B가 액세스 우선권을 갖게 된다.
일구현예로서, 상기 FCU는 단계 440으로서 프로세서들이 동일한 메모리 블럭을 액세스하고 있는지를 결정하고자, 프로세서 A와 프로세서 B의 어드레스를 비교하게 된다. 상기 프로세서들이 서로 다른 메모리 블럭을 액세스하는 중(즉, 경합이 없는 경우)에 있으면, 상기 FCU는 단계 430으로서 양프로세서가 메모리를 동시에 액세스하는 것을 허용하게 된다. 경합이 존재하는 경우, 상기 FCU는 단계 460으로서 액세스 우선권을 결정하고자, 이전의 프로세서 A의 어드레스와 현재의 가장 작은 비트들을 비교하게 된다. 만일 상기 비트들이 동일하지 않은 경우(즉, 현재 및 이전의 어드레스가 연속됨), 프로세서 B는 점프를 실행하여 경합이 발생되게 한다. 상기와 같이, FCU가 단계 470을 진행하게 되면, 프로세서 B는 잠겨지고 동시에 프로세서 A가 메모리를 액세스하게 된다. 만일 상기 최소의 비트들이 동일하면, 프로세서 A는 잠겨지게 되고, 동시에 프로세서 B는 단계 480으로서 메모리를 액세스하게 된다.
도 5는 본 발명에 따른 다른 구현예로서 FCU(501)를 나타낸다.
동작 전에, 상기 FCU는 단계 510으로서 초기화된다. 단계 520에서, 상기 FCU는 프로세서들이 서로 다른 메모리 블럭을 액세스하는지를 결정하기 위하여 프로세서들의 어드레스를 비교하게 된다. 만일 상기 프로세서들이 서로 다른 메모리 블럭을 액세스하는 중이면, 양프로세서의 액세스가 단계 530에서 이루어지게 된다. 그러나, 상기 프로세서들이 동일한 메모리 블럭을 액세스하는 중이면, 경합이 존재하게 된다. 이러한 경합중에, 상기 FCU는 경합이 발생된 즉, 점프를 수행하는 프로세서를 검출하게 된다. 일구현에로서, 단계 550 및 555에서, 현재의 가장 작은 비트들과 프로세서의 이전 어드레스를 비교하게 된다. 만일 프로세서 A가 점프를 일으키면(예를들어, 이전의 가장 작은 비트들과 프로세서 A의 현재 어드레스가 동일하고, 동시에 이전의 가장 작은 비트들과 프로세서 B의 현재 어드레스가 동일하지 않음), 상기 FCU는 단계 570을 진행하게 된다. 단계 570에서, 상기 FCU는 프로세서를 잠기게 하고, 단계 570으로서 프로세서 B는 메모리를 액세스하게 된다. 만일 프로세서 B가 점프를 발생시키면, 상기 FCU는 프로세서 B를 잠기게 하고 동시에 프로세서 A가 단계 560으로서 메모리를 액세스하게 된다.
양프로세서에서 점프가 수행된 양프로세서에서 시츄에이션이 일어날 수 있다. 이러한 경우에 있어서, 상기 FCU는 단계 580을 진행하게 되고, 프로세서가 우선권을 갖는 것을 지시하는 정보를 포함하고 있는 우선권 레지스터를 검사하게 된다. 일구현예로서, 우선권 레지스터가 각 프로세서간에 우선권이 선택되도록 구동하게 된다. 도 5에 도시된 바와 같이, 상기 FCU는 프로세서가 우선권을 갖는 것을 결정하기 전에 단계 580에서 우선권 레지스터를 구동시키게 된다. 선택적으로, 우선권 레지스터는 우선권이 결정된 후 구동될 수 있다. 일구현에로서, 우선권 레지스터에서 a 1은 프로세서 A가 우선권을 갖는(단계 585) 것을 지시하고, a 0는 프로세서 B가 우선권을 갖는(단계 590) 것을 지시한다. 프로세서 B가 우선권을 갖는 것을 지시하는데 a 1이 사용되고 프로세서 A가 우선권을 갖는 것을 지시하는데 a 0가 사용되는 것으로도 유용될 수 있다. 동일한 프로세서가 점프가 수행되지 않은 프로세서에서 경합이 발생된 경우(예를들어, 현재의 가장 작은 비트들과 프로세서 A 또는 B의 이전 어드레스가 동일하지 않음)에 수행될 수 있다.
다른 구현예로서, 프로세서를 동기화시키기 위하여 FCU에 다른 형태의 중재안이 채택될 수 있다. 일구현예로서, 상기 프로세서들은 다른 프로세서 또는 다른 프로세서들에 관한 특정 우선권 수준으로 설정되어진다.
도 6은 본 발명에 따른 일시예로서, 시스템(600)의 일부를 나타내는 블럭 다이어그램이다. 상기 시스템은 단칩 형태로서 멀티-포트 디지탈 가입자 라인(DSL)용 프로세서(DSPs)를 포함한다. 상기 시스템은 m 프로세서(610)을 포함하는 바, 여기 서 m은 정수로서 2보다 크거나 같다. 일례로서, 상기 시스템은 제1 및 제2프로세서(610a-b)(m=2)를 포함한다. 상기 시스템에 두 개 프로세서 이상이 제공되는 것이 유용하다.
메모리 모듈(660)이 상기 프로세서들중에 공유를 위하여 제공된다. 상기 프로세서에 의하여 액세스된 데이터 워드는 상기 메모리 모듈에 저장된다. 데이터 워드는 비트의 그룹(예를들어, 32비트)을 포함한다. 일구현예로서, 상기 데이터 워드들은 실행을 위하여 메모리 버스(예를들어, 618a 및 618b)를 경유하여 메모리 모듈로부터 프로세서에 의하여 액세스되는 프로그램 명령을 포함한다. 상기 데이터 워드들은 또한 응용(어플리케이션)데이터를 포함한다.
본 발명에 따른 일구현예에 의하면, 상기 메모리 모듈은 현저한 성능 저하없이, 각 프로세서를 위한 이중 메모리 모듈을 제공하는 필요성을 배제하면서 프로세서들간에 공유된다. 현저한 성능 저하는 독립적으로 작동 가능한 뱅크(665a 및 665b)의 갯수에 메모리 모듈이 분리됨으로써 회피되어지고, 여기서 n은 정수로서 2보다 크거나 같다. 바람직하게는, n= 상기 시스템에서의 프로세서 갯수이다(즉, n=m)이다. 상기 메모리 뱅크가 독립적으로 작동하므로, 프로세서는 동일한 클럭 사이클 동안 상기 메모리 모듈의 다른 뱅크들을 동시에 액세스할 수 있다.
다른 구현예로서, 메모리 뱅크는 독립적으로 액세스 가능한 블럭(675a-p)의 갯수 x로 구획되는 바, 여기서 x는 정수로서 1보다 크거나 같다. 일구현예로서, 각 뱅크는 독립적으로 액세스 가능한 8개의 블럭으로 세분화된다. 일반적으로, 블럭의 수가 크면 클수록 경합의 가능성은 점차 낮아진다. 일구현예로서, 상기 블럭 의 갯수는 최적의 성능 유지 및 경합 감소를 위하여 선택된다.
상기 메모리 어레이의 블럭들은 각각 프로세서들(610a 또는 610b)에 메모리버스(618a 또는 618b)상의 데이터를 적절히 배치시키는 제어회로(668)을 갖는다. 상기 제어 회로는 프로세서에 데이터를 안내하는 삼상 버퍼(tri-state buffers) 또는 멀티프렉싱 회로를 포함한다. 각 뱅크는 예를들어, 8개의 블럭으로 구획된다. 뱅크내에 독립적인 블럭을 제공함으로써, 프로세서는 서로 다른 블럭을 액세스할 수 있는 장점을 갖게 되며, 이는 프로세서들간의 잠재적인 충돌을 감소시켜 시스템 성능을 향상시킬 수 있게 한다.
특히, 상기 메모리가 맵핑됨에 따라, 연속적인 메모리 어드레스가 서로 다른 메모리 뱅크 간을 순환하게 된다. 예를들어, 두 개의 뱅크 메모리 모듈(즉, 뱅크 0 및 뱅크 1)에 있어서, 하나의 뱅크(뱅크 0)가 짝수 어드레스로 할당되는 동시에 홀수 어드레스는 나머지 뱅크(뱅크 1)에 할당된다. 이는 순차적 어드레스의 데이터 워드가 뱅크 0에 데이터 워드 1, 뱅크 1에 데이터 워드 2, 뱅크 0에 데이터 워드 3 등과 같이 교대 메모리에 위치됨을 초래한다.
일구현예로서, 상기 데이터 워드는 프로그램내의 명령를 포함한다. 프로그램 명령은 점프(예를들어, 브랜치 및 루프 명령)의 예외를 가지며 순차적으로 실행되고, 프로세서는 프로그램 실행중에 각 사이클후 상기 메모리 모듈의 서로 다른 뱅크를 액세스하게 된다. 프로그램을 실행시키기 위하여 프로세서를 동기화(synchronizing) 또는 스태거링(staggering)시킴으로써, 프로세서는 동일한 사이클에서 서로 다른 메모리 뱅크들을 액세스하고, 멀티 프로세서들은 동시에 메모리 모듈(660)에 저장된 동일 프로그램을 실행시킨다.
데이터 버스에 의하여 프로세서와 연결되고, 메모리 버스에 의하여 메모리 모듈과 연결되는 중재 제어 유니트(ACU)(645)가 제공된다. 상기 ACU의 제어는 프로세서에 의하여 메모리를 액세스시킨다. 메모리 경합(예를들어, 두 개의 프로세서가 동일한 뱅크에 동시에 액세싱됨)과 함께, 상기 ACU는 프로세서가 메모리 모듈을 액세스하는 우선권을 갖는 것을 결정하고, 동시에 다른 프로세서가 잠기게 됨(예를들어, 대기상태 또는 대기 사이클을 실행함으로써)을 결정하게 된다. 이는 다음의 클럭 사이클에서 서로 다른 뱅크들을 액세스하기 위하여 프로세서들을 통기화시키게 된다.
일구현예로서, 우선권 레지스터가 프로세서가 우선권을 갖는 것을 지시하도록 제공된다. 두 개의 프로세서를 갖는 시스템의 경우, 우선권 레지스터는 1비트(P bit)를 포함한다. 여분의 비트들이 여분의 프로세서들에 수용될 수 있게 포함된다. 상기 우선권 레지스터는 프로세서간의 우선권이 순환되도록 경합의 발생 후에 업데이트된다. 예를들어, P비트에서의 값 '1'은 제1프로세서가 우선권을 갖는 것을 지시하고, 값 '0'은 제2프로세서가 우선권을 갖는 것을 지시한다. 경합이 발생하는 각 사이클 동안, 상기 P비트가 구동되며, 프로세서의 우선권이 스위칭된다. 다른 형태의 중재안도 사용 가능한다.
선택적으로, 상기 프로세서들에는 각 임계 메모리 모듈(615)이 장착될 수 있다. 상기 임계 메모리 모듈은 메인 메모리 모듈(660)보다 작고, 프로세서들에 의하여 자주 액세스되는 프로그램 또는 서브루틴을 저장하는데 사용된다(예를들어, MIPS 임계). 상기 임계 메모리 모듈의 사용은 칩의 크기를 크게 증가시키는 것 없이 메모리 경합을 감소시킴으로써 시스템 성능을 향상시키게 된다.
상기 ACU(645)는 n 프로세서들의 각각에 사용되는 n 제어 로직 유니트(CLUs)와 연결된다. 상기 ACU는 제1프로세서(610a)와 제2프로세서(610b)을 위한 제1CLU(648a) 및 제2CLU(648b)를 포함한다. CLU가 작동되면, CLU의 각 프로세서가 메모리 모듈을 액세스하는 것이 허용된다. 일구현예로서, 상기 CLU는 프로세서와 메모리 모듈의 n 뱅크들과 연결되어, 프로세서가 n 메모리 뱅크들을 동시에 액세스하는 것을 가능하게 한다. 상기 프로세서의 대역폭이 메모리 뱅크의 대역폭과 동일하므로, CLU는 프로세서가 필요로하는 것보다 많은 워드들을 메모리로부터 인출하는 것을 허용하게 된다. 일구현예로서, 상기 프로세서는 필요로 하는 데이터 워드의 두 배를 인출할 수 있다.
일구현예로서, 상기 CLU는 제1(캐시(cache)) 및 제2(노말(normal)) 신호 경로를 포함한다. 상기 캐시 신호경로는 예를들어 캐시 레지스터(633a 또는 633b) 및 멀티플렉서(636a 또는 636b)를 포함한다. 상기 캐시 경로가 선택되면, 상기 CLU와 연결된 프로세서가 상기 제1 및 제2 메모리 뱅크(665a-b)를 액세스한다. 일구현예로서, 프로세서에 의하여 특정된 바와 같이 상기 현재 어드레스 위치(Addr)와 다음의 어드레스(Addr+1)이 액세스된다. 상기 멀티플렉서가 (Addr+1)에서 워드를 선택하고 캐시에 저장하는 동시에 현재 어드레스(Addr)에서의 워드가 상기 프로세서에 통과된다. 상기 캐시에 저장된 워드의 어드레스가 예를들어 캐시 어드레스 레지스터(640a 또는 640b)에 저장된다. 만일 상기 제2경로(노말)가 선택되면, 상기 프로세서가 현재의 메모리 위치를 액세스하게 된다. 상기 CLU가 제2경로를 통하여 상기 프로세서에 현재 메모리 위치에서의 데이터 워드를 통과시킨다. 다음의 어드레스들에 데이터를 저장하기 위한 캐시를 제공함으로써, 메모리로부터 데이터를 액세스하는 가능성이 낮아지게 되고, 결국 메모리 경합에 의하여 발생된 메모리 지연을 감소시키게 된다.
상기 프로세서들에는 각 임계 메모리 모듈(615a,615b)이 장착될 수 있다. 상기 임계 메모리 모듈은 메인 메모리 모듈(660)보다 작고, 프로세서들에 의하여 자주 액세스되는 데이터(프로그램 또는 서브루틴)를 저장하는데 사용된다(예를들어, MIPS 임계). 상기 임계 메모리 모듈의 사용은 칩의 크기를 크게 증가시키는 것 없이 메모리 경합을 감소시킴으로써 시스템 성능을 향상시키게 된다.
도 7은 본 발명에 따른 일구현예로서, ACU 상태 기계의 흐름도를 나타낸다. 도시된 바와 같이, 상기 ACU제어는 제1 및 제2프로세서(A 또는 B)에 의하여 액세스한다. 시스템 동작(예를들어, 시스템 동력 업)전에 상기 ACU 시스템이 초기화된다. 초기화는 메모리 경합과 함께 프로세서가 우선권을 갖는 것을 지시하는 우선권 비트를 설정하는 단계를 포함한다. 상기 우선권 레지스터는 우선권이 프로세서 A에 주어지도록 설정된다.
상기 시스템의 동작중에, 상기 프로세서는 다음의 클럭 사이클에서의 메모리 액세스와 일치하는 각 메모리 어드레스(AAddr 및 BAddr이 프로세서 A와 프로세서 B에 의하여 유발된 현재의 메모리 어드레스를 나타냄)를 생성시킨다. 상기 ACU는 메모리 경합이 존재하는지를 예를들어, 프로세서가 동일한 메모리 범위를 액세스하는 중인지를 단계 720 및 722에서 검출하게 된다. 일구현예로서, 상기 메모리 범위는 메모리 블럭과 일치한다. 다른 구현예로서, 상기 메모리 범위는 서로 다른 뱅크에서의 메모리 블럭들과 일치하고, 이 메모리 블럭들은 연속적인 어드레스를 포함한다. 경합이 존재하지 않는 경우, 프로세서 A 및 B는 단계 750에서 메모리 모듈의 각 뱅크를 액세스한다. 일구현예로서, 상기 프로세서 A와 B의 CLUs는 정상적인 신호 경로들과 함께 작동하게 된다. 따라서, 각 프로세서는 어드레스 AAddr 및 BAddr에서의 각 메모리 뱅크로부터 데이터 워드를 얻어내게 된다.
만일 경합이 발생한 경우, 상기 ACU는 단계 726에서 프로세서가 액세스 우선권을 가짐을 결정하고자 우선권 레지스터를 평가하게 된다. 액세스 우선권(예를들어, 프로세서 A)를 갖는 프로세서 P는 메모리에 대한 액세스를 할 수 있게 되고 동시에 낮은 우선권을 갖는 다른 프로세서 P'는 단계 728에서 대기상태(예를들어, 프로세서 B)를 실행시킨다. 이에, 상기 프로세서가 다음의 사이클에서의 순차적인 위치 선정으로서 데이터 워드를 액세스하게 된다면, 서로 다른 뱅크들이 대기 상태의 실행없이 액세스되어질 것이다. 프로그램을 실행시키기 위하여 프로세서들을 동기화(synchronizing) 또는 스태거링(staggering)시킴으로써, 상기 프로세서들은동일한 사이클에서 서로 다른 메모리 뱅크들을 액세스하고, 멀티 프로세서들은 경합없이 메모리 모듈(660)에 저장된 동일 프로그램을 동시에 실행시키게 된다.
일구현예로서, 상기 프로세서 P의 CLU는 단계 730에서 선택된 캐시 신호 경로와 함께 작동하게 된다. 현재 어드레스 PAddr 및 다음에 이어지는 어드레스 PAddr+1로부터의 상기 데이터가 메모리 뱅크로부터 인출된다. 상기 현재 어드레스 PAddr 에서의 데이터는 액세스를 위하여 상기 프로세서 P까지 통과하게 되고, 다음에 이어지는 어드레스 PAddr+1에서의 데이터는 상기 캐시 레지스터에 저장된다. 상기 ACU는 단계 722에서 다음의 경합 평가를 위하여 단계 332에서 우선권을 업데이트시킨다.
상기 ACU는 단계 734로서, 다음의 사이클에서 프로세서 P에 의하여 특정된 새로운 어드레스 PAddr가 캐시 데이터(즉, 캐시 히트(cache hit))의 어드레스와 매칭되는지를 결정하게 된다. 만일 캐시 미스(miss)가 발생하게 되면, 상기 프로세서는 단계 720으로서, 경합을 위하여 프로세서 A 및 B에 의하여 특정된 어드레스를 평가하는 것을 반복실행하게 된다. 일구현예로서, 상기 프로세서 P와 관련된 캐시 레지스터에서의 데이터는 폐기된다.
캐시 히트는 단계 736으로서, 메모리 대신에 캐시로부터의 데이터를 복구하여 프로세서 P의 연속적인 실행이 가능하게 하고, 따라서, 대기-상태의 삽입을 회피할 수 있게 된다. 일구현예로서, 상기 프로세서 P'의 CLU는 단계 734에서 선택된 캐시 신호 경로와 함께 작동하게 된다. 현재 어드레스 P'Addr 및 다음에 이어지는 어드레스 P'Addr+1로부터의 상기 데이터가 메모리 뱅크로부터 인출된다. 상기 현재 어드레스 P'Addr 에서의 데이터는 액세스를 위하여 상기 프로세서 P'까지 통과하게 되고, 다음에 이어지는 어드레스 P'Addr+1에서의 데이터는 P'와 관련된 상기 캐시 레지스터에 저장된다. 다음 사이클에서 상기 프로세서 P'를 위한 캐시 히트가 있으면, 단계 740에서 캐시 데이터는 프로세서 P'에 의하여 액세스된다. 상기
상기 프로세서 P의 현재 어드레스 PAddr 에서의 데이터는 프로세서에 의하여 액세스되고, 다음에 이어지는 어드레스 PAddr+1에서의 데이터는 P와 관련된 상기 캐시 레지스터에 저장된다. 단지 하나의 프로세서가 메모리를 액세스하는 중에는 경합을 위한 체크가 필요없게 된다. 상기 프로세서 P를 위한 캐시 히트의 결정은 단계 734에서 반복되어진다. 만일 P'를 위한 캐시 히트가 단계 738에서 미스(miss)되면, 상기 ACU는 전체 공정을 반복하게 된다.
도 8은 다른 실시예를 나타내는 바, 상기 ACU가 각 프로세서를 위한 캐시 신호 경로를 포함하고, 캐시 신호 경로는 프로세서에 의하여 요구되는 것보다 많은 데이터 워드를 메모리로부터 인출하는 것을 가능하게 한다. 상기 캐시 신호 경로는 예를들어, 캐시 레지스터와 멀티플렉서를 포함한다. 상기 시스템 동작중에, 상기 프로세서 A 및 B에 의하여 유발된 어드레스들은 단계 820 및 822에서 경합을 위하여 평가되어진다. 만일 경합이 존재하면, 우선권을 평가하게 되는 동시에 대기상태가 도 7에서 설명된 바와 같이 보다 낮은 우선권을 갖는 프로세서에 대하여 삽입된다.
만일, 경합이 존재하지 않으면, 양프로세서와 관련된 캐시들은 단계 852에서 캐시 히트를 위하여 평가된다. 캐시 히트가 발견되지 않으면, 프로세서 A 및 B는 각 캐시 신호 경로를 통하여 단계 850에서 메모리 모듈의 각 뱅크들을 액세스한다. 일구현예로서, 상기 프로세서 A 및 B의 CLUs는 선택된 캐시 경로와 함께 작동하게 된다. 현재 메모리 어드레스(AAddr 및 BAddr)에서의 데이터는 액세스를 위하여 각 프로세서까지 통과하게 되고, 다음에 이어지는 어드레스(AAddr+1 및 BAddr+1)에서의 데이터는 각 캐시 레지스터들에 저장된다. 만일 캐시 히트가 양프로세서를 위하여 검출되면, 각 캐시 내용들은 단계 862에서 프로세서에 의하여 액세스되고, 이 단계는 단계 860에서 반복된다.
프로세서들중 단지 하나에서라도 캐시 히트가 검출되면, 메모리 액세스는 경합을 위한 테스트의 필요없이 다른 프로세서를 위하여 계속 진행되는 바, 그 이유는 단지 하나의 프로세서만이 메모리를 액세스하는 중이기 때문이다. 예를들어, 만일 캐시 히트가 프로세서 A를 위하여 검출되고, 캐시 미스가 프로게서 B를 위하여 검출되면, 프로세서 A와 관련된 캐시의 경합이 액세스되는 동시에 현재 메모리 어드레스 BAddr로부터의 데이터는 단계 854에서 프로세서 B에 의하여 액세스된다. 다음의 위치 BAddr+1에서 메모리로부터의 데이터가 프로세서 B와 관련된 캐시에 저장된다. 다음 사이클에서, 프로세서 B를 위한 캐시는 캐시 히트용으로 재차 감지된다. 만일 캐시 히트가 발생하게 되면, 프로세서 B를 위한 캐시 경합이 단계 856에서 복구된다. 어드레스 AAddr에서 메모리로부터의 데이터는 프로세서 A를 위하여 인출되어질 것이다. 단계 858에서의 캐시 미스는 이러한 단계를 단계 820으로부터 반복되게 할 것이다.
도 9-10은 본 발명에 따른 또 다른 실시예로서 메모리의 매핑을 나타낸다.
도 9를 참조로 하면, 8개의 블럭(블럭0-7)으로 분할된 두 개의 뱅크(뱅크 0 및 뱅크 1)를 갖는 메모리 모듈(260)을 도시하고 있다. 메모리 모듈이 16비트의 폭을 갖는 512Kb의 메모리를 갖는다면, 각 블럭은 2K의 어드레스 가능한 위치(2K x 16비트 x 16블럭)로 할당되어진다. 일구현예로서, 짝수 어드레스들은 뱅크 0에 할당되고(즉, 0, 2, 4 ... 32K-2), 홀수 어드레스들은 뱅크1(즉, 1, 3, 5 ... 32K-1)에 할당된다. 뱅크 0의 블럭 0는 어드레스 0, 2, 4 ... 4K-2를 가지고; 뱅크 1의 블럭 1은 어드레스 1, 3, 5 ... 4K-1을 갖는다.
도 10을 참조로 하면, 8개의 블럭(블럭0-7)으로 분할된 네 개의 뱅크(뱅크 0 -3)를 갖는 메모리 모듈(260)을 도시하고 있다.
메모리 모듈이 16비트의 폭을 갖는 512Kb의 메모리를 갖는다면, 각 블럭은 1K의 어드레스 가능한 위치(1K x 16비트 x 32블럭)로 할당되어진다. 이 경우에 있어서, 도 10에서 보는 바와 같이 메모리 모듈은 4개의 뱅크를 포함하고, 어드레스는 다음과 같이 할당된다:
뱅크 0 : 0으로부터 각 네번째 어드레스(즉, 0, 4, 8, 등.)
뱅크 1 : 1로부터 각 네번째 어드레스(즉, 1, 5, 9, 등.)
뱅크 2 : 2로부터 각 네번째 어드레스(즉, 2, 6, 10, 등.)
뱅크 3 : 3으로부터 각 네번째 어드레스(즉, 3, 7, 11, 등.)
메모리 매핑은 다음과 같이 n 뱅크용으로 법칙화시킬 수 있다.
뱅크 0 : 0으로 시작하는 각 nth 어드레스(즉, 0, n, 2n, 3n, 등)
뱅크 1 : 1로 시작하는 각 nth 어드레스(즉, 1, 1+n, 1+2n, 1+3n, 등)
.
.
.
뱅크 n-1 : n-1로 시작하는 각 nth 어드레스(즉, n-1, n-1+n, n-1+2n, 등)
본 발명은 여러가지 실시예로 설명되었는 바, 본 발명의 정신 및 범주를 벗어남없이 수정 및 변경이 가능함은 당업자에게 자명하다. 이에, 본 발명의 범주는 상술한 설명에 결정되지 않고, 동등한 범주를 갖는 청구범위에 의하여 결정된다.

Claims (63)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 다수의 프로세서간의 메모리 모듈을 공유하는 방법은:
    메모리 모듈을 n 뱅크로 분할하는 단계로서, 여기서 n=최소한 2이고, 각 뱅크는 한 번에 하나 이상의 프로세서에 의하여 액세스될 수 있도록 하는 단계;
    순차적인 어드레스를 메모리 교체(alternate) 뱅크에 할당하고자 상기 메모리 모듈을 매핑시키는 단계;
    메모리에 데이터 바이트를 저장하는 단계로서, 순차적인 어드레스로 상기 데이터 바이트들이 상기 메모리의 매핑에 의하여 교체 뱅크들에 저장되는 단계;
    서로 다른 블록들을 한 번에 액세스하기 위하여 프로세서들을 동기화시키는 단계; 및
    메모리 액세스 경합이 발생하는 경우 프로세서들의 액세스 우선권을 결정하는 단계로서, 메모리 경합이 발생된 프로세서에 낮은 액세스 우선권을 할당하는 단계로 이루어진 것을 특징으로 하는 다수의 프로세스간의 메모리 모듈을 공유하는 방법.
  36. 다수의 프로세서간의 메모리 모듈을 공유하는 방법은:
    메모리 모듈을 n 뱅크로 분할하는 단계로서, 여기서 n=최소한 2이고, 각 뱅크는 한 번에 하나 이상의 프로세서에 의하여 액세스될 수 있도록 하는 단계;
    순차적인 어드레스를 메모리 교체(alternate) 뱅크에 할당하고자 상기 메모리 모듈을 매핑시키는 단계;
    메모리에 데이터 바이트를 저장하는 단계로서, 순차적인 어드레스로 상기 데이터 바이트들이 상기 메모리의 매핑에 의하여 교체 뱅크들에 저장되는 단계;
    서로 다른 블록들을 한 번에 액세스하기 위하여 프로세서들을 동기화시키는 단계; 및
    메모리 액세스 경합이 발생하는 경우 프로세서들의 액세스 우선권을 결정하는 단계로서, 점프가 수행된 프로세서에 낮은 액세스 우선권을 할당하는 프로세스들의 액세스 우선권을 결정하는 단계로 이루어진 것을 특징으로 하는 다수의 프로세스간의 메모리 모듈을 공유하는 방법.
  37. 청구항 35 또는 청구항 36에 있어서, 상기 메모리 모듈을 n 뱅크로 분할하는 단계는 각 뱅크들을 x 블록으로 분할하는 단계를 더 포함하며, 여기서 x=최소한 1이고, 각 블록은 다수의 프로세서 중 하나에 의하여 한 번에 액세스될 수 있도록 한 것을 특징으로 하는 다수의 프로세스간의 메모리 모듈을 공유하는 방법.
  38. 청구항 35 또는 청구항 36에 있어서, 상기 프로세서를 동기화시키는 단계는 메모리 액세스 경합이 발생되었는지를 결정하는 단계를 더 포함하며, 여기서 두 개 이상의 프로세서가 동일한 블록을 한 번에 액세스하게 되는 것을 특징으로 하는 다수의 프로세스간의 메모리 모듈을 공유하는 방법.
  39. 시스템은:
    다수의 프로세서;
    n 뱅크를 포함하는 메모리 모듈로서, 여기서 n= 최소한 2이고, 각 뱅크는 한 번에 하나 이상의 프로세서에 의하여 액세스 될 수 있는 메모리 모듈;
    상기 메모리 모듈의 교체 뱅크에 순차적인 어드레스를 할당하기 위한 메모리 맵;
    메모리에 저장된 데이터 바이트로서, 여기서 순차적인 어드레스로 상기 데이터 바이트들이 상기 메모리 맵에 따른 교체 뱅크들에 저장되는 메모리에 저장된 데이터 바이트;및
    서로 다른 블록들을 한 번에 액세스할 수 있도록 프로세서들을 동기화시키며, 메모리 액세스 경합이 발생되는 경우 각 프로세스의 액세스 우선권을 결정하되 메모리 경합의 발생된 프로세서에 낮은 액세스 우선권을 할당하는 흐름 제어 유니트로 이루어진 것을 특징으로 하는 시스템.
  40. 시스템은:
    다수의 프로세서;
    n 뱅크를 포함하는 메모리 모듈로서, 여기서 n= 최소한 2이고, 각 뱅크는 한 번에 하나 이상의 프로세서에 의하여 액세스 될 수 있는 메모리 모듈;
    상기 메모리 모듈의 교체 뱅크에 순차적인 어드레스를 할당하기 위한 메모리 맵;
    메모리에 저장된 데이터 바이트로서, 여기서 순차적인 어드레스로 상기 데이터 바이트들이 상기 메모리 맵에 따른 교체 뱅크들에 저장되는 메모리에 저장된 데이터 바이트;및
    서로 다른 블록들을 한 번에 액세스할 수 있도록 프로세서들을 동기화시키며, 메모리 액세스 경합이 발생되는 경우 각 프로세스의 액세스 우선권을 결정하되 점프가 수행된 프로세서에 낮은 액세스 우선권을 할당하는 흐름 제어 유니트로 이루어진 것을 특징으로 하는 시스템.
  41. 청구항 40에 있어서, 각 뱅크는 x 블록을 포함하며, 여기서 x= 최소한 1이고, 각 블록이 다수의 프로세서 중 하나에 의하여 한 번에 액세스될 수 있도록 한 것을 특징으로 하는 시스템.
  42. 청구항 40 또는 청구항 41에 있어서, 각 프로세서의 액세스 우선권을 저장하기 위하여 우선권 레지스터를 더 포함하는 것을 특징으로 하는 시스템.
  43. 청구항 40 또는 청구항 41에 있어서, 상기 데이터 바이트는 프로그램 명령을 포함하는 것을 특징으로 하는 시스템.
  44. 청구항 40 또는 청구항 41에 있어서, 메모리 액세스 경합을 감소시키기 위하여 각 프로세서를 위한 다수의 데이터 바이트들을 저장할 수 있도록 한 다수의 임계 메모리 모듈을 더 포함하는 것을 특징으로 하는 시스템.
  45. 다수의 프로세서간의 메모리 모듈을 공유하는 방법은:
    메모리 모듈을 n 뱅크로 분할하는 단계로서, 여기서 n= 최소한 2이고, 메모리 모듈이 하나 이상의 프로세서에 의하여 동시에 액세스되는 것을 가능하게 하는 단계;
    순차적인 어드레스를 메모리의 교체(alternate) 뱅크에 할당하고자 상기 메모리 모듈을 매핑시키는 단계;
    메모리에 데이터 워드들을 저장하는 단계로서, 순차적인 어드레스로 상기 데이터 워드들이 상기 메모리의 매핑에 의하여 교체 뱅크들에 저장되는 단계;
    제1신호 경로를 제공하는 단계로서, 제1신호 경로가 캐시와 프로세서 및 해당 메모리 모듈을 연결하며, 상기 캐시로 인하여 프로세서가 서로 다른 뱅크로부터 다수의 데이터 워드들을 동시에 인출시킬 수 있도록 한 단계를 포함하여 이루어진 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  46. 청구항 45에 있어서, 상기 메모리 모듈을 n 뱅크로 분할하는 단계는 상기 뱅크를 x 블록으로 분할하는 단계를 더 포함하며, 여기서 x=최소한 1이고, 블록은 다수의 프로세서 중 하나에 의하여 한 번에 액세스될 수 있도록 한 것을 특징으로 하는 다수의 프로세서 간의 메모리 모듈을 공유하는 방법.
  47. 청구항 45 또는 청구항 46에 있어서, 상기 메모리에 데이터 워드들을 저장하는 단계는 경합이 발생되었는지를 결정하는 단계를 더 포함하며, 여기서 두 개 이상의 프로세서가 동일한 어드레스 범위를 한 번에 액세스하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  48. 청구항 47에 있어서, 상기 어드레스 범위는 적어도 하나의 블록과 일치하는 것을 특징을 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  49. 청구항 45 또는 청구항 46에 있어서, 경합이 발생되면, 서로 다른 뱅크들을 액세스하기 위하여 상기 프로세서를 동기화시키는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  50. 청구항 45 또는 청구항 46에 있어서, 상기 제1신호 경로를 제공하는 단계는 제2신호 경로를 제공하는 단계를 더 포함하며, 상기 제2신호 경로는 프로세서와 선택된 메모리 모듈을 연결하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  51. 청구항 50에 있어서, 경합이 발생되지 않으면, 상기 제2신호 경로를 작동시키는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  52. 청구항 45 또는 청구항 46에 있어서, 경합이 발생되면, 서로 다른 뱅크들을 액세스하기 위하여 프로세서를 동기화시키는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  53. 청구항 45 또는 청구항 46에 있어서, 경합이 발생되면, 상기 프로세서의 액세스 우선권을 결정하는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  54. 청구항 53에 있어서, 상기 액세스 우선권을 결정하는 단계는 경합이 발생되어진 프로세서에 낮은 액세스 우선권을 할당하는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  55. 청구항 49에 있어서, 상기 프로세서를 동기화시키는 단계는 경합이 발생되면 낮은 우선권을 갖는 프로세서에 대하여 대기 상태를 삽입시키는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  56. 청구항 45 또는 청구항 46에 있어서, 경합이 발생되면, 상기 제1신호경로를 작동시키는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로세서간의 메모리 모듈을 공유하는 방법.
  57. 시스템은:
    다수의 프로세서;
    n 뱅크를 포함하되 n=최소한 2이고, 뱅크는 한 번에 하나 이상의 프로세서에 의하여 액세스될 수 있는 메모리 모듈;
    상기 메모리 모듈의 교체 뱅크에 순차적으로 어드레스를 할당하기 위한 메모리 맵;
    순차적인 어드레스로 상기 메모리 맵에 따른 교체 뱅크에 저장되는 메모리에 저장된 데이터 워드;및
    서로 다른 뱅크로부터 다수의 데이터 워드들을 프로세서가 액세스하는 것을 가능하게 하며, 제1 및 제2신호 경로를 포함하고, 제1신호 경로는 캐시와 프로세서 및 메모리 모듈간을 연결하며, 제2 신호 경로는 프로세서와 메모리 모듈간을 연결하는 제어 로직 유니트를 포함하여 구성된 것을 특징으로 하는 시스템.
  58. 청구항 57에 있어서, 상기 제1 신호 경로는 캐시 레지스터와 멀티플렉서를 포함하는 것을 특징으로 하는 시스템.
  59. 청구항 57 또는 청구항 58에 있어서, 상기 뱅크는 x 블록을 포함하며, 여기서 x=최소한 1이고, 블록이 다수의 프로세서 중 하나에 의하여 한 번에 액세스될 수 있도록 한 것을 특징으로 하는 시스템.
  60. 청구항 57 또는 청구항 58에 있어서, 서로 다른 블록들을 한 번에 액세스할 수 있도록 프로세서들을 동기화시키는 흐름 제어 유니트를 더 포함하는 것을 특징으로 하는 시스템.
  61. 청구항 57 또는 청구항 58에 있어서, 프로세서의 액세스 우선권을 저장하기 위한 우선권 레지스터를 더 포함하는 것을 특징으로 하는 시스템.
  62. 청구항 57 또는 청구항 58에 있어서, 경합의 가능성을 감소시키기 위하여 상기 프로세서들을 위한 다수의 데이터 워드들을 저장할 수 있도록 한 다수의 임계 메모리 모듈을 더 포함하는 것을 특징으로 하는 시스템.
  63. 청구항 57 또는 청구항 58에 있어서, 상기 제어 로직 유니트가 제1 신호 경로를 포함하고, 상기 제1 신호 경로는 프로세서 및 메모리 모듈간을 연결하는 것을 특징으로 하는 시스템.
KR1020047014737A 2002-04-04 2003-04-04 공유 메모리를 갖는 향상된 아키텍처 KR100701800B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/117,668 2002-04-04
US10/117,668 US20030088744A1 (en) 2001-11-06 2002-04-04 Architecture with shared memory
US10/133,941 US7346746B2 (en) 2002-04-26 2002-04-26 High performance architecture with shared memory
US10/133,941 2002-04-26
PCT/EP2003/003547 WO2003085524A2 (en) 2002-04-04 2003-04-04 Improved architecture with shared memory

Publications (2)

Publication Number Publication Date
KR20040093167A KR20040093167A (ko) 2004-11-04
KR100701800B1 true KR100701800B1 (ko) 2007-04-02

Family

ID=28793881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047014737A KR100701800B1 (ko) 2002-04-04 2003-04-04 공유 메모리를 갖는 향상된 아키텍처

Country Status (6)

Country Link
US (1) US20060059319A1 (ko)
EP (2) EP1628216B1 (ko)
KR (1) KR100701800B1 (ko)
CN (1) CN1328660C (ko)
DE (1) DE60316197T2 (ko)
WO (1) WO2003085524A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465747B2 (en) 2014-06-03 2016-10-11 SK Hynix Inc. Controller for controlling non-volatile memory and semiconductor device including the same
KR101772921B1 (ko) 2016-11-25 2017-08-30 전남대학교 산학협력단 메모리 경합 인지를 통한 그래픽 처리 장치의 전력관리 기법 및 그 기법을 수행하는 전력관리 유닛, 그래픽 처리 장치

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174437B2 (en) * 2003-10-16 2007-02-06 Silicon Graphics, Inc. Memory access management in a shared memory multi-processor system
US7631132B1 (en) * 2004-12-27 2009-12-08 Unisys Corporation Method and apparatus for prioritized transaction queuing
KR100688537B1 (ko) 2005-03-16 2007-03-02 삼성전자주식회사 다수개의 프로세서들에 억세스 가능한 메모리 장치를 갖는시스템
KR100728650B1 (ko) * 2005-07-26 2007-06-14 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치
KR100658588B1 (ko) * 2005-11-16 2006-12-15 엠텍비젼 주식회사 메모리 공유 시스템 및 그 방법
KR100658591B1 (ko) * 2005-11-23 2006-12-15 엠텍비젼 주식회사 공유 메모리를 이용한 디스플레이 제어 방법 및 장치
CN101341473B (zh) 2005-12-20 2010-11-17 Nxp股份有限公司 具有共享存储体的多处理器电路
KR100740635B1 (ko) * 2005-12-26 2007-07-18 엠텍비젼 주식회사 휴대형 단말기 및 휴대형 단말기에서의 공유 메모리 제어방법
KR100700040B1 (ko) * 2006-03-08 2007-03-26 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 공유 메모리 억세스 상태정보 제공 방법
KR100748191B1 (ko) 2006-04-06 2007-08-09 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 공유 메모리 억세스 상태정보 제공 방법
KR100843580B1 (ko) * 2006-05-24 2008-07-04 엠텍비젼 주식회사 접근 권한 레지스터 로직을 갖는 다중 포트 메모리 장치 및그 제어 방법
KR100834373B1 (ko) * 2006-06-05 2008-06-02 엠텍비젼 주식회사 다중 포트 메모리 장치 및 그 접근 권한의 제어 방법
KR100855701B1 (ko) * 2007-01-26 2008-09-04 엠텍비젼 주식회사 복수의 프로세서 코어가 통합된 칩 및 데이터 처리 방법
KR101091844B1 (ko) * 2007-05-17 2011-12-12 삼성전자주식회사 고속으로 배드 블록을 검색하는 플래시 메모리 시스템 및그것의 배드 블록 관리 방법
US8239566B2 (en) * 2008-02-28 2012-08-07 Silicon Graphics International, Corp. Non-saturating fairness protocol and method for NACKing systems
CN101706788B (zh) 2009-11-25 2012-11-14 惠州Tcl移动通信有限公司 一种嵌入式文件系统的跨区访问方法
CN101867833A (zh) * 2010-06-12 2010-10-20 北京东方艾迪普科技发展有限公司 一种视频图像格式转换方法和装置
CN103201725B (zh) * 2010-11-25 2015-12-09 国际商业机器公司 用于在多个处理器之间共享的存储器的存储器访问设备
CN104794065B (zh) * 2015-05-04 2018-01-09 常州工学院 一种多分组定长数据循环存取方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3931613A (en) * 1974-09-25 1976-01-06 Data General Corporation Data processing system
US4918587A (en) * 1987-12-11 1990-04-17 Ncr Corporation Prefetch circuit for a computer memory subject to consecutive addressing
US5617575A (en) * 1991-03-19 1997-04-01 Hitachi, Ltd. Interprocessor priority control system for multivector processor
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US5809533A (en) * 1993-02-18 1998-09-15 Unisys Corporation Dual bus system with multiple processors having data coherency maintenance
US20030088744A1 (en) * 2001-11-06 2003-05-08 Infineon Technologies Aktiengesellschaft Architecture with shared memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465747B2 (en) 2014-06-03 2016-10-11 SK Hynix Inc. Controller for controlling non-volatile memory and semiconductor device including the same
KR101772921B1 (ko) 2016-11-25 2017-08-30 전남대학교 산학협력단 메모리 경합 인지를 통한 그래픽 처리 장치의 전력관리 기법 및 그 기법을 수행하는 전력관리 유닛, 그래픽 처리 장치

Also Published As

Publication number Publication date
DE60316197D1 (de) 2007-10-18
EP1628216B1 (en) 2007-09-05
KR20040093167A (ko) 2004-11-04
EP1490764A2 (en) 2004-12-29
CN1668999A (zh) 2005-09-14
EP1628216A2 (en) 2006-02-22
US20060059319A1 (en) 2006-03-16
EP1628216A3 (en) 2006-06-21
WO2003085524A2 (en) 2003-10-16
CN1328660C (zh) 2007-07-25
WO2003085524A3 (en) 2004-08-19
DE60316197T2 (de) 2008-04-10

Similar Documents

Publication Publication Date Title
KR100701800B1 (ko) 공유 메모리를 갖는 향상된 아키텍처
JP3821644B2 (ja) 旧キャッシュラインを無効化および除去する装置
US5590379A (en) Method and apparatus for cache memory access with separate fetch and store queues
US5875472A (en) Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US6192458B1 (en) High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US5778432A (en) Method and apparatus for performing different cache replacement algorithms for flush and non-flush operations in response to a cache flush control bit register
US20070094450A1 (en) Multi-level cache architecture having a selective victim cache
US6170070B1 (en) Test method of cache memory of multiprocessor system
US7321954B2 (en) Method for software controllable dynamically lockable cache line replacement system
US7447844B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced on a fixed schedule
US6157980A (en) Cache directory addressing scheme for variable cache sizes
EP0407119A2 (en) Apparatus and method for reading, writing and refreshing memory with direct virtual or physical access
KR19980063500A (ko) 완전 연관 다-방향 캐쉬 메모리에서의 최소 최근 사용 교체 메카니즘 및 무효화 주소 처리용 방법 및 회로
JP2000242558A (ja) キャッシュシステム及びその操作方法
US6571316B1 (en) Cache memory array for multiple address spaces
US20030023806A1 (en) Prioritized content addressable memory
US20100011165A1 (en) Cache management systems and methods
US6581140B1 (en) Method and apparatus for improving access time in set-associative cache systems
US5829051A (en) Apparatus and method for intelligent multiple-probe cache allocation
US20030088744A1 (en) Architecture with shared memory
US5860097A (en) Associative cache memory with improved hit time
JP2011150691A (ja) 演算処理装置、情報処理装置及び制御方法
US5938761A (en) Method and apparatus for branch target prediction
US20080016282A1 (en) Cache memory system
US6094710A (en) Method and system for increasing system memory bandwidth within a symmetric multiprocessor data-processing system

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140314

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150313

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160322

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee