KR100912437B1 - 집적회로장치 - Google Patents

집적회로장치 Download PDF

Info

Publication number
KR100912437B1
KR100912437B1 KR1020047000422A KR20047000422A KR100912437B1 KR 100912437 B1 KR100912437 B1 KR 100912437B1 KR 1020047000422 A KR1020047000422 A KR 1020047000422A KR 20047000422 A KR20047000422 A KR 20047000422A KR 100912437 B1 KR100912437 B1 KR 100912437B1
Authority
KR
South Korea
Prior art keywords
data
memory
output
processing
address
Prior art date
Application number
KR1020047000422A
Other languages
English (en)
Other versions
KR20040017291A (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 아이피플렉스 가부시키가이샤
Publication of KR20040017291A publication Critical patent/KR20040017291A/ko
Application granted granted Critical
Publication of KR100912437B1 publication Critical patent/KR100912437B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Logic Circuits (AREA)

Abstract

본 발명은 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와, 데이터 흐름 중 적어도 일부를 변경할 수 있는 처리유닛을 갖는 집적회로장치에서, 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 데이터 처리구획, 제 1 메모리와 데이터 처리구획간에 입력 및/또는 출력되는 데이터의 제 1 어드레스를 출력하는 제 1 어드레스 출력구획과, 제 2 메모리와 제 1 메모리간에 입력 및/또는 출력되는 데이터의 제 2 어드레스를 출력하는 제 2 어드레스 출력구획을 상기 처리유닛에 설치한다. 데이터 흐름을 변경하거나 재구성 가능한 처리유닛의 일부에 의해 메모리를 제어하는 회로를 구성함으로써, 집적회로장치에서 실행하는 처리에 가장 적합한 캐시메모리 시스템을 집적회로장치에 구성할 수 있다.

Description

집적회로장치{INTEGRATED CIRCUIT DEVICE}
본 발명은 데이터 흐름을 재구성할 수 있는 집적회로장치에 관한 것이다.
RAM, ROM 또는 자기디스크 등의 메모리에 저장된 데이터 또는 명령(이후에는 특별히 명령과 데이터를 구별할 필요가 없을 때는 데이터라고 함)을 CPU 등에서 처리하는 경우, 캐시 또는 캐시메모리라 불리는 비교적 소용량이지만 고속인 메모리를 이용하여, 데이터의 시간적 국소성 또는 공간적 국소성을 이용해 데이터에 대한 액세스 속도를 향상시키도록 하고 있다. 따라서, 프로세서 또는 프로세서 코어를 탑재한 VLSI, 시스템 LSI 또는 시스템 ASIC 등과 같은 집적회로장치에서는 캐시메모리와 그것을 제어하는 MMU 등의 회로를 구비한 캐시시스템이 탑재되어 있다.
캐시메모리를 이용할 경우에는 MMU(Memory Management Unit) 및 TLB(Translation Look-aside Buffer)를 이용하여, CPU 코어로부터 출력되는 가상 또는 논리 어드레스에 대응한 데이터가 캐시메모리에 있으면, CPU 코어에 대해서는 캐시메모리의 데이터가 입출력된다. 캐시메모리에 데이터가 없을 경우에는 MMU 및 TLB에 의해 가상 어드레스가 논리 어드레스로 변환되어 외부의 메모리에 대하여 입출력이 발생하고 캐시메모리의 데이터도 갱신된다. 따라서, MMU 등을 구비한 캐시 제어 기구에 의해, CPU 코어에서 동작하는 소프트웨어에 대해 캐시메모리는 투과적 인 존재가 되도록 구성되어 있다. 이 때문에, 소프트웨어는 하드웨어에 의존하지 않는 가상 어드레스에 기초하여 동작하도록 개발하면 되므로, 개발 및 설계에 걸리는 시간 및 비용을 저감할 수 있다. 또한, 동일한 소프트웨어를 다른 하드웨어에서도 가동시킬 수 있어, 소프트웨어 자산을 유효하게 이용할 수 있다.
CPU 코어로부터 출력된 가상 어드레스의 데이터가 캐시메모리에 존재하지 않는, 즉 캐시메모리와 일치하지 않을 때는 외부 메모리에 대하여 입출력처리가 발생한다. 따라서, 캐시메모리의 적중률이 낮을 경우, 캐시메모리는 단순히 오버헤드가 될 뿐이고 프로그램의 실행시간에 악영향을 미친다. 이 때문에 적중률을 개선하기 위해서 명령캐시와 데이터캐시를 분리하거나 캐시를 다계층화하거나 기계적 또는 소프트웨어적으로 프리페치(prefetch)하는 등의 기술이 검토되고 있다.
그러나, 명령캐시와 데이터캐시를 분리하는 경우에는 하나의 블록에 명령과 데이터가 동시에 존재하면 그 취급이 어려워진다. 예를 들어, 명령을 재기입하는 처리가 있으면 소프트웨어의 처리에 지장을 초래할 가능성이 있다. 또, 명령과 데이터에 대한 액세스가 균등하지 않은 소프트웨어에서는 단순히 캐시를 분리해도 효율은 향상되지 않는다. 예를 들어, 데이터에 대한 액세스가 이산(離散)적이면 데이터캐시의 이용효율이 저하되어 오버헤드가 될 가능성도 있다.
다계층 캐시는 캐시와 외부 메모리의 액세스 시간이나 기억용량의 차이가 클 경우에는 유효하다. 그러나, 다계층화함으로써 메모리에 액세스하는 회수는 필연적으로 증가하므로, 소프트웨어의 구성이나 처리하는 데이터의 입출력 미디어 등의 조건에 따라서는 오버헤드가 될 가능성이 항상 존재한다.
프리페치한 경우에도 분기 등일 때의 페널티를 해소할 수는 없다. 수치계산 프로그램에서 배열요소의 참조가 많고, 액세스하는 요소를 미리 예상할 수 있는 소프트웨어이면, 프리페치 명령을 이용하여 캐시의 페널티는 감소할 수 있지만, 프리페치 명령을 실행하기 위해서 CPU의 시간을 소비하게 되어 효율적으로 이용할 수 있는 소프트웨어는 한정된다.
상술한 바와 같이, 어떠한 기술도 CPU에서 실행하는 소프트웨어와, 데이터가 저장되어 있는 미디어 등의 조건이 캐시메모리의 방식과 합치할 경우에는 캐시메모리의 적중률을 향상시킬 수는 있다. 그러나, 캐시메모리는 외부 메모리와의 사이에 중간적으로 배치되는 하드웨어이므로, 실행되는 소프트웨어의 처리내용이나 그 소프트웨어의 처리대상이 되는 데이터가 저장된 하드웨어의 환경 등이 다르면, 예정되어 있는 캐시 효율을 얻을 수 없거나, 반대로 오버헤드가 되어, 프로세서의 실행시간을 저하시키는 요인이 된다. 특정 애플리케이션으로 특화된 프로세서라면 최적의 캐시메모리 시스템을 채용할 수 있을지도 모른다. 그러나, 어느 정도의 범용성을 지향한 프로세서라면, 캐시메모리를 활용하기 위해서는 그만큼 효과적이지는 않더라도, 오버헤드가 되는 경우가 적은 캐시메모리 시스템을 도입하게 된다. 따라서, 캐시메모리 시스템이 있어도 그다지 성능이 향상되지 않게 된다.
따라서, 본 발명에서는 프로세서에서 실행되는 소프트웨어의 처리내용이나 하드웨어 환경에 대응하여, 캐시로서 가장 효율적으로 이용할 수 있는 메모리를 갖는 집적회로장치를 제공하는 것을 목적으로 한다. 또한, 메모리를 캐시로서 가장 효율적으로 이용할 수 있는 제어기능을 구비한 집적회로장치를 제공하는 것을 목적 으로 한다. 그리고, 다양한 소프트웨어를 더욱 효율적으로 실행할 수 있는 집적회로장치를 제공하는 것을 목적으로 한다.
최근, 데이터 경로의 구성 또는 데이터 흐름의 적어도 일부를 변경할 수 있는 처리유닛이 등장하고 있다. FPGA(Field Programmable Gate Array)는 단일 구성으로 논리를 변경할 수 있는 논리 엘리먼트 또는 논리 블록을 어레이형상으로 배열하고 그 사이의 결선을 자유롭게 변경하여, 데이터 경로의 구조를 변경할 수 있는 집적회로장치이다. 또한, 명령 세트에 의해 각종 처리를 수행하는 중간 규모이며 단일 구성인 기본 기능 유닛을 이용하여 데이터 경로의 구조를 변경할 수 있도록 한 집적회로장치도 검토되고 있다. 또, 본원의 출원인은 각각 다른 특정한 처리에 적합한 내부 데이터 경로를 구비한 복수 종류의 전용 처리 요소와, 이러한 전용 처리 요소를 접속하는 배선군을 구비한 처리유닛을 개발하고 있다. 따라서, 이러한 데이터 흐름을 변경 또는 재구성할 수 있는 처리유닛의 일부에 의해 캐시메모리를 제어하는 회로를 구성한다.
즉, 본 발명의 집적회로장치는 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와, 적어도 하나의 데이터 흐름이 형성되어 그 데이터 흐름의 적어도 일부를 변경할 수 있는 처리유닛을 가지며, 상기 처리유닛은 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 데이터 처리구획과, 제 1 메모리와 데이터 처리구획과의 사이에서 입력 및/또는 출력되는 데이터의 제 1 어드레스를 출력하는 제 1 어드레스 출력구획과, 제 2 메모리와 제 1 메 모리와의 사이에서 입력 및/또는 출력되는 데이터의 제 2 어드레스를 출력하는 제 2 어드레스 출력구획을 구비하고 있다. 데이터 흐름을 변경할 수 있는 처리유닛의 일부에 의해 제 1 및 제 2 어드레스 출력구획을 구성함으로써, 데이터 처리구획의 하드웨어 구성 또는 데이터 처리구획에서 실행하는 소프트웨어에 의해, 제 1 어드레스 출력구획 또는 제 2 어드레스 출력구획의 데이터 흐름을 변경하거나, 각각의 구획의 출력을 제어할 수 있게 된다. 따라서, 본 집적회로장치에서 실행하는 처리에 가장 적합한 캐시메모리 시스템을 상기 집적회로장치에 구성할 수 있다. 또는 집적회로장치에서 실행하는 처리에 가장 적합한 캐시메모리를 제어하도록, 캐시메모리의 제어회로를 집적회로장치에 구성할 수 있다.
본 발명의 집적회로장치에서는 캐시메모리가 되는 제 1 메모리를, 제 2 메모리에 대한 제 2 어드레스, 즉 데이터의 제 2 메모리의 물리 어드레스 또는 물리 어드레스로 변환할 수 있는 논리 어드레스 또는 가상 어드레스에 의해 수동적으로 제어할 수 있다. 이러한 제어에 의해, 제 2 메모리 및/또는 데이터 처리구획에 대해서 제 1 메모리가 투과적으로 존재하도록 구성할 수도 있다. 더욱이, 데이터 처리구획 및/또는 제 1 어드레스 출력구획으로부터의 데이터 또는 신호에 따라, 데이터 처리구획 및 제 1 어드레스 출력구획 모두로부터 독립하여, 제 2 어드레스 출력구획이 능동적으로 데이터의 입출력을 제어할 수가 있다. 또, 데이터 처리구획 및 제 1 어드레스 출력구획과 병렬로, 제 1 및 제 2 메모리 사이에서의 데이터의 입출력 동작을 제어하는 것도 가능하다. 따라서, 제 2 어드레스 출력구획에 의해, 데이터 처리구획 및 제 1 어드레스 출력구획의 데이터의 액세스 위치를 결정하도록 구성할 수도 있고, 종래의 CPU에 대해 투과적인 캐시가 아닌, 반대로 처리유닛에서의 처리를 제어하는 캐시를 구성할 수 있게 된다.
즉, 종래의 캐시 아키텍처는 CPU 코어 또는 DSP 코어 등의 획일적인 하드웨어구성의 처리기구에서 동작하는 소프트웨어에 대하여, 평균적으로 실행속도를 향상시킬 수 있도록, 일관적이고 투과적인 인터페이스를 제공하도록 구성되어 있다. 이에 대하여, 본 발명의 집적회로장치에서는 FPGA 등의 데이터 경로의 구성 그 자체를 변경할 수 있는 아키텍처에 의해 코어가 되는 데이터 처리구획이 제공되므로, 더불어, 캐시의 구성도 데이터 처리구획의 구성 및 거기서 실행되는 소프트웨어에 최적인 구성으로 동적으로 변경할 수 있게 한 것이다. 따라서, 일관적이고 투과적일 필요가 없고, 코어 또는 실행부인 데이터 처리구획에 대하여, 종래의 캐시와 완전히 다른 인터페이스 또는 서비스를 제공할 수 있게 된다.
이로 인해, 본 발명의 집적회로장치에서는 처리유닛에 의해 실행되는 소프트웨어의 처리내용이나 하드웨어 환경에 따라서, 제 1 메모리를 캐시로서 가장 효율적으로 이용할 수 있다. 그리고, 여러 가지의 소프트웨어를 실행할 때에 높은 적중률을 얻을 수 있도록 캐시시스템을 구성할 수 있고, 캐시메모리의 입출력이 소프트웨어를 실행할 때의 오버헤드가 되지 않는 집적회로장치를 제공할 수 있다.
예를 들면, 데이터 처리구획에 의해 실행되는 데이터의 제 2 메모리에서의 어드레스가 판명되어 있는 경우에는 제 1 메모리의 데이터 잔존량 등에 따라 제 2 어드레스 출력구획이 독립적으로 데이터를 프리페치할 수 있다. 따라서, 데이터 처리구획의 처리시간을 소비하지 않고 캐시가 되는 제 2 메모리에 데이터를 하드웨어적으로, 또는 제 2 어드레스 출력구획을 제어하는 소프트웨어에 의해 프리페치할 수 있다. 예컨대, 제 1 어드레스 출력구획으로부터는 제 1 어드레스로서 제 1 메모리의 어드레스, 즉 제 1 메모리의 물리 어드레스, 또는 물리 어드레스로 변경 가능한 가상 또는 논리 어드레스를 출력하고, 제 2 어드레스 출력구획으로부터는 제 2 어드레스로서 제 2 메모리의 어드레스, 즉 제 1 메모리의 물리 어드레스, 또는 물리 어드레스로 변경 가능한 가상 또는 논리 어드레스를 출력한다. 또, 데이터 처리구획에서는 캐시메모리가 되는 제 1 메모리의 어드레스에서 처리가 진행되도록 하드웨어 또는 소프트웨어를 구성할 수 있다.
또, 제 2 어드레스 출력구획을 데이터 처리구획 및/또는 제 1 어드레스 출력구획과는 비동기로, 즉 독립적으로 동작할 수 있도록 하는 것이 바람직하고, 이로써, 데이터 처리구획과는 독립적으로 병렬처리에 의해 프리페치할 수 있다. 제 2 메모리에 대한 입력과 출력을 병렬로 독립적으로 처리할 수 있도록, 제 1 메모리는 비동기로, 즉 독립적으로 입출력이 가능한 복수의 저장구획, 가령 복수의 메모리 뱅크를 구비하고 있는 것이 바람직하다.
또한, 제 2 어드레스 출력구획이 독자적으로, 또는 데이터 처리구획과의 조합에 의해, 제 1 메모리의 데이터에 기초하여 제 2 어드레스를 출력하도록 구성할 수도 있으며, 간접 어드레싱에 의한 데이터 처리를 아무런 제한 없이 실행할 수 있다.
캐시로서 동작하는 제 1 메모리는 데이터 처리구획에 입력되는 데이터를 저장하는 제 1 입력 메모리와, 데이터 처리구획으로부터 출력된 데이터를 저장하는 제 1 출력 메모리를 구비하고 있는 것이 바람직하다. 이것에 의해, 데이터 처리구획에 형성되는 데이터 흐름에 대한 데이터의 입력과 출력을 독립적으로 제어할 수 있다. 제 1 어드레스 출력구획으로부터는 제 1 메모리의 어드레스가 출력되지만, 제 1 메모리에 제 1 어드레스에 대응하는 데이터가 없거나, 제 1 어드레스에 대응하는 데이터를 저장할 공간이 없으면, 데이터 처리구획에 형성되는 데이터 흐름 처리에 장해가 된다. 따라서, 제 1 메모리와 데이터 처리구획간의 입력 및/또는 출력을 관리하는 제 1 조정유닛을 설치하는 것이 바람직하다.
제 1 어드레스에 대응하는 데이터가 없거나, 또는 제 1 어드레스에 대응하는 데이터를 저장하는 스페이스가 없는 등 데이터 처리구획간의 입력 또는 출력 조건을 만족하지 않을 경우에는, 정지신호를 데이터 처리구획으로 출력하는 기능을 제 1 조정유닛에 부여할 수 있다. 그리고, 데이터 처리구획에는, 정지신호에 따라 상기 데이터 처리구획에 형성된 적어도 하나의 데이터 경로 또는 데이터 흐름의 처리를 정지시키는 기능을 부여함으로써, 제 1 조정유닛에 의해 데이터 경로 또는 데이터 흐름의 온 ·오프를 제어할 수 있다. 따라서, 데이터 처리구획에 형성된 데이터 경로 또는 데이터 흐름을, 처리대상이 되는 데이터가 갖추어질 때가지 기다렸다가 가동시키는 제어를 용이하게 실현할 수 있다.
제 1 메모리가 제 1 입력 메모리와 제 1 출력 메모리를 구비하고 있다면, 제 1 조정유닛으로서, 제 1 입력 메모리로부터 데이터 처리구획으로의 데이터의 전송을 관리하는 제 1 입력 조정유닛과, 데이터 처리구획으로부터 제 1 출력 메모리로의 데이터의 전송을 관리하는 제 1 출력 조정유닛을 설치하는 것이 바람직하다. 이것에 의해, 데이터 처리구획에 형성되는 데이터 흐름을 입력측과 출력측으로부터 독립하여 제어할 수 있다.
또, 제 1 메모리가 독립적으로 입출력이 가능한 복수의 저장구획을 구비하고 있을 경우에는, 제 1 조정유닛에 복수의 저장구획 각각을 독립적으로 관리하는 기능을 부여할 수 있다. 데이터 처리구획에 형성되는 복수의 데이터 흐름 각각을, 대응하는 저장구획의 상태에 따라 제 1 조정유닛에 의해 독립적으로 제어할 수 있다. 한편, 제 1 조정유닛에 복수의 저장구획을 관련지어 관리하는 기능을 부여하는 것도 가능하다. 이로써, 데이터 처리구획에 형성된 데이터 흐름이 소정의 저장구획에 대하여 외부 메모리로부터 입력된 데이터를 우선하여 처리하거나, 데이터 흐름으로부터의 출력을 소정의 저장구획을 통해 외부 메모리에 우선적으로 출력하는 제어를 용이하게 실현할 수 있다.
또, 데이터 처리구획에 복수의 데이터 흐름을 구성할 수 있을 때에는 복수의 제 1 메모리를 설치하고, 처리유닛에는 각각의 제 1 메모리에 대응하는 제 1 및 제 2 어드레스 출력구획이 형성되도록 하는 것이 바람직하다. 이것에 의해, 데이터 처리구획 및 제 1 어드레스 출력구획을 적절히 구성함으로써, 다계층 캐시를 구성할 수도 있게 된다. 또, 집적회로장치에서 실행되는 프로그램에 따라서는 복수의 제 1 메모리를 명령캐시와 데이터캐시로 구분해서 사용하거나, 나아가 복수의 데이터 처리구획을 설치하였을 때 이들 처리구획에 의해 처리되는 데이터를 캐시하기 위하여 복수의 제 1 메모리를 구분해서 사용하고, 제 2 어드레스 출력구획에 의해 각각의 제 1 메모리로 캐시되는 데이터를 적절히 제어할 수 있게 된다.
복수의 제 2 어드레스 출력구획을 설치할 경우에는, 제 2 메모리와 복수의 제 1 메모리간의 입출력을 관리하는 제 2 조정유닛을 준비하여, 제 2 어드레스가 제 2 조정유닛에 공급되도록 하는 것이 바람직하다. 이것에 의해, 제 2 메모리가 외부 메모리일 때, 상기 외부 메모리에 대하여 종래와 마찬가지로 본 발명의 집적회로장치는 액세스할 수 있다. 또, 제 2 메모리가 동일 칩 내에 형성된 집적회로장치에서는, 제 2 메모리가 제 3 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있도록 하고, 제 3 메모리와 제 2 메모리와의 사이에서 입력 및/또는 출력되는 데이터의 제 3 어드레스를 출력하는 제 3 어드레스 출력수단도 설치하여 캐시메모리를 다계층화할 수가 있다. 즉, 제 3 메모리가 외부 메모리이면, 제 1 및 제 2 메모리에 의해 캐시메모리가 구성된다. 상기 제 3 어드레스 출력수단은 MMU 등 종래의 캐시 제어 기구여도 무방하며, 제 2 어드레스 출력구획과 동일하게 구성할 수도 있다. 제 4 또는 그 이상의 계층 메모리(ROM, RAM에 한정하지 않고, 디스크 등의 여러 가지 타입의 기록매체를 포함함)를 대상으로 하여 제어할 경우에도 마찬가지이다.
데이터 흐름을 변경 또는 재구성할 수 있는 처리유닛은, 기능을 변경할 수 있는 복수의 단일 종류인 논리요소와, 이들 논리요소를 접속하는 배선군을 구비하고 있는 것, 즉 상술한 바와 같은 FPGA나, 중간 규모이며 단일 구성인 기본 기능 유닛을 이용하여 데이터 경로 구조 또는 데이터 흐름을 변경할 수 있도록 한 것이어도 무방하다. 각각 다른 특정한 처리에 적합한 내부 데이터 경로를 구비한 복수 종류의 전용 처리 요소와, 이들 전용 처리 요소를 접속하는 배선군을 구비하고 있는 처리유닛을 채용할 수가 있다. 그리고, 이러한 재구성 가능한 처리유닛이라면, 어드레스의 출력에 적합한 내부 데이터 경로를 구비한 전용 처리 요소를 미리 조합할 수 있어, 어드레스를 발생하는 처리효율을 높이고, 처리속도를 더욱 향상시킬 수 있다. 또, 잉여 회로요소의 존재를 저감시킬 수 있으므로, 데이터 흐름을 변경하기 위해 선택하는 요소도 줄일 수 있고, AC 특성도 향상시킬 수 있어 스페이스 효율도 더욱 높아진다.
따라서, 처리유닛의 데이터 흐름 중 적어도 일부의 변경을 지시하는 제어유닛이 상술한 데이터 처리구획과, 제 1 어드레스 출력구획과, 제 2 어드레스 출력구획을 구성하도록 처리유닛에 지시하는 공정을 실행함으로써, 데이터 흐름을 단시간에 유연성 있게 동적으로 변경할 수 있다. 그리고, 유연성 있는 캐시시스템을 구비한 콤팩트하고 경제적인 집적회로장치를 제공할 수 있다.
처리유닛의 데이터 흐름을 용이하게 변경하기 위해, 전용 처리 요소간의 접속을 변경할 수 있도록 하는 동시에, 전용 처리 요소의 내부 데이터 경로의 일부를 선택하는 수단과, 내부 데이터 경로의 선택을 기억하는 구성 메모리를 설치하는 것이 바람직하다. 제어유닛은 구성 메모리의 내용을 재기입하거나, 처리유닛의 데이터 흐름 중 적어도 일부의 변경을 지시함으로써 데이터 흐름을 재구성할 수 있다. 또한, 전용 처리 요소를 구비한 처리유닛이라면, 상기 제어유닛에 의해 데이터 처리구획, 제 1 어드레스 출력구획 또는 제 2 어드레스 출력구획의 데이터 흐름의 변경을 비동기로 또는 독립적으로 지시할 수 있게 된다. 이로써, 제 1 메모리에 대하여 데이터를 입출력하고 있는 동안에는, 데이터 처리구획 및/또는 제 1 어드레스 출력구획을 구성하는 전용 처리 요소를 다른 목적의 데이터 흐름을 구성하기 위해 사용하거나, 반대로 데이터 처리구획에서 처리를 실행하고 있는 동안에는, 제 2 어드레스 출력구획의 전용 처리 요소를 다른 메모리의 제어에 이용하거나 또는 다른 목적으로 이용할 수가 있게 되어, 처리유닛의 리소스를 유연성 있게 효율적으로 활용할 수 있다.
더욱이, 상기 처리를 수행시키는 프로그램 코드를 기억하는 코드 메모리를 제어유닛에 탑재함으로써, 단일 칩의 시스템 LSI 등의 집적회로장치를 구성할 수 있게 된다. 따라서, 다양한 목적의 소프트웨어에 대하여, 캐시가 오버헤드가 되지 않으며, 효율적으로 이용하여 실행 속도를 향상시킬 수 있는 집적회로장치를 제공할 수 있다. 또, 데이터 흐름을 재구성할 수 있는 처리유닛을 단일 칩 또는 프로세서 코어로서 제공하거나, 캐시메모리가 되는 제 1 메모리를 탑재한 상태로 칩으로서 제공할 수도 있으며, 본 발명을 실시할 수 있는 형태는 다양하며, 이러한 형태를 포함하는 처리장치도 본 발명에 포함된다.
도 1은 본 발명의 실시형태에 관한 집적회로장치의 개략 구성을 나타내는 블록도.
도 2는 처리유닛인 AAP의 개략 구성을 나타내는 도면.
도 3은 매트릭스부의 개략 구성을 나타내는 도면.
도 4는 어드레스를 출력하는 처리에 적합한 데이터 경로부의 예를 나타내는 도면.
도 5는 도 4에 나타낸 데이터 경로부의 어드레스 발생회로의 구성을 나타내는 도면.
도 6은 도 5에 나타낸 카운터의 구성을 나타내는 도면.
도 7은 도 5와 다른 어드레스 발생회로의 구성을 나타내는 도면.
도 8은 대용량 RAM을 외부 메모리로 하여 제어하는 형태를 나타내는 도면.
도 9는 대용량 RAM 및 주변 디바이스를 외부 메모리로 하여 제어하는 형태를 나타내는 도면.
도 10은 복수의 대용량 RAM 및 주변 디바이스를 외부 메모리로 하여 제어하는 형태를 나타내는 도면.
도 11은 본 발명의 다른 집적회로장치에 의해 대용량 RAM을 외부 메모리로 하여 제어하는 형태를 나타내는 도면.
이하에 도면을 참조하여 본 발명에 대해서 더욱 상세히 설명한다. 도 1은 본 발명에 관한 시스템 LSI(10)의 개략 구성을 나타낸 도면이다. 상기 LSI(10)는 프로그램 등에 의해 부여되는 명령 세트에 기초하여 에러처리를 포함한 범용적인 처리를 행하는 범용 구성의 프로세서부(이후에서는 기본 프로세서 또는 프로세서)(11)와, 매트릭스형상으로 배치된 연산 또는 논리 엘리먼트에 의해 특정한 데이터처리에 적합한 데이터 흐름 또는 의사(擬似) 데이터 흐름이 다양하게 형성되는 AAP(Adoptive Application Processor)부 또는 AAP 유닛(이후에서는 AAP)(20)과, 상기 AAP(20)로부터의 인터럽트처리를 제어하는 인터럽트제어부(12)와, AAP(20)에 작동용 클럭신호를 공급하는 클럭발생부(13)와, 이 LSI(10)로 제공할 수 있는 연산회로의 유연성을 더욱 향상시키기 위한 FPGA부(14)와, 외부에 대한 데이터의 입출력을 제어하는 버스제어부(15)를 구비한 데이터처리 시스템이다. FPGA부(14)는 상기 LSI(10)의 외부에 설치된 FPGA칩과의 인터페이스이고, 이후에서는 오프칩 FPGA 또는 FPGA로서 참조한다. 본 발명의 집적회로장치인 LSI(10)에서 기본 프로세서(11)와 AAP(20)는, 기본 프로세서(11)와 AAP(20)의 사이에서 데이터를 교환할 수 있는 데이터버스(17)와, 기본 프로세서(11)로부터 AAP(20)의 구성 및 동작을 제어하기 위한 명령버스(18)에 의해 접속되어 있다. 또, AAP(20)로부터 인터럽트제어부(12)로 신호선(19)을 통해 인터럽트신호가 공급되고, AAP(20)에서의 처리가 종료하거나 처리 중에 에러가 발생했을 때는 AAP(20)의 상태를 기본 프로세서(11)로 피드백할 수 있도록 되어 있다.
AAP(20)와 FPGA(14) 사이도 데이터버스(21)에 의해 접속되어 있고, AAP(20)로부터 FPGA(14)로 데이터를 공급해 처리하여, 그 결과를 AAP(20)로 반환하도록 되어 있다. 또, AAP(20)는 로드버스(22) 및 저장버스(23)에 의해 버스 제어 유닛(15)과 접속되어 있으며, LSI(10)의 외부 데이터버스와의 사이에서 데이터를 교환할 수 있도록 되어 있다. 따라서, AAP(20)는 외부의 DRAM(2)이나 기타 디바이스로부터 데이터를 입력할 수 있고, 그 데이터를 AAP(20)에서 처리한 결과를 다시 외부의 디바이스로 출력할 수 있다. 기본 프로세서(11)도 데이터버스(11a)와 버스 제어 유닛(15)을 통해 외부의 디바이스와 데이터를 입출력할 수 있다.
도 2에 AAP 유닛(20)의 개요를 나타낸다. 본 예의 AAP 유닛(20)은 복수의 산술 및/또는 논리연산을 행하는 논리블록, 논리유닛 또는 논리요소(이후에서는 엘리먼트)가 매트릭스형상으로 배치된 매트릭스부(28)와, 그 매트릭스부(28)에 대하여 데이터를 공급하는 입력버퍼(26)와, 매트릭스부(28)로부터 출력되는 데이터를 저장하는 출력버퍼(27)를 구비하고 있다. 이들 입력버퍼(26) 및 출력버퍼(27)는 각각 4개의 소용량 입력메모리(RAM)(26a~26d)와, 출력메모리(RAM)(27a~27d)를 구비하고 있다. AAP(20)는 또한 이들 복수의 메모리로 구성되는 입력버퍼(26) 및 출력버퍼(27)와 버스 제어 유닛(15)의 사이에서 데이터의 입출력 동작을 제어하는 외부 액세스 조정유닛(제 2 조정유닛)(25)을 구비하고 있다.
본 예의 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)은 각각 1k바이트의 2 포트 RAM으로서 기능하고, 폭 64k비트 깊이 512 바이트의 2뱅크형식의 RAM(81 및 82)으로서 사용할 수 있도록 되어 있다. 따라서, 메모리에 대한 입력과 출력에서 다른 뱅크를 사용함으로써, 입출력을 독립된 동작으로서 처리할 수 있다. 또, RAM(81 및 82)에 대한 입출력을 관리하는 조정유닛(제 1 조정유닛)(85)을 구비하고 있고, 입력 및 출력 회수를 카운트함으로써 각 뱅크의 꽉찬상태 및 공백상태를 체크할 수 있도록 되어 있다.
이들 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)의 입출력을 제어하기 위해서, 매트릭스부(28)와 각각의 RAM 및 조정유닛(85)의 사이에서 복수 종류의 제어신호가 교환된다. 먼저, 각 입력 RAM(26a~26d)마다, 입력 RAM(26a~26d)으로부터 매트릭스부(28)가 판독하는 데이터를 제어하기 위한 16 비트의 입력 판독 어드레스 데이터(ira, 제 1 어드레스)(61)가 출력된다. 상기 입력 판독 어드레스(61)는 각 입력 RAM(26a~26d)의 논리 또는 물리 어드레스이다. 또 각 입력 RAM(26a~26d)의 조정유닛(85)으로부터 매트릭스부(28)로, 꽉찬상태 및/또는 공백상태에 따라 어드레스 데이터(61)의 공급을 제어하는 입력 판독 어드레스 정지신호(ira_stop)(62)가 출력된다. 또, 매트릭스부(28)로부터 공급된 어드레스 데이터(61)에 대응하는 데이터가 없는 등, 매트릭스부(28)에 대한 입력조건이 갖추어지지 않았을 경우에도 조정유닛(85)으로부터 입력 판독 어드레스 정지신호(62)가 출력된다.
매트릭스부(28)에서는 상기 정지신호(62)에 따라 매트릭스부(28)에 형성되는 데이터 흐름을 온 ·오프한다. 따라서, 매트릭스부(28)에 데이터 흐름이 형성된 후의 실행공정에서는, 데이터 흐름에 의해서 정의된 처리의 실행을 각 입력 RAM(26a~26d)의 조정유닛(85)으로 제어할 수 있다. 따라서, 입력 RAM(26)에 입력 판독 어드레스 데이터(61)에 대응하는 데이터가 없으면, 데이터 흐름의 처리는 대기상태가 된다. 또, 입력 RAM(26)에 입력 판독 어드레스 데이터(61)에 대응하는 데이터가 있으면, 32 비트의 입력 판독 데이터(ird)(63)가 매트릭스부(28)로 공급되고, 형성된 데이터 흐름에 의해 처리되어 출력 RAM(27) 중 어느 하나로 출력된다. 또, 매트릭스부(28)로부터는 입력 판독 데이터(63)를 제어하는 정지신호(ird_stop) (64)가 각 입력 RAM(26a~26d)으로 출력되는데, 매트릭스부(28)의 데이터 흐름의 동작이 예를 들어 출력측의 원인으로 인해 정지했을 때는 판독을 정지한다.
각 입력 RAM(26a~26d)의 조정유닛(85)은 기본적으로는 각 RAM(26a~26d)을 독립적으로 제어한다. 따라서, 각 입력 RAM(26a~26d)과 매트릭스부(28)간의 데이터 교환은 입력 RAM(26a~26d)마다 제어 및 실행되어, 입력 RAM(26a~26d)에 대응하여 형성된 매트릭스부(28)의 데이터 흐름이 독립적으로 제어된다. 이하에서 설명하는 출력 RAM(27a~27d)에 대해서도 동일하다. 한편 이들 입력 RAM(26a~26d)의 조정유닛(85)은 입력 RAM(26a~26d) 사이의 배선이나 또는 매트릭스부(28)를 사이에 둔 배선에 의해 접속할 수도 있고, 복수의 입력 RAM(26a~26d)을 관련지어 관리할 수도 있다. 복수의 입력 RAM(26a~26d)을 관련지어 관리함으로써, 매트릭스부(28)에 형성되는 데이터 흐름에 대하여 복수의 입력 RAM을 할당할 수 있다. 그리고, 조정유닛(85)에 의해, 복수의 입력 RAM(26a~26d)에 우선 순위를 매겨, 우선도가 높은 RAM의 데이터부터 데이터 흐름에 공급하는 제어를 실현할 수 있다.
또한, 입력 RAM(26a~26d)마다, 버스 제어 유닛(15)을 통해 외부 메모리(2)로부터 판독하여 각 입력 RAM(26a~26d)에 기입하는 데이터를 제어하기 위한 32 비트의 입력 기입 어드레스 데이터(iwa, 제 2 어드레스)(65)와, 그 데이터 타입 등을 지정 할 수 있는 4 비트의 제어신호(iwd_type)(66)가 매트릭스부(28)로부터 출력된다. 각 입력 RAM(26a~26d)에 대응하는 이들 입력 기입 어드레스 데이터(65) 및 제어신호(66)는 모두 외부 액세스 조정유닛(25)으로 출력된다. 상기 입력 기입 어드레스(65)는 외부 메모리인 RAM(2)의 물리 어드레스 또는 물리 어드레스에 상당하는 논리 또는 가상 어드레스가 된다. 이에 대하여, 외부 액세스 조정유닛(25)으로부터 어드레스 데이터(65)의 출력을 제어하는 정지신호(iwa_stop)(67)가 매트릭스(28)에 공급된다.
또, 외부 액세스 조정유닛(25)에 공급된 입력 기입 어드레스 데이터(65)에 호응하는 64 비트의 입력 기입 데이터(iwd)(68)가 조정유닛(25)으로부터 각 입력 RAM(26a~26d)에 공급되고, 각 입력 RAM(26a~26d)에서는 입력 기입 데이터(68)를 제어하는 정지신호(iwd_stop)(69)가 외부 액세스 조정유닛(25)으로 출력된다.
매트릭스부(28)로부터의 출력을 제어하기 위해서는 매트릭스부(28)로부터 판독되어 출력 RAM(27a~27d)에 기입되는 데이터를 제어하기 위한 16 비트의 출력 기입 어드레스 데이터(owa, 제 1 어드레스)(71)가 각 출력 RAM(27a~27d)마다 출력된다. 상기 출력 기입 어드레스(71)는 각 출력 RAM(27a~27d)의 논리 또는 물리 어드레스가 된다. 또, 꽉찬상태 및/또는 공백상태에 따라 각 출력 RAM(27a~27d)의 조정유닛(85)으로부터 매트릭스부(28)에 대한 어드레스 데이터(71)의 공급을 제어하는 출력 기입 어드레스 정지신호(owa_stop)(72)가 출력된다. 즉, 매트릭스부(28)로부터의 출력을 받는 조건을 만족하지 않을 경우, 조정유닛(85)으로부터 출력 기입 어드레스 정지신호(72)가 출력된다. 매트릭스부(28)에서는 상기 정지신호(72)에 따라 매트릭스부(28)에 형성되는 데이터 흐름을 온 ·오프하여, 데이터 흐름에 의해 정의된 처리의 실행을 제어한다. 출력 RAM(27)에 스페이스가 있으면, 출력 기입 어드레스 데이터(71)와 함께 32 비트의 출력 기입 데이터(owd)(73)가 매트릭스부(28)로부터 출력된다. 또, 각 출력 RAM(27a~27d)의 조정유닛(85)으로부터 매트릭스부(28)로 출력 기입 데이터(73)를 제어하는 정지신호(owd_stop)(74)가 공급된다.
또, 출력 RAM(27a~27d)마다, 버스 제어 유닛(15)을 통해 각 입력 RAM(26a~26d)으로부터 판독되어 외부 메모리(2)에 기입되는 데이터를 제어하기 위 한 32 비트의 출력 판독 어드레스 데이터(ora, 제 2 어드레스)(75)와, 그 데이터 타입 등을 지정할 수 있는 4 비트의 제어신호(ord_type)(76)가 매트릭스부(28)로부터 출력된다. 이들 출력 판독 어드레스 데이터(75)와 제어신호(76)는 모두 외부 액세스 조정유닛(25)으로 출력된다. 상기 출력 판독 어드레스(75)는 외부 메모리인 DRAM(2)의 물리 어드레스 또는 물리 어드레스에 상당하는 논리 또는 가상 어드레스가 된다. 이에 대하여, 외부 액세스 조정유닛(25)으로부터 어드레스 데이터(75)의 출력을 제어하는 정지신호(ora_stop)(77)가 매트릭스(28)에 공급된다.
또, 출력 판독 어드레스 데이터(75)와 함께, 64 비트의 출력 판독 데이터(ord)(78)가 각 출력 RAM(27a~27d)으로부터 외부 액세스 조정유닛(25)으로 공급되고, 외부 액세스 조정유닛(25)으로부터 각 출력 RAM(27a~27d)으로 출력 판독 데이터(68)를 제어하는 정지신호(ord_stop)(79)가 공급된다.
따라서, 본 예의 AAP(20)에서 매트릭스부(28)의 입력 데이터(63)는 복수의 입력 RAM(26a~26d)과, 외부 액세스 조정유닛(25)을 거쳐 외부 메모리(2)와의 인터페이스가 되는 버스 제어 유닛(15)으로부터 공급된다, 또, 매트릭스부(28)의 출력 데이터(73)는 복수의 출력 RAM(27a~27d)과, 외부 액세스 조정유닛(25)을 거쳐 외부 메모리(2)와의 인터페이스가 되는 버스 제어 유닛(15)에 공급된다. 그리고, 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)은 각각 2뱅크 구성으로 되어 있으므로, 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)과 매트릭스부(28)간 처리와, 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)과 외부 액세스 조정유닛(25)간, 즉 외부 RAM(2)과의 처리를 독립적으로 또는 비동기로 병렬로 실행할 수 있다.
또, 외부 액세스 조정유닛(25)과 버스 제어 유닛(15)의 사이에는 블록 단위로 데이터를 고속으로 입출력할 수 있도록, 32 비트의 어드레스 버스와 256 비트의 데이터버스에 의해 로드버스(22) 및 저장버스(23)가 구성되어 있다. 그리고, 어드레스 버스를 통해 입력 어드레스 신호(22a) 및 출력 어드레스 신호(23a)가 전달되고, 데이터버스를 통해 입력 데이터(22b) 및 출력 데이터(23b)가 전달된다. 또, 5 비트의 명령어(22c 및 23c)를 전달하는 신호선과, 버스 제어 유닛(15)의 사용중신호(22d 및 23d)를 전달하는 신호선과, 버스 제어 유닛(15)의 준비완료신호(22e)를 전달하는 신호선도 준비되어 있다.
도 3은 본 예의 매트릭스부(28)와 소용량 RAM(26a~26d 및 27a~27d)을 포함한 구성(29)의 개요를 나타낸 것이다. 상기 매트릭스부(28)는 본 발명의 처리유닛에 대응하는 데이터 경로 또는 데이터 흐름을 재구성할 수 있는 시스템이다. 매트릭스부(28)는 복수의 연산유닛인 엘리먼트(30)를 구비하고, 이들 엘리먼트(30)가 종방향으로 4개의 라인을 구성하도록 어레이형상 또는 매트릭스형상으로 배치되어 있다. 또, 매트릭스부(28)는 이들 엘리먼트(30)의 사이에 배치된 횡방향으로 연장된 행배선군(51)과, 종방향으로 연장된 열배선군(52)을 구비하고 있다. 열배선군(52)은 열 방향으로 늘어선 연산유닛(30)의 좌우로 나누어 배치된 배선군(52x 및 52y)이 1쌍으로 되어 있고, 이들 배선군(52x 및 52y)으로부터 데이터가 각각의 엘리먼트(30)에 공급된다.
행배선군(51) 및 열배선군(52)의 교점에는 스위칭 유닛(55)이 배치되어 있 고, 행배선군(51)의 임의의 채널을 열배선군(52)의 임의의 채널로 전환하여 접속할 수 있도록 되어 있다. 각각의 스위칭 유닛(55)은 설정을 기억하는 구성 RAM을 구비하고 있고, 프로세서부(11)로부터 공급되는 데이터에 의해 구성 RAM의 내용을 재기입함으로써, 행배선군(51)과 열배선군(52)의 접속을 임의로 동적으로 제어할 수 있다. 이 때문에, 본 예의 매트릭스부(28)에서는 복수 엘리먼트(30)의 전부 또는 일부가 배선군(51 및 52)에 의해 접속되어 형성되는 데이터 흐름의 구성을 임의로 동적으로 변경할 수 있다.
각 엘리먼트(30)는 1세트의 열배선군(52x 및 52y) 각각으로부터 입력 데이터를 선택하기 위한 1세트의 셀렉터(31)와, 선택된 입력 데이터(dix 및 diy)에 특정한 산술 및/또는 논리연산 처리를 실시하여, 출력 데이터(do)로서 행배선군(51)으로 출력하는 내부 데이터 경로부(32)를 구비하고 있다. 그리고, 본 예의 매트릭스부(28)에는 각 행마다 다른 처리를 행하기 위한 내부 데이터 경로부(32)를 구비한 엘리먼트(30)가 나란히 배치되어 있다. 또, 이들 배선군(51 및 52)에는 자리올림신호를 전송하는 배선도 준비되어 있다. 자리올림신호는 자리올림용 신호나 진위를 나타내는 신호로서 사용할 수 있고, 본 예의 매트릭스부(28)에서는 각 엘리먼트(30)에서 산술연산 및 논리연산을 제어하거나, 결과를 다른 엘리먼트(30)에 전달하기 위해서 등에 이용된다.
먼저, 제 1 행에 배열된 엘리먼트(30)는 입력버퍼(26)로부터의 데이터를 수신하는 처리에 적합한 데이터 경로부(32i)를 구비하고 있다. 로드용의 데이터 경로부(LD)(32i)는 단순히 데이터를 받아들이기만 하는 것이라면 논리게이트는 불필 요하며, 로드버스(22)로부터 데이터를 수신하여 행배선군(51)으로 출력한다. 본 예의 매트릭스부(28)에서는 로드용의 데이터 경로부(32i)는 입력 RAM(26)의 RAM 조정유닛(85)으로부터 정지신호(62)를 수신하면, 이 데이터 경로부(32i)의 엘리먼트(30)로 이어진 데이터 흐름의 처리를 정지하는 기능을 구비하고 있다. 또, 매트릭스부(28)의 내부요인이나 출력측의 요인에 의해 데이터 경로부(32i)의 엘리먼트로 이어진 데이터 흐름을 정지할 때에는 대응하는 입력 RAM(26)의 조정유닛(85)에 대하여 정지신호(64)를 출력하는 기능을 구비하고 있다.
제 2 행에 배치된 엘리먼트(30a)는 입력버퍼(26)의 각각의 입력 RAM(26a~26d)에 외부 RAM(2)으로부터 데이터를 기입하기 위한 엘리먼트로서, 제 2 어드레스 출력구획에 대응한다. 따라서, 블록로드하기 위한 어드레스(제 2 어드레스)를 발생하는 데에 적합한 내부 데이터 경로를 구비하는 데이터 경로부(32a)를 구비하고 있다. 이 데이터 경로부(32a)는 BLA(Back Ground Load Address Generator)라고 한다. 도 4는 데이터 경로부(32a)의 일례를 나타낸 것으로, 카운터 등으로 이루어지는 어드레스 발생회로(38)를 구비하고 있고, 그 어드레스 발생회로(38)로부터 어드레스가 출력신호(do)로서 출력된다. 출력신호(do)는 행배선군(51) 및 열배선군(52)를 통해 그대로 또는 다른 엘리먼트(30)에 의해 처리된 후에 입력신호(dix 또는 diy)로서 데이터 경로부(32)에 공급되며, 공급된 어드레스 중 어느 하나가 셀렉터(SEL)에 의해 선택되어 플립플롭(FF)을 통해 매트릭스부(28)로부터 액세스 조정유닛(25)으로 입력 기입 어드레스(65)로서 출력된다.
매트릭스(28)를 구성하는 모든 엘리먼트(30)와 마찬가지로 이 어드레스를 발 생하는 엘리먼트(30)도 어드레스 발생회로(38)나 셀렉터(SEL)의 상태를 설정하는 구성 RAM(39)을 구비하고 있고, 상기 구성 메모리(39)의 데이터는 기본 프로세서(11)로부터의 제어신호(18)에 의해 세팅된다.
도 5에 어드레스 발생회로(38)의 일례를 나타낸다. 상기 어드레스 발생회로(38)는 복수의 카운터(38a)와, 이들 카운터(38a)로부터의 출력을 연산하여 어드레스로서 출력하는 가산기(38b)를 구비하고 있다. 각각의 카운터(38a)는 도 6에 나타낸 바와 같이, 산술연산유닛(ALU)(38c)과 비교기(38d)가 조합된 구성으로 되어 있고, ALU(38c)는 ADD, SUB, BIT 시프트, OR, XOR이나 이들을 조합한 연산을 수행하도록 세팅될 수 있다. 따라서, 클럭이 일어날 때마다 값을 발생하는 함수발생회로로서의 기능이 있고, 이러한 카운터(38a)의 기능은 구성 RAM(39)을 통해 프로세서부(11)에서 세팅할 수 있다.
또, ALU(38c)의 제어신호(en)를 다른 카운터(38a)로부터 공급되는 자리올림신호(cy)에 의해 세팅하거나, 비교기(38d)의 출력을 자리올림신호(cy)로서 다른 카운터(38a)에 전달할 수 있다. 이와 같이 자리올림신호를 이용함으로써, 카운터(38a)의 상태에 따라 다른 카운터(38a)의 상태를 세팅하여, 임의의 어드레스를 발생시킬 수 있다. 또, 본 도면에는 도시하지 않았지만, 카운터(38a)의 제어신호(en)를 다른 엘리먼트(30)로부터 공급되는 자리올림신호(cy)에 의해 세팅하거나 다른 엘리먼트(30)에 전달할 수 있다.
따라서, 상기 입력 기입 어드레스(65)를 출력하는 엘리먼트(BLA)(30a)는 내부 데이터 경로(32a)로서 어드레스 발생회로(38)를 구비한 어드레스의 발생에 적합 한 구성을 구비하는 동시에, 구성 RAM(39)을 통해 프로세서(11)로부터 어드레스 발생의 처리내용을 제어할 수 있으며, 더욱이, 다른 엘리먼트(30)와의 관련성도 자유롭게 세팅할 수 있다. BLA(32a)에 포함되는 복수의 카운터(38a)는 예를 들면, 32 비트의 카운터로서, 외부 메모리(2)로부터 로컬 스토어 버퍼인 RAM(26a~26b)으로 DMA 전송하기 위한 어드레스를 발생한다.
도 3의 제 3 행에 배치된 엘리먼트(30b)는 각각의 입력 RAM(26a~26b)으로부터 원하는 데이터를 매트릭스부(28)로 로드하는 입력 판독 어드레스(61)를 발생하는 데이터 경로부(32b)를 구비하고 있고, 제 1 어드레스 출력구획에 대응한다. 이 데이터 경로부(32b)는 LDA(Load Address Generator)라고 한다. 상기 데이터 경로부(32b)의 구성은 출력되는 어드레스가 32 비트가 아닌 16 비트라는 점을 제외하면, 기본적으로는 상기 어드레스 발생용의 내부 데이터 경로부(32a)의 구성과 동일하다. 따라서, 데이터 경로부(32b)의 기본적 구성은 도 4에 나타낸 바와 같다.
LDA(32b)에 포함되는 어드레스 발생회로(38)의 일례를 도 7에 도시한다. 본 어드레스 발생회로(38)는 4개의 16 비트 카운터(38a)를 구비하고 있고, 로컬 스토어 버퍼인 RAM(26a~26b)으로부터 매트릭스부(28)로 데이터를 전송하기 위한 어드레스를 발생한다. 또, 카운터(38a)의 제어신호(en)는 다른 엘리먼트(30)로부터 공급되는 자리올림신호(cy)에 의해 세팅될 수 있고, 다른 엘리먼트(30)에 전달될 수 있도록 구성되어 있다. 상기 엘리먼트(30)로부터 출력된 입력 판독 어드레스(61)에 의해, 입력 RAM(26a~26b)으로부터 매트릭스부(28)로 데이터가 공급되고, 매트릭스부(28)를 구성하는 다른 논리 및 연산 엘리먼트에 의해 연산처리된다.
제 4 행 및 제 5 행에 배열된 엘리먼트(30c)는 산술연산 및 논리연산에 적합한 데이터 경로부(SMA)(32c)를 구비하고 있다. 이 데이터 경로부(32c)는 예를 들면, 시프트회로, 마스크회로, 논리연산유닛(ALU) 및 ALU에서 처리하는 연산을 세팅하는 구성 RAM(39)을 구비하고 있다. 따라서, 프로세서(11)가 기입한 명령에 의해, 입력 데이터(dix 및 diy)를 가산 또는 감산하거나, 비교하거나, 논리합 또는 논리곱을 취할 수 있으며, 그 결과가 출력신호(do)로서 출력된다.
그 아래의 행에 배열된 엘리먼트(30d)는 데이터가 전송되는 타이밍을 지연시키는 처리에 적합한 데이터 경로부(DEL)(32d)를 구비하고 있다. 이 데이터 경로부(32d)에는 예를 들면, 복수의 셀렉터와 플립플롭(FF)의 조합으로 구성된 데이터 경로가 준비되어 있고, 구성 RAM(39)의 데이터에 의해 셀렉터에서 선택된 경로를 입력신호(dix 및 diy)가 통과함으로써, 임의의 클럭 수만큼 지연되어 출력신호(dox 및 doy)로서 출력된다.
그 아래의 행에 배열된 엘리먼트(30e)는 승산기 등을 포함하는 승산처리에 적합한 데이터 경로부(MUL)(32e)를 구비하고 있다. 또 다른 엘리먼트(30f)로서는 매트릭스부(28)의 외부에 준비된 FPGA(14)와 인터페이스용의 데이터 경로부(32f)를 구비한 엘리먼트도 준비되어 있어, 데이터를 일단 FPGA(14)에 공급하여 처리한 후, 다시 매트릭스부(28)로 되돌려 처리를 계속할 수 있다.
이들 데이터 처리구획에 상당하는 엘리먼트가 배열된 영역의 더욱 아래쪽에는 스토어용의 어드레스를 발생하는 데에 적합한 데이터 경로부(32g 및 32h)를 각각 구비한 엘리먼트(30g 및 30h)가 배치되어 있다. 이들 데이터 경로부(32g 및 32h)는 상기 도 4 내지 도 7을 참조하여 설명한 어드레스를 발생하는 데이터 경로부(32b 및 32a)와 기본적으로 동일한 구성으로 되어 있다. 데이터 경로부(32g)를 구비한 엘리먼트(30g)는 제 1 어드레스 출력구획으로서, 매트릭스(28)로부터 출력되는 데이터를 출력 RAM(27a~27b)에 기입하기 위한 출력 기입 어드레스(71)를 출력한다. 그리고 상술한 각 종류의 엘리먼트(30c~30f)에 의해 구성된 데이터 처리계열로부터 출력된 데이터를 출력 RAM(27a~27b)에 기입한다. 이 데이터 경로부(32g)는 STA(Store address Generator)라고 하며, LDA(32b)와 동일한 구성이 된다.
상기 엘리먼트(STA)(30g)의 하방에 배치되어 데이터 경로부(32h)를 구비한 엘리먼트(30h)는 제 2 어드레스 출력구획으로서, 출력 RAM(27a~27b)의 데이터를 판독하여 외부 RAM(2)에 기입하기 위한 출력 판독 어드레스(75)를 출력하여, 매트릭스부(28)에서 처리된 데이터를 외부 RAM(2)에 기입한다. 상기 데이터 경로부(32h)는 BSA(Back Ground Store Address Generator)라고 하며, BLA(32a)와 동일한 구성이 된다.
그리고, 최하단에는 스토어용으로 데이터를 출력하는 데에 적합한 데이터 경로부(32s)를 구비한 엘리먼트(30)가 배열되어 있다. 이 데이터 경로부(32s)는 ST라고 하며, 산술연산용의 데이터 경로부(32c)와 거의 동일한 구성의 데이터 경로부를 채용할 수 있다. 또, 본 예에서 상기 출력용의 데이터 경로부(32s)는 출력 RAM(27)의 조정회로(85)로부터 정지신호(74)를 수신하면, 상기 출력용의 엘리먼트(30)로 이어진 데이터 흐름의 처리를 정지하는 기능을 구비한다.
이와 같이, 본 예의 매트릭스(28)는 외부 RAM(2)으로부터 입력 RAM(26a~26d) 에 데이터를 입력(블록로드)하기 위한 어드레스를 발생하는 내부 데이터 경로(BLA)(32a)를 구비한 엘리먼트(30a)와, 이들 입력 RAM(26a~26d)으로부터 매트릭스부(28)로 데이터를 입력하기 위한 어드레스를 발생하는 내부 데이터 경로(LDA)(32b)를 구비한 엘리먼트(30b)를 포함한다. 또, 매트릭스부(28)로부터 출력 RAM(27a~27d)으로 데이터를 출력하기 위한 어드레스를 발생하는 내부 데이터 경로(STA)(32g)를 구비한 엘리먼트(30g)와, 출력 RAM(27a~27d)의 데이터를 외부 RAM(2)으로 출력하기(블록로드) 위한 어드레스를 발생하는 내부 데이터 경로(BSA)(32h)를 구비한 엘리먼트(30h)를 포함하고 있다. 이들 엘리먼트(30a, 30b, 30g 및 30h)는 상술한 바와 같이 모두 어드레스를 발생시키는 데에 적합한 데이터 경로를 구비하고 있는 동시에, 그 구성 또는 기능을 구성 RAM(39)의 데이터를 재기입함으로써 변경할 수 있다. 그리고, 매트릭스부(28)의 다른 엘리먼트(30)와의 접속 환경도 배선군(51 및 52)의 접속을 바꿈으로써 변경할 수 있다. 따라서, 프로세서(11) 또는 매트릭스부(28)의 다른 엘리먼트(30)로부터 어드레스 발생의 데이터를 제공하거나, 어드레스를 발생하는 타이밍을 유연성 있게 제어할 수 있다.
따라서, 다양한 조건 및/또는 구성으로, 외부 RAM(2)으로부터 캐시가 되는 입력 RAM(26a~26d)에 대하여 데이터를 로드할 수 있다. 또, 그 처리와는 별도로, 비동기 또는 독립적으로 다른 조건하에서 입력 RAM(26a~26d)으로부터 매트릭스부(28)로 데이터를 로드할 수가 있다. 그리고, 엘리먼트(30a 및 30b)가 독립적이므로, 이러한 처리를 병렬로 실행할 수 있다. 따라서, 이들 복수의 입력 RAM(26a~26d)은 각각 독립적이며 입출력이 가능한 저장구획으로 되어 있다.
또, 입력 RAM(26a~26d)은 2뱅크 구성으로 되어 있으므로, 입력 RAM(26a~26d)에 대한 입력 및 출력도 병렬로 실시할 수 있어, 입력 RAM(26a~26d)에 대한 데이터의 입출력을 매우 효율적으로 수행할 수 있는 구성으로 되어 있다. 출력 RAM(27a~27d)도 마찬가지로 각각이 독립적이며 입출력이 가능한 저장구획이 되어, 각각의 RAM(26a~26d)에 대한 입력 및 출력도 독립적으로 병렬로 행할 수 있다. 따라서, 이 시스템에서는 캐시로서 동작하는 RAM(26a~26d 및 27a~27d)에 대하여 데이터를 매우 효율적으로 입출력할 수 있다.
본 예의 매트릭스(28)는 기본적으로 어드레스 발생에 적합한 데이터 경로부(32a, 32b, 32g 및 32h)를 각각 구비한 엘리먼트(30a, 30b, 30g 및 30h)를 구비하고 있고, 각각의 동작은 기본 프로세서(11)의 지시에 따라 결정된다. 즉, 제어유닛인 기본 프로세서(11)로부터 제어버스(28)를 통해 공급되는 지시에 따라, 제 1 메모리인 RAM(26a~26d 및 27a~27d)으로 액세스하는 회로가 결정되고, 주메모리(제 2 메모리)가 되는 DRAM(2)으로 액세스하는 회로가 결정된다.
또, 이들 메모리에 대한 액세스를 제어하는 회로가 매트릭스 내에 구성되므로, 이들 회로의 동작에 대하여 매트릭스(28) 내부의 조건, 예를 들면, 데이터 흐름의 구성 또는 처리결과, 나아가 매트릭스(28)의 다른 엘리먼트를 이용한 처리 결과를 직접 또는 간접적으로 반영하기가 매우 용이하다. 어드레스를 발생시키는 데에 적합한 엘리먼트(30a, 30b, 30g 및 30h)는 다른 엘리먼트와 마찬가지로, 배선(51 및 52)에 의해, 매트릭스부(28)의 다른 엘리먼트에 대하여 자유롭게 배선할 수 있다. 이 때문에, 매트릭스부(28) 속에서 데이터 처리구획이 되는 다른 엘 리먼트에 의해 구성되는 데이터 흐름 또는 데이터 처리구획에 의해 실행되는 소프트웨어에 의해, 엘리먼트(30a, 30b, 30g 및 30h)의 파라미터 또는 처리내용을 바꿈으로써 출력을 제어할 수 있다. 더욱이, 엘리먼트(30a, 30b, 30g 및 30h)와 다른 엘리먼트로 데이터 흐름을 구성함으로써, 다른 엘리먼트의 기능을 어드레스 발생용으로 이용할 수 있다. 따라서, 캐시시스템을 구성하는 제 1 메모리인 RAM(26a~26d 및 27a~27d)에 대한 액세스방법, 주메모리(제 2 메모리)가 되는 DRAM(2)에 대한 액세스방법을 매트릭스(28) 내부의 조건, 예를 들면, 데이터 흐름의 구성 또는 처리결과에 따라 유연성 있게 결정할 수 있다.
또, 매트릭스부(28)는 기본 프로세서(11)로부터의 제어에 의해 재구성할 수 있는 구성이므로, 이들 어드레스를 발생하는 엘리먼트(30a, 30b, 30g 및 30h)의 내부 데이터 경로 및 기능을 동적으로 재구성할 수 있고, 외부의 다른 엘리먼트와의 접속도 동적으로 재구성할 수 있다. 물론, 매트릭스부(28) 내에 엘리먼트 내부 및 엘리먼트간의 접속을 재구성할 수 있는 기능을 부여할 수도 있다. 따라서, 매트릭스부(28)에서 실행하는 처리내용에 따라 매트릭스부(28)의 다른 엘리먼트(30)의 접속을 변경하여 데이터 흐름 또는 데이터 경로 구조를 재구성할 때에, 입력 RAM으로 이루어지는 버퍼(26) 및 출력 RAM으로 이루어지는 버퍼(27)에 데이터를 입출력하는 구성도 변경할 수 있다.
이로 인해, 매트릭스부(28)에 의해 실행하는 처리에 가장 적합한 구성으로 데이터를 입력 버퍼(26) 및 출력 버퍼(27)에 입출력하도록 구성할 수 있고, 캐시로서의 적중률을 높이거나, 캐시의 재기입 회수를 삭감하거나 할 수 있게 된다. 또, 어드레스를 발생하는 엘리먼트(30a, 30b, 30g 및 30h)의 내부 및 이와 관련된 데이터 경로구조를 엘리먼트마다 재구성할 수 있고, 각각의 RAM(26a~26d 및 27a~27d)의 단위로 캐시시스템을 재구성할 수도 있다. 이 때문에, 유연성이 매우 높다. 따라서, 매트릭스부(28)에 다른 엘리먼트(30)에 의해 데이터처리 계열이 구성되기 전에, 그 데이터처리 계열에 적합한 데이터 입력구조를 실현하여 데이터의 로드를 먼저 개시하거나, 데이터처리 계열이 다른 처리를 위해 재구성된 후에도 데이터 출력구조를 유지하여 데이터의 출력만 계속하는 등 종래에는 생각할 수 없었던 처리도 매우 유연성 있게 실행할 수 있다. 즉, 제 1 메모리인 RAM(26 및 27), 나아가 제 2 메모리인 DRAM(2)에 대한 처리를, 다른 엘리먼트 또는 데이터 흐름에 종속된 상태에서도 자유롭게 실행할 수 있고, 독립한 상태에서도 자유롭게 실행할 수 있다. 물론, 어드레스를 발생하는 엘리먼트(30a, 30b, 30g 및 30h)를 관련지어 동작시킬 수 있고, 복수의 엘리먼트(30a 또는 30b)를 관련지어 동작시켜, 복수의 RAM(26)을 하나의 대용량 캐시로서 매트릭스부에 이용하는 것도 가능하다.
또, 엘리먼트(30a)는 입력 RAM(26a)이 공백상태가 되면 입력 기입 어드레스(65)를 출력하여 RAM(2)으로부터 데이터를 기입하는 처리를 하고, 엘리먼트(30b)는 입력 RAM(26a)에 데이터가 있으면, 그 데이터를 매트릭스부(28)에 로드하는 처리를 할 수도 있다. 이로써, 엘리먼트(30a 및 30b)를 독립적으로 병렬로 움직일 수 있어, 데이터 처리계열의 처리시간을 낭비하지 않고 외부 RAM(2)의 데이터를 입력 RAM(26a)에 프리페치할 수 있다. 또, 엘리먼트(30a)가 외부 RAM(2)으로부터 데이터를 입력하는 어드레스를 제어하면, 엘리먼트(30b) 및 매트릭스부(28)에 구성되는 데이터 처리계열에서는 내부 RAM(26a)의 어드레스만으로 처리를 진행하는 것도 가능하다. 또, 매트릭스부(28)의 다른 복수의 엘리먼트(30)에 의해 데이터 흐름 타입의 처리계가 정의되어 있으면, 어드레스를 제외한 데이터만으로 매트릭스부(28)에서는 데이터처리를 진행할 수도 있다.
매트릭스부(28)의 데이터 처리계열로부터 가상 어드레스가 출력되고, 그것을 엘리먼트(30b)에서 입력 RAM(26a)의 물리 어드레스로 변환하여 데이터를 공급하고, 입력 RAM(26a)에 데이터가 없을 경우에는 엘리먼트(30a)에서 외부 RAM(2)의 물리 어드레스로 변환하여 외부 RAM(2)으로부터 로드하도록 구성하는 것도 가능하다.
또한, 엘리먼트(BLA)(30a)가 입력 RAM(26b)으로부터 입력된 데이터에 의해 어드레스를 발생하고, 그것에 의해 외부 RAM(2)으로부터 입력 RAM(26a)에 데이터를 로드하도록 구성할 수 있다. 따라서, 매트릭스부(28)에 구성된 데이터 처리계열과는 독립적으로, 입력 RAM(26) 또는 출력 RAM(27)에 대한 입출력을 처리하는 기구만으로 완전한 간접 어드레싱의 제어를 행할 수 있다. 또, 복수의 입력 RAM(26a~26d), 출력 RAM(27a~27d), 액세스 조정유닛(25)을 연동시킴으로써 복수의 계층구조를 구비한 캐시구조를 실현할 수도 있다.
또, 본 예의 AAP(20)에서는 엘리먼트(30)를 4열로 나열한 것에 대응하여 4개의 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)이 마련되어 있다. 따라서, 매트릭스부(28)에서 이들 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)은 다른 엘리먼트(30)에 의해 구성되는 복수의 데이터 처리계열에 개별적으로 대응된 캐시메모리로서 이용될 수 있다. 이 때문에, 매트릭스부(28)에서 복수의 작업(job) 또는 애플리케이션이 실행되고 있는 경우에, 이들 작업 또는 애플리케이션에 각각 최적의 캐시로서 각 입력 RAM(26a~26d) 및 출력 RAM(27a~27d)을 이용할 수 있다. 엘리먼트(30)는 4열로 배열되어 있지만, 엘리먼트(30)에 의해 구성되는 데이터 처리계열은 4열로 한정되는 것은 아니다. 매트릭스부(28)에 구성되는 데이터 처리계열이 3열 이하이면, 입력 RAM(26a~26d) 및 출력 RAM(27a~27d) 중 복수의 RAM을 하나의 데이터 처리계열에 할당함으로써, 캐시메모리의 용량을 증가시킬 수 있다. 데이터 처리계열이 5열 이상이면, 캐시메모리로서 하나의 RAM을 복수의 데이터 처리계열에 할당하게 되지만, 최악의 경우에도, RAM을 공용하는 데이터 처리계열에서 현 상태의 CPU 코어에서 멀티테스킹의 캐시처리가 이루어지고 있는 것과 동일한 상황이 발생할 뿐이다.
도 8에 개요를 나타낸 바와 같이, 본 발명의 집적회로장치 또는 처리장치인 시스템 LSI(10)는 처리유닛인 매트릭스부와 소용량의 RAM을 구비한 구조 또는 어셈블리(29)를 구비하고 있고, 매트릭스부로부터 외부의 RAM(2)으로 출력되는 어드레스는 조정회로(25)를 지나 외부의 RAM(2)에 공급된다. 그리고, 소용량 RAM의 입출력을 제어하는 어드레스 발생기구는 데이터 흐름을 재구성할 수 있는 매트릭스부에 의해 실현되고 있으므로, 캐시메모리로서 기능하는 소용량의 RAM을 제어하는 아키텍처도 재구성할 수 있고, 매트릭스부에 의해 실행되는 소프트웨어에 최적인 구성으로 변경할 수 있다. 따라서, 본 발명의 집적회로장치 또는 처리장치가 되는 시스템 LSI(10)에서는 실행되는 소프트웨어의 처리내용이나 하드웨어 환경에 따라서, 소용량의 RAM을 캐시메모리로서 가장 효율적으로 이용할 수 있다. 그리고, 각종 소프트웨어를 실행할 때에 높은 적중률이 얻어지도록 캐시메모리 및 그것을 제어하는 회로를 구성할 수 있어, 캐시메모리의 입출력이 소프트웨어를 실행할 때의 오버헤드가 되지 않는 시스템 LSI 또는 ASIC와 같은 집적회로장치 또는 처리장치를 제공할 수 있다.
또, 시스템 LSI(10)로 제어할 수 있는 외부 메모리, 즉 제 2 메모리는 RAM에 한정되는 것은 아니다. 입력 RAM 또는 출력 RAM에 대하여 외부 메모리가 되는 것은 RAM이나 ROM, 하드디스크장치와 같은 기록장치로 한정되는 것은 아니고, 어드레스를 지정함으로써 데이터를 입출력할 수 있는 디바이스는 모두 포함된다. 예를 들면, 도 9에 나타낸 바와 같이, LSI(10)가 외부 메모리로서 대용량 RAM(2)과 프린터나 디스플레이 등의 주변 디바이스(3)를 제어할 경우에는 매트릭스부(28)의 블록 로드하는 엘리먼트 BLA(30a) 및 BSA(30h)에서, 주변 디바이스(3)에 할당된 물리 어드레스를 발생하면 된다.
또, 도 10에 나타낸 바와 같이, LSI(10)가 복수의 버스 컨트롤러를 지나 복수의 대용량 RAM(2) 및 주변 디바이스(3)를 제어할 경우에는 조정회로(25)를 다중화하는 등의 변형도 가능하다. 또, 대용량 RAM(2)을 LSI(10)의 내부에 탑재할 수도 있고, 상기 대용량 RAM(2)을 주변 디바이스(3)에 대한 캐시메모리로서 이용하도록 구성할 수도 있다. 또, 대용량 RAM(2)을 프로세서부(11)의 코드 RAM으로서 이용할 수도 있다.
또, 상술한 매트릭스부(28)의 구성은 예시로서, 이것에 한정되는 것은 아니다. 연산을 하는 특정 내부 데이터 경로(32)를 상술한 엘리먼트는 어드레스 발생, 산술연산, 논리연산, 승산, 지연 등의 특정한 처리에 적합한 데이터 경로를 구비하고 있는 것의 예이고, 데이터 경로의 기능이나 구성은 본 예에 한정되는 것은 아니다. 본 발명의 집적회로장치 또는 데이터 처리장치인 LSI(10)에 의해 실행되는 애플리케이션에 적합한 기능의 데이터 경로를 구비한 엘리먼트를 매트릭스 또는 어레이형상으로 배치함으로써, 데이터 흐름을 변경 또는 재구성할 수 있는 처리유닛을 제공할 수 있다. 또, 매트릭스부(28)는 복수이어도 되고, 복수의 매트릭스부를 평면적으로 배치하거나 입체적으로 배치함으로써, 더욱 다수의 엘리먼트를 구비한 집적회로장치를 구축할 수 있다. 또, 본 발명의 집적회로장치는 전자회로로 한정되는 것은 아니고, 광회로 또는 광전자회로에도 적용할 수 있는 것이다.
또, 상기에서는 AAP(20), 기본 프로세서(11) 및 버스 제어 유닛(15)을 조합하여 시스템 LSI(10)로서 제공하는 예를 통해 본 발명을 설명하고 있지만, 어느 범위를 하나의 칩으로서 제공할지는 장착되는 애플리케이션 등의 조건에 따라 다르다. AAP(20)를 하나의 칩으로서 제공할 수도 있고, 캐시가 되는 RAM(26 및 27)과 매트릭스부(28)를 포함한 범위(29)를 칩화할 수도 있다. 또, 기본 프로세서(15)에 추가하여 복수의 AAP 또는 다른 전용회로 등을 포함하여 한층 큰 시스템 LSI 또는 ASIC로서 제공할 수도 있는 것이다.
또, 도 11에 나타내는 바와 같이, 매트릭스부(28)를 대신하는 처리유닛으로서 본 발명의 데이터 처리구획에 FPGA를 추가하여, 입력 RAM(26) 및 출력 RAM(27)을 캐시로서 기능시키는 본 발명의 제 1 및 제 2 어드레스 출력구획을 프로그래밍 또는 매핑함으로써, 본 발명의 집적회로장치 또는 처리장치를 실현할 수도 있다. FPGA는 트랜지스터 레벨로 범용성을 구비한 데이터 경로구조를 변경할 수 있는 아키텍처이다. 또, 트랜지스터 레벨은 아니지만, 단일적인 구성요소를 구비하고 명령 세트에 의해 각종 처리를 수행하는 중간 규모인 단일 구성의 기본 기능 유닛을 이용하여 데이터 경로의 구조 또는 데이터 흐름을 변경할 수 있도록 한 집적회로장치도 검토되고 있다. 이러한 아키텍처로 구성된 처리유닛에 대해서도, 데이터 처리구획에 추가하여, 입력 RAM(26)및 출력 RAM(27)을 캐시로서 기능시키는 본 발명의 제 1 및 제 2 어드레스 출력구획을 구성하거나 또는 구성하도록 지시함으로써, 본 발명의 집적회로장치 또는 처리장치를 실현할 수 있다.
그러나, 이들 단일 구성의 기본 유닛을 나열한 아키텍처와 달리, 상술한 매트릭스부에 기초하는 아키텍처는 내부 데이터 경로가 다른 복수 종류의 엘리먼트를 구비한 것이다. 따라서, 트랜지스터 레벨의 범용성을 요하는 아키텍처는 아니므로, 장착 밀도도 향상시킬 수 있고 콤팩트하고 경제적인 시스템을 제공할 수 있다. 그리고, 각각의 엘리먼트(30)가 특정 데이터처리로 특화된 데이터 경로부(32)를 구비하고 있으므로, 불필요한 구성을 적극 삭감할 수 있고 FPGA나 다른 단일 구성의 기본 기능 유닛을 나열한 처리유닛에 비해 처리속도를 대폭 고속화할 수 있으며 AC 특성도 향상시킬 수 있다. 또, 스페이스 효율도 높아지므로, 콤팩트한 레이아웃을 채용하여 배선 길이도 짧게 할 수 있다. 따라서, 본 발명에서 개시하는 효율적인 캐시구조를 확실히 활용할 수 있는 집적회로장치 및 처리장치에는 최적이며, 고속처리가 가능한 처리장치를 저 비용으로 제공할 수 있다.
또, 트랜지스터 레벨로 회로를 매핑하는 FPGA와 달리, 미리 특정한 처리에 적합한 데이터 경로부(32)를 구비한 엘리먼트(30)의 조합을 바꾸므로, 단시간에 거의 1 클럭으로 데이터 처리유닛, 즉 매트릭스부(28)에 구성되는 데이터 처리계열의 구성이나 기능을 변경할 수 있다는 장점도 있다. 또, 각각의 엘리먼트(30)에서는 데이터 경로부(32)를 구성하는 셀렉터나 ALU 등의 논리게이트의 기능도 구성 메모리(39)를 통해 프로세서(11)에 의해 독립적으로 세팅할 수 있고, 각 엘리먼트(30)의 데이터 경로부(32)가 서비스하는 기능의 범위 내에서 유연성 있게 변경할 수 있다. 이 때문에, 본 예의 매트릭스부(28)에서 데이터 흐름형의 데이터 처리로 실행할 수 있는 기능의 범위는 매우 넓다. 또, 네트워크 처리나 화상처리 등 LSI(10)가 이용되는 애플리케이션에 적합한 종류의 연산유닛(30)을 선택하여 배열할 수 있고 또 장착 효율이 양호하며, 실행 속도가 빠른 집적회로장치를 제공할 수 있다.
이상에서 설명한 바와 같이, 본 발명은 캐시메모리로서 사용할 수 있는 제 1 메모리를 제어하는 제 1 어드레스 출력구획 및 제 2 어드레스 출력구획과 데이터 흐름을 변경할 수 있는 처리유닛으로 형성하고 있다. 이 때문에, 캐시시스템의 구성을 데이터 처리구획의 구성과, 거기서 실행되는 소프트웨어에 최적인 구성으로 동적으로 변경할 수 있고, 각종 소프트웨어를 실행할 때, 높은 적중률이 얻어지는 캐시시스템을 구성할 수 있다. 따라서, 각종 소프트웨어 또는 애플리케이션을 더욱 짧은 처리 시간으로 실행할 수 있는 집적회로장치를 제공할 수 있다.
본 발명의 처리유닛 및 집적회로장치는 여러 가지 데이터처리를 실행할 수 있는 시스템 LSI 또는 ASIC 등으로서 제공할 수 있다. 또, 본 발명의 처리유닛 및 집적회로장치는 전자회로에 한정되는 것이 아니라, 광회로 또는 광전자회로에도 적용할 수 있다. 본 발명의 집적회로장치는 재구성 가능한 하드웨어에 의해 데이터처리를 고속으로 실행할 수 있으므로, 네트워크 처리나 화상처리 등의 고속성 및 실시간성이 요구되는 데이터 처리장치에 적합한 것이다.

Claims (40)

  1. 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와,
    적어도 하나의 데이터 흐름이 형성되며, 상기 적어도 하나의 데이터 흐름 중 적어도 일부를 재구성할 수 있는 처리유닛을 갖고,
    상기 처리유닛은 상기 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 데이터 처리구획과,
    상기 제 1 메모리와 상기 데이터 처리구획간에 입력 및/또는 출력되는 데이터의 제 1 어드레스를 출력하는 제 1 어드레스 출력구획과,
    상기 제 2 메모리와 상기 제 1 메모리간에 입력 및/또는 출력되는 데이터의 제 2 어드레스를 출력하는 제 2 어드레스 출력구획을 구비하고 있고,
    상기 데이터 처리구획에 형성되는 데이터 흐름의 구성 또는 처리결과에 따라, 상기 제 1 어드레스 출력구획 및/또는 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하여, 상기 제 1 메모리 및/또는 제 2 메모리에 대한 액세스방법을 결정하는 집적회로장치.
  2. 제 1 항에 있어서,
    상기 제 1 어드레스는 상기 제 1 메모리의 어드레스이고, 상기 제 2 어드레스는 상기 제 2 메모리의 어드레스인 집적회로장치.
  3. 제 1 항에 있어서,
    상기 제 1 어드레스 출력구획 및 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하고, 상기 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 관련하여 기능하는 구성과, 상기 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 독립적으로 기능하는 구성으로 변경할 수 있는 집적회로장치.
  4. 제 1 항에 있어서,
    상기 제 1 메모리는 독립적으로 입출력할 수 있는 복수의 저장구획을 구비하고 있는 집적회로장치.
  5. 제 1 항에 있어서,
    상기 제 1 메모리는 상기 데이터 처리구획에 입력되는 데이터를 저장하는 제 1 입력 메모리와, 상기 데이터 처리구획으로부터 출력된 데이터를 저장하는 제 1 출력 메모리를 구비하고 있는 집적회로장치.
  6. 제 1 항에 있어서,
    상기 제 1 메모리와 상기 데이터 처리구획간의 입력 및/또는 출력을 관리하는 제 1 조정유닛을 갖는 집적회로장치.
  7. 제 6 항에 있어서,
    상기 제 1 조정유닛은 상기 데이터 처리구획과의 사이의 입력 또는 출력 조건을 만족하지 않을 경우에 정지신호를 상기 데이터 처리구획으로 출력하는 기능을 구비하고 있는 집적회로장치.
  8. 제 7 항에 있어서,
    상기 데이터 처리구획은 상기 정지신호에 따라, 상기 데이터 처리구획에 형성된 적어도 하나의 데이터 흐름의 처리를 정지하는 기능을 구비하고 있는 집적회로장치.
  9. 제 6 항에 있어서,
    상기 제 1 메모리는 상기 데이터 처리구획에 입력되는 데이터를 저장하는 제 1 입력 메모리와, 상기 데이터 처리구획으로부터 출력된 데이터를 저장하는 제 1 출력 메모리를 구비하고 있고,
    상기 제 1 조정유닛은 상기 제 1 입력 메모리로부터 상기 데이터 처리구획으로의 데이터의 전송을 관리하는 제 1 입력 조정유닛과, 상기 데이터 처리구획으로부터 상기 제 1 출력 메모리로의 데이터의 전송을 관리하는 제 1 출력 조정유닛을 구비하고 있는 집적회로장치.
  10. 제 6 항에 있어서,
    상기 제 1 메모리는 독립적으로 입출력할 수 있는 복수의 저장구획을 구비하고 있고,
    상기 제 1 조정유닛은 상기 복수의 저장구획의 각각을 독립적으로 관리하는 기능을 구비하고 있는 집적회로장치.
  11. 제 6 항에 있어서,
    상기 제 1 메모리는 독립적으로 입출력할 수 있는 복수의 저장구획을 구비하고 있고,
    상기 제 1 조정유닛은 상기 복수의 저장구획을 관련지어 관리하는 기능을 구비하고 있는 집적회로장치.
  12. 제 1 항에 있어서,
    상기 데이터 처리구획에는 복수의 데이터 흐름을 구성할 수 있고, 또 복수의 상기 제 1 메모리를 가지며,
    상기 처리유닛에는 각각의 상기 제 1 메모리에 대응하는 상기 제 1 및 제 2 어드레스 출력구획이 형성되는 집적회로장치.
  13. 제 12 항에 있어서,
    상기 제 2 메모리와 상기 복수의 제 1 메모리간의 입출력을 관리하는 제 2 조정유닛을 가지며, 상기 제 2 어드레스는 상기 제 2 조정유닛에 공급되는 집적회로장치.
  14. 제 1 항에 있어서,
    상기 처리유닛은 기능을 변경할 수 있는 복수의 단일 종류의 논리요소와, 이들 논리요소를 접속하는 배선군(群)을 구비하고 있는 집적회로장치.
  15. 제 1 항에 있어서,
    상기 처리유닛은 각각 다른 특정한 처리에 적합한 내부 데이터 경로를 구비한 복수 종류의 전용 처리 요소와, 이들 전용 처리 요소를 접속하는 배선군을 구비하고 있는 집적회로장치.
  16. 제 15 항에 있어서,
    상기 처리유닛은 어드레스를 출력하는 데에 적합한 상기 내부 데이터 경로를 구비한 상기 전용 처리 요소를 구비하고 있는 집적회로장치.
  17. 제 15 항에 있어서,
    상기 전용 처리 요소는 상기 내부 데이터 경로의 일부를 선택하는 수단과, 상기 내부 데이터 경로의 선택을 기억하는 구성 메모리(configuration memory)를 구비하고 있는 집적회로장치.
  18. 제 17 항에 있어서,
    상기 구성 메모리의 내용을 재기입하는 제어유닛을 갖는 집적회로장치.
  19. 제 1 항에 있어서,
    상기 처리유닛의 데이터 흐름 중 적어도 일부의 변경을 지시하는 제어유닛을 갖는 집적회로장치.
  20. 제 19 항에 있어서,
    상기 제어유닛은 상기 데이터 처리구획, 제 1 어드레스 출력구획 또는 상기 제 2 어드레스 출력구획의 데이터 흐름의 변경을 독립적으로 지시할 수 있는 집적회로장치.
  21. 제 19 항에 있어서,
    상기 제어유닛을 제어하는 프로그램 코드를 기억하는 코드 메모리를 갖는 집적회로장치.
  22. 제 1 항에 있어서,
    제 3 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 상기 제 2 메모리, 및
    상기 제 3 메모리와 상기 제 2 메모리간에 입력 및/또는 출력되는 데이터의 제 3 어드레스를 출력하는 제 3 어드레스 출력수단을 갖는 집적회로장치.
  23. 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와,
    상기 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 적어도 하나의 데이터 흐름이 형성되는 처리유닛과,
    상기 제 1 메모리와 상기 처리유닛간의 데이터의 입력 및/또는 출력을 관리하는 제 1 조정유닛을 갖고,
    상기 제 1 조정유닛은 상기 처리유닛과의 사이의 데이터의 입력 또는 출력 조건을 만족하지 않을 경우에 정지신호를 상기 처리유닛으로 출력하는 기능을 구비하고,
    상기 처리유닛은 상기 정지신호에 따라 상기 적어도 하나의 데이터 흐름의 처리를 정지하는 기능을 구비하고 있는 집적회로장치.
  24. 제 23 항에 있어서,
    상기 처리유닛은 상기 적어도 하나의 데이터 흐름의 적어도 일부를 변경할 수 있는 집적회로장치.
  25. 제 23 항에 있어서,
    상기 제 1 메모리는 상기 처리유닛에 입력되는 데이터를 저장하는 제 1 입력 메모리와, 상기 처리유닛으로부터 출력된 데이터를 저장하는 제 1 출력 메모리를 구비하고 있고,
    상기 제 1 조정유닛은 상기 제 1 입력 메모리로부터 상기 처리유닛으로의 데이터 전송을 관리하는 제 1 입력 조정 유닛과, 상기 처리유닛으로부터 상기 제 1 출력 메모리로의 데이터 전송을 관리하는 제 1 출력 조정 유닛을 구비하고 있는 집적회로장치.
  26. 제 23 항에 있어서,
    상기 제 1 메모리는 독립적으로 입출력할 수 있는 복수의 저장구획을 구비하고 있고,
    상기 제 1 조정유닛은 상기 복수의 저장구획의 각각을 독립적으로 관리하는 기능을 구비하고 있는 집적회로장치.
  27. 제 23 항에 있어서,
    상기 제 1 메모리는 독립적으로 입출력할 수 있는 복수의 저장구획을 구비하고 있고,
    상기 제 1 조정유닛은 상기 복수의 저장구획을 관련지어 관리하는 기능을 구비하고 있는 집적회로장치.
  28. 적어도 하나의 데이터 흐름이 형성되고, 상기 적어도 하나의 데이터 흐름 중 적어도 일부를 재구성할 수 있는 처리유닛으로서,
    제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 데이터 처리구획과,
    상기 제 1 메모리와 상기 데이터 처리구획간에 입력 및/또는 출력되는 데이터의 제 1 어드레스를 출력하는 제 1 어드레스 출력구획과,
    상기 제 2 메모리와 상기 제 1 메모리간에 입력 및/또는 출력되는 데이터의 제 2 어드레스를 출력하는 제 2 어드레스 출력구획을 갖고,
    상기 데이터 처리구획에 형성되는 데이터 흐름의 구성 또는 처리결과에 따라, 상기 제 1 어드레스 출력구획 및/또는 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하고, 상기 제 1 메모리 및/또는 제 2 메모리에 대한 액세스방법을 결정하는 처리유닛.
  29. 제 28 항에 있어서,
    상기 제 1 어드레스 출력구획 및 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하고, 상기 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 관련하여 기능하는 구성과, 상기 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 독립적으로 기능하는 구성으로 변경할 수 있는 처리유닛.
  30. 제 28 항에 있어서,
    상기 데이터 처리구획에는 복수의 데이터 흐름을 구성할 수 있고, 또 복수의 상기 제 1 메모리의 각각에 대응하는 상기 제 1 및 제 2 어드레스 출력구획을 구비하고 있는 처리유닛.
  31. 제 28 항에 있어서,
    각각 다른 특정한 처리에 적합한 내부 데이터 경로를 구비한 복수 종류의 전용 처리 요소와, 이들 전용 처리 요소를 접속하는 배선군을 갖는 처리유닛.
  32. 제 31 항에 있어서,
    어드레스를 출력하는 데에 적합한 상기 내부 데이터 경로를 구비한 상기 전용 처리 요소를 갖는 처리유닛.
  33. 제 31 항에 기재된 처리유닛과,
    상기 제 1 메모리를 갖는 처리장치.
  34. 제 33 항에 있어서,
    상기 처리유닛의 데이터 흐름 중 적어도 일부의 변경을 지시하는 제어유닛을 더 포함하는 처리장치.
  35. 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모리와, 적어도 하나의 데이터 흐름이 형성되고, 상기 적어도 하나의 데이터 흐름 중 적어도 일부를 재구성할 수 있는 처리유닛을 갖는 집적회로장치의 제어방법으로서,
    상기 처리유닛에 대하여, 상기 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 데이터 처리구획과, 상기 제 1 메모리와 상기 데이터 처리구획간에 입력 및/또는 출력되는 데이터의 제 1 어드레스를 출력하는 제 1 어드레스 출력구획과, 상기 제 2 메모리와 상기 제 1 메모리간에 입력 및/또는 출력되는 데이터의 제 2 어드레스를 출력하는 제 2 어드레스 출력구획을 구성하도록 지시하고, 상기 데이터 처리구획에 형성되는 데이터 흐름의 구성 또는 처리결과에 따라, 상기 제 1 어드레스 출력구획 및/또는 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하여, 상기 제 1 메모리 및/또는 제 2 메모리에 대한 액세스방법을 결정하는 공정을 갖는 집적회로장치의 제어방법.
  36. 제 35 항에 있어서,
    상기 지시 공정은 상기 데이터 처리구획, 상기 제 1 어드레스 출력구획 또는 제 2 어드레스 출력구획의 데이터 흐름의 변경을 독립적으로 지시하는 공정을 구비하고 있는 집적회로장치 제어방법.
  37. 제 35 항에 있어서,
    상기 지시 공정에서는 상기 제 1 어드레스 출력구획 및 상기 제 2 어드레스 출력구획에 관한 데이터 흐름 중 적어도 일부를 재구성하고, 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 관련하여 기능하거나, 또는 상기 제 2 어드레스 출력구획과 상기 제 1 어드레스 출력구획이 독립적으로 기능하도록 지시하는 집적회로장치 제어방법.
  38. 제 35 항에 있어서,
    상기 데이터 처리구획에는 복수의 데이터 흐름을 구성할 수 있고, 또 상기 지시 공정에서는 복수의 상기 제 1 메모리의 각각에 대응하는 상기 제 1 및 제 2 어드레스 출력구획을 형성하도록 지시하는 집적회로장치 제어방법.
  39. 제 35 항에 있어서,
    상기 데이터 처리구획에 적어도 하나의 데이터 흐름을 형성하고, 상기 제 1 메모리와 입력 및/또는 출력되는 데이터에 관련하는 처리를 실행하는 공정을 갖고, 상기 실행하는 공정에서는 상기 제 1 메모리와 상기 데이터 처리구획간의 입력 및/또는 출력을 관리하는 제 1 조정유닛이 입력 또는 출력 조건을 만족하지 않을 경우에 출력하는 정지신호에 따라, 상기 데이터 구획에 형성된 적어도 하나의 데이터 흐름의 처리를 정지하는 집적회로장치 제어방법.
  40. 제 2 메모리와의 사이에서 데이터를 입력 및/또는 출력할 수 있는 제 1 메모 리와, 상기 제 1 메모리와의 사이에서 입력 및/또는 출력되는 데이터를 처리하는 적어도 하나의 데이터 흐름이 형성되는 처리유닛을 갖는 집적회로장치의 제어방법으로서,
    상기 제 1 메모리와 입력 및/또는 출력되는 데이터에 관련하는 처리를 실행하는 공정을 갖고, 이 실행하는 공정에서는 상기 제 1 메모리와 상기 처리유닛간의 입력 및/또는 출력을 관리하는 제 1 조정유닛이 입력 또는 출력 조건을 만족하지 않을 경우에 출력하는 정지신호에 따라, 상기 적어도 하나의 데이터 흐름의 처리를 정지하는 집적회로장치 제어방법.
KR1020047000422A 2001-07-12 2002-07-11 집적회로장치 KR100912437B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2001-00212545 2001-07-12
JP2001212545 2001-07-12
PCT/JP2002/007076 WO2003007155A1 (fr) 2001-07-12 2002-07-11 Dispositif a circuit integre

Publications (2)

Publication Number Publication Date
KR20040017291A KR20040017291A (ko) 2004-02-26
KR100912437B1 true KR100912437B1 (ko) 2009-08-14

Family

ID=19047692

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047000422A KR100912437B1 (ko) 2001-07-12 2002-07-11 집적회로장치

Country Status (9)

Country Link
US (1) US6868017B2 (ko)
EP (1) EP1416388A4 (ko)
JP (1) JP4188233B2 (ko)
KR (1) KR100912437B1 (ko)
CN (1) CN1526100A (ko)
AU (1) AU2002318809B2 (ko)
CA (1) CA2451003A1 (ko)
TW (1) TW577020B (ko)
WO (1) WO2003007155A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993674B2 (en) * 2001-12-27 2006-01-31 Pacific Design, Inc. System LSI architecture and method for controlling the clock of a data processing system through the use of instructions
US7197620B1 (en) * 2002-12-10 2007-03-27 Unisys Corporation Sparse matrix paging system
JP4175124B2 (ja) 2003-01-24 2008-11-05 ソニー株式会社 画像信号処理装置
JP2005018626A (ja) 2003-06-27 2005-01-20 Ip Flex Kk 並列処理システムの生成方法
US20050283550A1 (en) * 2004-06-18 2005-12-22 Honeywell International Inc. Method and architecture of a coupling system for microprocessors and logic devices
JP4451733B2 (ja) * 2004-06-30 2010-04-14 富士通マイクロエレクトロニクス株式会社 半導体装置
US7929518B2 (en) * 2004-07-15 2011-04-19 Broadcom Corporation Method and system for a gigabit Ethernet IP telephone chip with integrated DDR interface
JP4569284B2 (ja) * 2004-12-10 2010-10-27 富士ゼロックス株式会社 集積回路のデバッグ方法、デバッグプログラム
US7493578B1 (en) * 2005-03-18 2009-02-17 Xilinx, Inc. Correlation of data from design analysis tools with design blocks in a high-level modeling system
US7496869B1 (en) 2005-10-04 2009-02-24 Xilinx, Inc. Method and apparatus for implementing a program language description of a circuit design for an integrated circuit
US7363599B1 (en) 2005-10-04 2008-04-22 Xilinx, Inc. Method and system for matching a hierarchical identifier
US8402409B1 (en) 2006-03-10 2013-03-19 Xilinx, Inc. Method and apparatus for supporting run-time reconfiguration in a programmable logic integrated circuit
US7380232B1 (en) 2006-03-10 2008-05-27 Xilinx, Inc. Method and apparatus for designing a system for implementation in a programmable logic device
US7761272B1 (en) 2006-03-10 2010-07-20 Xilinx, Inc. Method and apparatus for processing a dataflow description of a digital processing system
JP5605975B2 (ja) * 2007-06-04 2014-10-15 ピーエスフォー ルクスコ エスエイアールエル 半導体装置及びその製造方法、並びに、データ処理システム
CN101727434B (zh) * 2008-10-20 2012-06-13 北京大学深圳研究生院 一种特定应用算法专用集成电路结构
CN101727433B (zh) * 2008-10-20 2012-04-25 北京大学深圳研究生院 一种处理器结构
KR101581882B1 (ko) 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
US9270542B2 (en) * 2009-07-31 2016-02-23 Ixia Apparatus and methods for forwarding data packets captured from a network
US8134927B2 (en) * 2009-07-31 2012-03-13 Ixia Apparatus and methods for capturing data packets from a network
WO2011066459A2 (en) * 2009-11-25 2011-06-03 Howard University Multiple-memory application-specific digital signal processor
EP2561645B1 (en) 2010-04-23 2020-02-26 Keysight Technologies Singapore (Sales) Pte. Ltd. Integrated network data collection arrangement
US10089277B2 (en) 2011-06-24 2018-10-02 Robert Keith Mykland Configurable circuit array
US9158544B2 (en) 2011-06-24 2015-10-13 Robert Keith Mykland System and method for performing a branch object conversion to program configurable logic circuitry
US8869123B2 (en) 2011-06-24 2014-10-21 Robert Keith Mykland System and method for applying a sequence of operations code to program configurable logic circuitry
US9633160B2 (en) 2012-06-11 2017-04-25 Robert Keith Mykland Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor
US9304770B2 (en) 2011-11-21 2016-04-05 Robert Keith Mykland Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US10904075B2 (en) 2012-07-02 2021-01-26 Keysight Technologies Singapore (Sales) Pte. Ltd. Preconfigured filters, dynamic updates and cloud based configurations in a network access switch
US9081686B2 (en) * 2012-11-19 2015-07-14 Vmware, Inc. Coordinated hypervisor staging of I/O data for storage devices on external cache devices
US9667256B2 (en) * 2013-03-01 2017-05-30 Axion Research Inc. Data processing device and control method therefor
US9275203B1 (en) 2014-02-03 2016-03-01 Purdue Research Foundation Methods, systems, and computer readable media for preventing software piracy and protecting digital documents using same
US9571296B2 (en) 2014-04-30 2017-02-14 Ixia Methods and apparatuses for abstracting filters in a network visibility infrastructure
US9967150B2 (en) 2014-04-30 2018-05-08 Keysight Technologies Singapore (Holdings) Pte. Ltd. Methods and apparatuses for implementing network visibility infrastructure
US10404459B2 (en) * 2017-02-09 2019-09-03 Intel Corporation Technologies for elliptic curve cryptography hardware acceleration
EP3796145A1 (en) * 2019-09-19 2021-03-24 MyScript A method and correspond device for selecting graphical objects

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS649548A (en) 1987-07-01 1989-01-12 Nec Corp Cache memory device
JPH01273132A (ja) 1988-04-25 1989-11-01 Nec Corp マイクロプロセッサ
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JP3106998B2 (ja) * 1997-04-11 2000-11-06 日本電気株式会社 メモリ付加型プログラマブルロジックlsi
JPH11143774A (ja) 1997-11-06 1999-05-28 Hitachi Ltd キャッシュ制御機構
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6417691B1 (en) * 2000-08-29 2002-07-09 Motorola, Inc. Communication device with configurable module interface
JP2002163150A (ja) * 2000-11-28 2002-06-07 Toshiba Corp プロセッサ

Also Published As

Publication number Publication date
TW577020B (en) 2004-02-21
EP1416388A1 (en) 2004-05-06
US6868017B2 (en) 2005-03-15
WO2003007155A1 (fr) 2003-01-23
JP4188233B2 (ja) 2008-11-26
KR20040017291A (ko) 2004-02-26
CN1526100A (zh) 2004-09-01
AU2002318809B2 (en) 2008-02-28
JPWO2003007155A1 (ja) 2004-11-04
CA2451003A1 (en) 2003-01-23
EP1416388A4 (en) 2006-02-08
US20040015613A1 (en) 2004-01-22

Similar Documents

Publication Publication Date Title
KR100912437B1 (ko) 집적회로장치
US9298643B2 (en) Performance and power improvement on DMA writes to level two combined cache/SRAM that is cached in level one data cache and line is valid and dirty
US7444276B2 (en) Hardware acceleration system for logic simulation using shift register as local cache
US8205066B2 (en) Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US20100115233A1 (en) Dynamically-selectable vector register partitioning
US5933855A (en) Shared, reconfigurable memory architectures for digital signal processing
US20220350776A1 (en) Coprocessors with Bypass Optimization, Variable Grid Architecture, and Fused Vector Operations
US20090006718A1 (en) System and method for programmable bank selection for banked memory subsystems
Yazdanbakhsh et al. In-dram near-data approximate acceleration for gpus
US20070073999A1 (en) Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
US6101589A (en) High performance shared cache
US6606684B1 (en) Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US10846091B2 (en) Coprocessor with distributed register
US6240487B1 (en) Integrated cache buffers
JPH0282330A (ja) ムーブアウト・システム
EP0166192A2 (en) High-speed buffer store arrangement for fast transfer of data
JP2010250511A (ja) キャッシュメモリ装置
JP3952856B2 (ja) キャッシュ方法
KR100334298B1 (ko) 기억 소자
WO1999013397A1 (en) Fifo memory device using shared reconfigurable memory block
US7124236B1 (en) Microprocessor including bank-pipelined cache with asynchronous data blocks
WO1999060480A1 (en) Shared, reconfigurable cache memory execution subsystem
Bause et al. A Configurable and Efficient Memory Hierarchy for Neural Network Hardware Accelerator
Shao Reducing main memory access latency through SDRAM address mapping techniques and access reordering mechanisms
Lewis et al. Exploiting typical DSP data access patterns and asynchrony for a low power multiported register bank

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130719

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140721

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160721

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170720

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180719

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190722

Year of fee payment: 11