KR20060113560A - 데이터 프로세싱 장치 및 데이터 프로세싱 방법 - Google Patents

데이터 프로세싱 장치 및 데이터 프로세싱 방법 Download PDF

Info

Publication number
KR20060113560A
KR20060113560A KR1020060039062A KR20060039062A KR20060113560A KR 20060113560 A KR20060113560 A KR 20060113560A KR 1020060039062 A KR1020060039062 A KR 1020060039062A KR 20060039062 A KR20060039062 A KR 20060039062A KR 20060113560 A KR20060113560 A KR 20060113560A
Authority
KR
South Korea
Prior art keywords
processor
program
cache memory
memory
external ram
Prior art date
Application number
KR1020060039062A
Other languages
English (en)
Other versions
KR100861896B1 (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 KR20060113560A publication Critical patent/KR20060113560A/ko
Application granted granted Critical
Publication of KR100861896B1 publication Critical patent/KR100861896B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

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

Abstract

복수의 프로세서들을 구비하는 데이터 프로세싱 장치가 제공된다. 데이터 프로세싱 장치는 제 1 프로세서, 제 2 프로세서, 및 제 1 프로세서가 데이터를 기입/판독할 수 있는 외부 램을 포함하며, 제 1 프로세서는 외부 램 상의 주소와 관련되어 제 1 프로세서에서 사용되는 데이터를 저장하는 캐쉬 메모리를 구비하고, 데이터는 외부 램을 통하지 않고 제 2 프로세서에 의해서 캐쉬 메모리에 기입된다.
데이터 프로세싱 장치, 캐쉬 메모리

Description

데이터 프로세싱 장치 및 데이터 프로세싱 방법{DATA PROCESSING APPARATUS AND DATA PROCESSING METHOD}
도 1 은 본 발명의 일 실시형태에 따른 데이터 프로세싱 장치의 시스템 구성의 블록도.
도 2 는 본 발명의 일 실시형태에 따른 데이터 프로세싱 장치의 메모리 맵을 도시하는 도면.
도 3 은 본 발명의 일 실시형태에 따른 데이터 프로세싱 장치의 프로그램 캐쉬 메모리를 초기화하는 순서를 도시하는 흐름도.
도 4 는 본 발명의 일 실시형태에 따른 데이터 프로세싱 장치의 프로그램 캐쉬 메모리를 초기화하는 순서를 도시하는 흐름도.
도 5 는 본 발명의 일 실시형태에 따른 프로그램 캐쉬 메모리를 초기화하는 프로그램 코드가 외부 램에 기입될 때, 데이터 프로세싱 장치의 프로그램 캐쉬 메모리 내에 저장되는 데이터를 도시하는 도면.
도 6 은 본 발명의 일 실시형태에 따른 데이터 프로세싱 장치에서 프로그램 캐쉬 메모리 내에 저장된 데이터 및 초기화 프로그램의 실행 후, 외부 램을 도시하는 도면.
도 7 은 본 발명의 제 1 실시형태에 따른 데이터 프로세싱 장치의 구성을 도 시하는 블록도.
도 8 은 본 발명의 제 1 실시형태에 따른 데이터 프로세싱 장치에서 프로그램을 기입하는 루트 (route) 를 도시하는 도면.
도 9 는 본 발명의 제 2 실시형태에 따른 데이터 프로세싱 장치에서 프로그램을 기입하는 루트를 도시하는 도면.
도 10 은 본 발명의 제 3 실시형태에 따른 데이터 프로세싱 장치에서 프로그램을 기입하는 루트를 도시한다.
도 11 은 일반적인 프로그램 캐쉬 메모리의 구성을 도시하는 도면.
도 12 는 종래의 데이터 프로세싱 장치의 시스템 구성을 도시하는 블록도.
도 13 은 종래의 데이터 프로세싱 장치의 메모리 맵을 도시하는 도면.
도 14 는 종래의 테이터 프로세싱 장치의 프로그램 캐쉬 메모리를 초기화하는 과정의 흐름도.
도 15 는 종래의 데이터 프로세싱 장치의 프로그램 캐쉬 메모리를 초기화하는 과정의 흐름도.
(도면의 주요 부분에 대한 부호의 설명)
100 : 제 1 프로세서 120 : 제 2 프로세서
110, 130 : 산술 논리 유닛 111, 131 : 메모리 제어기
112 : 프로그램 캐쉬 메모리 113, 132 : 내부 프로그램 메모리
114, 133 : 롬 140 : 제 1 인터럽트 신호
141 : 제 2 인터럽트 신호 150 : 외부 램
본 발명은 데이터 프로세싱 장치 및 데이터 프로세싱 방법에 관한 것이다. 보다 상세하게는, 본 발명은 복수의 프로세서들을 구비하는 데이터 프로세싱 장치 및 그것에서 사용되는 데이터 프로세싱 방법에 관한 것이다.
최근에, 복수의 프로세서 코어 모듈, 주변 램 (RAM), 및 주변 기능성 모듈을 하나의 LSI 칩 상에 마운팅함으로써 준비된 칩이 광범위하게 사용되고 있다. 또한, 기능이 진보됨에 따라서, 상기 프로세서 코어 모듈은 많은 경우에 프로그램 캐쉬 메모리를 합체시킨다. 일반적인 램들보다 고속에서 작동하는 프로그램 캐쉬 메모리를 제공함에 따라서, 프로세서의 프로세싱 속도는 증가된다. 미심사 일본 공개 특허 공보 제 H11-306029 호는 캐쉬 메모리를 갖는 프로세서들에 대한 인터럽트 요구를 발생시키는 인터럽트 방법을 개시한다. 이 방법에 따르면, 인터럽트 프로세싱을 실행하는 프로그램은 예상된 시간에 메인 메모리로부터 캐쉬 메모리로 전달된다.
부수적으로, 프로세서의 프로그램 메모리의 용량을 초과하는 프로그램 코드를 실행시키는 방법의 문제에 대한 가장 간단한 해법은 프로세서의 프로그램 메모리 용량 또는 주변 램의 사이즈를 증가시키는 것이다.
그러나, LSI 칩은 수율 및 패키징 면적의 관점에서 설치된 프로세서 코어 또는 램의 크기를 감소시킬 필요가 있다. 또한, 설치된 프로세서 코어 모듈은 재 사용 가능한 부분으로 제공된다. 따라서, 하나의 LSI 칩으로부터 또 다른 칩으로 프로그램 메모리 용량을 변경하는 프로세서 코어의 개발은 비용 면에서 난점이 있다.
이 배경에 기초하여, 프로그램 메모리 용량을 증가시키는 것과 같이 하드웨어 구성을 변화시키지 않고, 내부 프로그램 메모리 용량을 초과하는 프로그램 코드를 실행하는 기술이 필요하다. 즉, 프로세서를 갖는 일부 데이터 프로세싱 장치들에서, 내부 프로그램 메모리 용량은 실행되는 프로그램의 메모리 용량보다는 작은 것이 바람직하다.
도 12 를 참조하여, 복수의 프로세서들을 갖는 종래의 데이터 프로세싱 장치의 시스템 구성이 설명된다. 도 12 는 종래의 데이터 프로세싱 장치의 시스템 구성의 블록도이다. 시스템은 제 1 프로세서 (600), 제 2 프로세서 (620), 및 외부 램 (650) 을 포함하다. 제 1 프로세서 (600) 와 외부 램 (650) 은 메모리 버스 (memory bus) 를 통하여 접속되고 제 2 프로세서 (620) 와 외부 램 (650) 은 메모리 버스를 통하여 접속된다. 제 2 프로세서 (650) 는 제 1 프로세서 (600) 에 인터럽트 신호 (640) 를 전송할 수 있다.
제 1 프로세서 (600) 는 프로그램을 저장하기 위한 내부 프로그램 메모리 (613) 및 외부 램 (650) 에 대한 프로그램 인출 (program fetch) 액세스를 통해 인출 (fetch) 되는 프로그램 코드를 저장하기 위한 프로그램 캐쉬 메모리 (612) 를 포함한다. 메모리 제어기 (611) 는 프로그램 캐쉬 메모리 (612), 내부 프로그램 메모리 (613) 및 외부 램 (650) 에/으로부터 프로그램 코드를 기입/판독하는 프 로세스를 제어한다. 산술 논리 유닛 (610) 은 내부 프로그램 메모리 (613) 등에 저장된 프로그램 코드를 판독하고 프로그램을 실행하기 위해서 메모리 제어기를 제어한다.
제 2 프로세서 (620) 는 프로그램을 저장하는 내부 프로그램 메모리 (632) 를 포함한다. 메모리 제어기 (631) 는 내부 프로그램 메모리 (632) 및 외부 램 (650) 에/으로부터 프로그램 코드를 기입/판독하는 프로세스를 제어한다. 산술 논리 유닛 (630) 은 내부 프로그램 메모리 (632) 등에 저장된 프로그램 코드를 판독하고 프로그램을 실행하기 위해서 메모리 제어기 (631) 를 제어한다.
도 13 은 제 1 프로세서 (600) 및 제 2 프로세서 (620) 의 메모리 맵 (memory map) 을 도시한다. 외부 램 (650) 은 제 1 프로세서 (600) 와 제 2 프로세서 (620) 의 각각의 메모리 맵에 맵핑 (mapping) 된다. 즉, 외부 램 (700) 은 제 1 프로세서 메모리 맵에 맵핑되고, 외부 램 (711) 은 제 2 프로세서 메모리 맵에 맵핑된다. 따라서, 제 1 프로세서 (600) 와 제 2 프로세서 (620) 는 임의적으로 외부 램 (650) 에/으로부터 데이터 등을 판독/기입할 수 있다. 또한, 제 1 프로세서 (600) 의 내부 프로그램 메모리 (613) 의 용량을 초과하는 제 2 프로세서 프로그램 코드가 제 2 프로세서 (620) 의 메모리 맵 상에 맵핑된 제 1 프로세서 프로그램 코드 테이블 데이터 (710) 에 저장된다.
도 11 을 참조하여, 일반적인 프로그램 캐쉬 메모리의 동작이 설명된다. 도 11 은 프로그램 캐쉬 메모리의 구조를 도시한다. 프로세서가 외부 램 (650) 에 대한 프로그램 인출 액세스를 실행할 때, 하드웨어 구성요소는 인출된 프로그램 코드를 프로그램 캐쉬 메모리 영역들 (510, 511, 512, 및 513) 에 자동적으로 복사한다. 복사하는 동작 동안, 인출된 프로그램 코드 및 인접한 프로그램 코드들은 L 바이트 단위로 집합적으로 복사된다. 이와 동시에, 메모리 영역 (500) 을 복사 목적지 (copy destination) 로서 관리하는 프로그램 캐쉬 메모리 태그들 (530 내지 533) 와 관련하여, 하드웨어 구성요소는 프로그램 코드가 복사되는 외부 램의 주소를 기록한다.
도 14 및 15 는 종래의 프로그램의 흐름도들이다. 도 14 는 제 1 프로세서 (600) 의 동작의 흐름도이고, 도 15 는 제 2 프로세서 (620) 의 동작의 흐름도이다. 먼저, 제 2 프로세서 (620) 는 프로그램 코드들 (제 1 프로그램 코드들 중 제 1 프로세서의 내부 프로그램 메모리 (613) 의 용량을 초과하는 코드들) 을 외부 램 (711) 으로 복사하는 것을 시작한다 (단계 S811). 이 방식으로, 외부 램 (650) 은 상기 프로그램 코드들을 저장한다. 프로그램 코드 (테이블 데이터 (710)) 를 복사하는 것을 완료한 후, 제 2 프로세서 (620) 는 인터럽트 신호 (640) 를 사용하여 제 1 프로세서 (600) 에게 프로그램 코드 (테이블 데이터 (710)) 의 기입 완료를 통지한다 (단계 S812). 제 1 프로세서 (600) 는 단계 801 에서 인터럽트 신호 (640) 가 입력되는 것을 대기하고, 신호 입력의 결과로서 정상 프로그램 실행 상태로 쉬프트 (shift) 된다 (단계 802). 그 후에, 제 1 프로세서 (600) 가 외부 램 (650) 상의 프로그램 코드들을 실행한다면, 실행된 프로그램 코드들은 하드웨어 동작을 통하여 외부 램 (650) 으로부터 프로그램 캐쉬 메모리 (612) 로 순차적으로 복사된다.
관련 기술에서, 외부 램 (650) 은 제 1 프로세서 (100) 의 내부 프로그램 메모리 (613) 를 오버플로우 (overflow) 하는 프로그램 코드들을 저장한다. 그 결과, 외부 램 (650) 은 다른 목적들을 위해서는 사용될 수 없다는 점에서 문제가 발생하여, 또 다른 램이 이런 다른 목적들을 위해서 부가되어야 한다. 이 문제는 다음과 같이 야기된다.
외부 램 (650) 에 저장된 모든 제 1 프로세서 프로그램 코드들이 제 1 프로세서 프로그램 캐쉬 메모리 (612) 로 복사되지 않는다면, 제 1 프로세서 메모리 제어기 (611) 는 인출 액세스 (fetch access) 를 실행할 가능성이 있다. 따라서, 외부 램 (650) 에 저장된 데이터는 제 1 프로세서 프로그램 코드들을 손상시키지 않기 위해서 재기입될 수 없다. 여기에서, 제 1 프로세서 (600) 는 저장된 모든 데이터를 외부 램 (650) 으로부터 제 1 프로세서 프로그램 캐쉬 메모리 (612) 로 복사하기 위해서 외부 램 (650) 상에서 프로그램 코드들을 완전히 실행시키는 것이 필요하다. 즉, 내부 프로그램 메모리 (613) 내에 저장될 수 없는 모든 프로그램 코드들을 판독하는 것과 판독된 코드들을 프로그램 캐쉬 메모리 (612) 에 기입하는 것이 필요하다.
그러나, 범용 프로그램 코드들의 조건적 분기 구조의 관점에서 드물게 실행되는 프로그램 코드들과 그 실행 조건들이 있다는 것을 생각할 수 있다. 따라서, 제 1 프로세서 (600) 가 완전하게 프로그램 코드들을 실행하는지 여부를 결정하는 것은 난해하다. 즉, 외부 램 (650) 상의 모든 프로그램 코드들이 제 1 프 로세서 프로그램 캐쉬 메모리 (612) 에 복사되는지 여부를 결정하는 것은 난해하다. 따라서, 외부 램 (650) 내에 저장된 제 1 프로세서 프로그램 코드들은 재기입될 수 없다. 그 결과, 외부 램 (650) 의 일부분이 프로그램 코드들을 저장하기 위해서 점유된다. 이 경우에, 내부 프로그램 메모리 (613), 외부 램 (650) 내에 저장될 수 없는 모든 프로그램 코드들을 저장할 필요가 있다. 이것은 외부 램 (650) 의 자유 공간이 감소되는 문제를 발생시키고, 외부 램 용량은 소정의 용량 이하로 감소될 수가 없다.
본 발명의 일 양태에 따르면, 데이터 프로세싱 장치는, 제 1 프로세서, 제 2 프로세서, 및 제 1 프로세서가 데이터를 기입/판독할 수 있는 외부 램 (RAM) 을 포함하며, 제 1 프로세서는 외부 램 상의 주소와 관련되어 제 1 프로세서에서 사용되는 데이터를 저장하는 캐쉬 메모리를 구비하고, 데이터는 외부 램을 통하지 않고 제 2 프로세서에 의해서 캐쉬 메모리에 기입된다. 따라서, 외부 램의 자유 공간이 증가될 수 있고, 외부 램은 컴팩트하게 형성될 수 있다.
본 발명의 제 2 양태에 따르면, 제 1 프로세서, 제 2 프로세서, 및 제 1 프로세서가 기입/판독하는 외부 램을 포함하는 데이터 프로세싱 장치에서 사용되는 데이터 프로세싱 방법은, 제 1 프로세서에 제공된 캐쉬 메모리를 외부 램 상의 주소와 관련시키는 단계; 및 외부 램을 통하지 않고 제 2 프로세서를 사용하여 캐쉬 메모리에 데이터를 기입하는 단계를 포함한다. 따라서, 외부 램의 자유 공간이 증가될 수 있고, 외부 램은 컴팩트하게 형성될 수 있다.
본 발명에 따르면, 프로세서 외부에서 제공되는 외부 램의 용량을 감소시킬 수 있는 데이터 프로세싱 장치와 그것에서 사용되는 데이터 프로세싱 방법을 제공하는 것이 가능하다.
본 발명의 상기 및 다른 목적, 이점 및 특징은 첨부하는 도면과 함께 아래의 상세한 설명으로부터 더욱 명백해질 것이다.
본 발명은 여기에서 예시적인 실시형태들을 참조하여 설명될 것이다. 당업자는 많은 다른 실시형태들이 본 발명의 교시를 사용하여 완성될 수 있고 본 발명은 설명을 위해서 예시된 실시형태들에 한정되지 않는다는 것을 인식할 것이다.
이하에서, 본 발명의 실시형태들이 설명된다. 다음 설명은 본 발명의 실시형태들을 설명하기 위해서 제공되고, 그 설명은 본 발명을 다음 실시형태들에 한정하려는 것으로 해석되어서는 안 된다. 명확한 설명을 위해서, 다음 설명은 적절하게 생략되거나 단순화될 수 있다. 당업자는 본 발명의 범주로부터 벗어나지 않고, 다음 실시형태들의 구성 요소들의 부가, 변화, 및 교환을 쉽게 실행할 수 있을 것이다. 첨부된 도면의 전반에 걸쳐, 동일한 구성요소들은 동일 또는 유사한 참조 부호로 지칭되고, 그것들의 설명이 필요하지 않다면 생략될 수 있다.
도 1 을 참조하여, 본 발명에 따른 데이터 프로세싱 장치의 시스템 구성이 설명된다. 도 1 은 본 발명에 따른 데이터 프로세싱 장치의 시스템 구성을 도시하는 블록도이다. 본 발명에 따른 데이터 프로세싱 장치는 제 1 프로세서 (100) 및 제 2 프로세서 (120) 를 구비하는 LSI 칩을 포함한다. 데이터 프로세싱 장치는 제 1 프로세서 (100), 제 2 프로세서 (120), 및 제 1 프로세서 (100) 와 제 2 프로세서 (120) 의 외부에서 제공되는 외부 램 (150) 을 포함한다. 제 1 프로세서 (100) 및 제 2 프로세서 (120) 는 메모리 버스를 통하여 접속되고, 제 1 프로세서 (100) 및 외부 램 (150) 은 메모리 버스를 통하여 접속된다. 제 1 프로세서 (100) 는 제 1 인터럽트 신호 (140) 를 제 2 프로세서 (120) 에 전송할 수 있고, 제 2 프로세서 (120) 는 제 2 인터럽트 신호 (141) 를 제 1 프로세서 (100) 에 전송할 수 있다.
제 1 프로세서는 산술 논리 유닛 (110), 메모리 제어기 (111), 프로그램 캐쉬 메모리 (112), 내부 프로그램 메모리 (113) 및 롬 (ROM; 114) 을 포함한다. 메모리 제어기 (111) 는 버스 라인을 통해 프로그램 캐쉬 메모리 (112) 와 접속되고, 버스 라인을 통해 내부 프로그램 메모리 (113) 와 접속되고, 버스 라인을 통해 외부 램 (150) 과 접속된다. 메모리 제어기 (111) 는 프로그램 캐쉬 메모리 (112), 내부 프로그램 메모리 (113) 및 외부 램 (150) 으로부터 프로그램 코드들을 판독하는 동작 또는 그것들로 데이터를 기입하는 동작을 제어한다. 산술 논리 유닛 (110) 과 메모리 제어기 (111) 는 버스 라인을 통하여 접속된다. 산술 논리 유닛 (110) 은 내부 프로그램 메모리 (113) 등에 저장된 프로그램 코드들을 판독하기 위해서 메모리 제어기 (111) 를 제어하고 프로그램들을 실행한다. 그 다음, 메모리 제어기 (111) 는 산술 논리 유닛 (110) 의 계산 결과를 외부 램 (150) 에 기입한다. 따라서, 소정의 데이터 프로세싱이 실행 프로그램에 따라서 실행된다. 내부 프로그램 메모리 (113) 보다 고속에서 동작할 수 있는 프로그램 캐쉬 메모리 (112) 를 제공하는 것은 프로세싱 속도를 증가시킨다. 롬 (114) 은 프로그램 캐쉬 메모리 (112) 를 초기화하는 초기화 프로그램을 저장한다. 이 초기화 프로그램은 후술된다.
제 2 프로세서 (120) 는 산술 논리 유닛 (130), 메모리 제어기 (131), 내부 프로그램 메모리 (132) 및 롬 (133) 을 포함한다. 산술 논리 유닛 (130) 은 버스 라인들을 통해 메모리 제어기 (131) 와 접속된다. 메모리 제어기 (131) 는 버스 라인들을 통해 내부 프로그램 메모리 (132) 와 접속된다. 산술 논리 유닛 (130) 은 메모리 제어기 (131) 에 의해서 내부 프로그램 메모리 (132) 로부터 판독된 프로그램 코드에 기초하여 계산을 실행한다. 또한, 메모리 제어기 (131) 는 메모리 버스 라인들을 통해 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 와 접속된다. 메모리 제어기 (131) 는 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 프로그램 코드를 기입한다. 롬 (133) 은 제 1 프로세서 (100) 에 의해서 실행된 실행 프로그램을 저장한다. 롬 (133) 내에 저장된 제 1 프로세서 (100) 에 의해서 실행된 실행 프로그램은, 예를 들면, 다이렉트 메모리 액세스 (Direct Memory Access; 이하 DMA 라 한다) 를 통해 제 1 프로세서 (100) 의 내부 프로그램 메모리 (113) 에 기입된다.
도 2 는 제 1 프로세서 및 제 2 프로세서의 메모리 맵들을 도시한다. 내부 프로그램 메모리 (113) 는 제 1 프로세서 (100) 의 메모리 맵에 맵핑된다. 또한, 외부 램 (150) 은 제 1 프로세서 메모리 맵에 맵핑되고, 임의적으로 제 1 프로세서 (100) 에 기입되거나 제 1 프로세서 (100) 로부터 판독될 수 있다. 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 는 제 2 프로세서 메모리 맵에 맵핑된다. 즉, 제 2 프로세서 메모리 맵은 프로그램 캐쉬 메모리 (211) 를 포함한다. 그러므로, 프로그램 캐쉬 메모리 (112) 상의 데이터는 임의적으로 제 2 프로세서 (120) 에 기입되거나 제 2 프로세서 (120) 로부터 판독될 수 있다. 더욱이, 제 1 프로세서 (100) 의 내부 프로그램 메모리 (113) 를 오버플로우할 수 있는 일부의 제 1 프로세서 프로그램 코드들은 제 2 프로세서 (120) 의 메모리 맵 상에 테이블 데이터 (210) 로서 저장된다. 즉, 내부 프로그램 메모리 (113) 에 기입될 수 없고 롬 (133) 에 저장되는 실행 프로그램 중의 일부 프로그램 코드들이 테이블 데이터 (210) 로서 메모리 맵에 맵핑된다. 메모리 제어기 (111) 는 메모리 맵에 따라서 프로그램 코드 또는 데이터 판독/기입 동작을 실행한다.
다음으로 도 11 을 참조하여, 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 의 구성이 설명된다. 도 11 은 프로그램 캐쉬 메모리 (112) 의 구성을 도시하는 블록도이다. 일반적으로, 프로그램 캐쉬 메모리 (112) 는 프로그램 코드들을 저장하는 메모리 영역 (500) 및 메모리 영역을 관리하는 태그 영역 (520) 을 포함한다. 상기 메모리 영역 (500) 은 n 개의 작은 프로그램 캐쉬 메모리 영역 (510, 511, 512 및 513) 으로 분할된다. 프로그램 캐쉬 메모리 영역들 (510 내지 513) 은 동일한 크기 즉, L 바이트를 갖는다. 메모리 영역 (500) 을 분할함에 의해서 얻어진 프로그램 캐쉬 메모리 영역들 (510, 511, 512 및 513) 을 관리하는 태그 영역 (520) 은, 또한, n 개의 프로그램 캐쉬 메모리 태그들 (530, 531, 532 및 533) 로 분할된다. 메모리 영역들과 메모리 태그들은 프로그램 캐쉬 메모리 영역 (510) 과 프로그램 캐쉬 메모리 태그 (530) 의 쌍 및 프로그램 캐 쉬 메모리 영역 (511) 과 프로그램 캐쉬 메모리 태그 (531) 의 쌍과 같이 쌍들로 동작한다. 즉, 프로그램 캐쉬 메모리 영역들 (510 내지 513) 은 일-대-일 대응으로 프로그램 캐쉬 메모리 태그들 (530 내지 533) 과 관련된다. 예를 들면, 제 1 프로세서 (100) 는 프로그램 캐쉬 메모리 영역 (510) 의 프로그램 코드를 재기입하고, 또한, 프로그램 캐쉬 메모리 영역 (510) 에 대응하는 프로그램 캐쉬 메모리 태그 (530) 를 재기입한다. 외부 램 상의 프로그램 캐쉬 메모리 영역들 (510 내지 513) 에 저장된 프로그램 코드의 주소가 프로그램 캐쉬 메모리 태그들 (530 내지 533) 에 기입된다. 즉, 프로그램 캐쉬 메모리 태그들 (530 내지 533) 은 내부 램 (150) 상의 프로그램 캐쉬 메모리 영역들 (510 내지 513) 에 기입되는 프로그램 코드의 주소를 저장한다. 그러므로, 프로그램 캐쉬 메모리 (112) 는 프로그램 코드들 및 일-대-일 대응으로 외부 램 상의 프로그램 코드들의 복사 소스 주소들을 저장한다.
다음으로 도 3 및 4 를 참조하면, 프로그램 캐쉬 메모리를 초기화시키는 과정이 설명된다. 도 3 및 4 는 프로그램 캐쉬 메모리를 초기화하는 순서의 흐름도들이다. 더 상세하게는, 도 3 은 제 1 프로세서 (100) 의 동작을 도시하고, 도 4 는 제 2 프로세서 (120) 의 동작을 도시한다. 먼저, 제 1 프로세서 (100) 는 프로그램 캐쉬 메모리를 초기화하는 초기화 프로그램 코드를 복사하고, 외부 램 (150) 에 복사된 것을 저장한다 (단계 S301). 초기화 프로그램 코드는 도 5 의 프로그램 코드들 (410, 411, 412 및 413) 과 같이 저장된다. 또한, 도 5 는 1 킬로바이트의 크기를 갖는 4 개의 메모리 영역들이 제공되는 프로그램 캐쉬 메모리 (112) 를 도시한다. 이 경우에 있어서, 프로그램 캐쉬 메모리 (112) 의 내용들은 정의되지 않는다.
그 다음, 주소 m 전방으로부터 저장된 상기 초기화 프로그램 코드들 (410, 411, 412 및 413) 이 실행된다 (단계 S302). 초기화 프로그램 코드들을 실행하는 동안, 프로그램 호출 주소로의 복귀를 수반하는 1 킬로바이트의 점프가 3 차례 실행된다. 즉, 각각의 초기화 프로그램 코드들 (410 내지 412) 은 1 킬로바이트의 점프에 대한 명령이고 프로그램 코드 (413) 는 리턴 명령이다. 그 후, 제 1 프로세서 (100) 는 초기화 프로그램 코드들 (410 및 413) 에 대한 프로그램 인출 액세스를 실행한다. 그 결과로서, 도 6 에서 도시된 바와 같이, 주소 m 으로부터 외부 램 (150) 상의 4 킬로바이트의 모든 데이터가 프로그램 캐쉬 메모리 (112) 의 하드웨어 동작을 통해 프로그램 캐쉬 메모리 (112) 에 복사된다. 이와 동시에, 외부 램 (150) 상의 주소 m 으로부터 4 킬로바이트의 메모리 영역들 내의 프로그램 코드들이 복사된다는 정보가 제 1 프로그램 캐쉬 메모리 태그 (530), 제 2 프로그램 캐쉬 메모리 태그 (531), 제 3 프로그램 캐쉬 메모리 태그 (532) 및 제 4 프로그램 캐쉬 메모리 태그 (533) 상에 기록된다. 즉, 프로그램 캐쉬 메모리 태그들 (530 내지 533) 은 프로그램 캐쉬 메모리 영역들 (510 내지 513) 과 관련된 외부 램 (150) 상에 복사 소스 주소를 기록한다. 프로그램 캐쉬 메모리 (112) 의 메모리 영역들 중에서, 제 2 프로세서 (120) 가 데이터를 기입하는 메모리 영역에 대응하는 태그 영역이 외부 램 (150) 상의 주소와 관련된다.
제 1 프로세서 (100) 는 제 1 인터럽트 신호 (140) 를 사용하여 제 2 프로세 서 (120) 에게 프로그램 캐쉬 메모리 (112) 초기화의 완료를 통지한다 (단계 S303). 제 2 프로세서 (120) 는 입력될 제 1 인터럽트 신호 (140) 를 대기한다 (단계 S311). 그 후, 제 1 인터럽트 신호에 응답하여, 제 2 프로세서는 테이블 데이터 (210) 로부터 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (211) 로 프로그램 코드들을 복사하는 것을 시작한다 (단계 S312). 즉, 프로그램 코드들의 일부는 제 2 프로세서의 롬 (133) 으로부터 프로그램 캐쉬 메모리 (112) 로 복사된다. 다시 말해서, 롬 (133) 에 저장된 실행 프로그램들 중에서 내부 프로그램 메모리 (113) 에 기입되지 않은 코드들은 프로그램 캐쉬 메모리 (112) 에 기입된다. 이때, 프로그램 코드들의 일부는 제 2 프로세서의 롬 (133) 으로부터 DMA 를 통해 내부 프로그램 메모리 (113) 에 기입된다.
제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 는 제 2 프로세서 메모리 맵 상의 프로그램 캐쉬 메모리 (211) 에 맵핑된다. 그러므로, 제 2 프로세서 (120) 로부터 기입되는 프로그램 코드들은 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 직접 기입된다. 이때까지, 제 1 프로세서 (100) 는 외부 램 (150) 에 대한 인출 액세스를 실행하지 않았으므로, 프로그램 캐쉬 메모리 태그들 (530, 531, 532 및 533) 은 단계 S302 에서 제 1 프로세서 (100) 에 의해서 초기화된 상태로 유지된다.
프로그램 캐쉬 메모리 (112) 에 프로그램 코드들을 기입한 후, 제 2 프로세서 (120) 는 제 2 인터럽트 신호 (141) 를 사용하여 제 1 프로세서 (100) 에게 프로그램 코드들의 기입의 완료를 통지한다 (단계 S313). 제 1 프로세서 (100) 는 입력될 제 2 인터럽트 신호 (141) 를 대기한다 (단계 S304). 제 2 인터럽트 신호 (141) 에 응답하여, 제 1 프로세서 (100) 는 정상 프로그램 실행 상태로 쉬프트된다 (단계 S305). 또한, 제 2 인터럽트 신호 (141) 를 출력한 후, 제 2 프로세서 (120) 는 정상 프로그램 실행 상태로 쉬프트된다 (단계 S314).
이때, 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 태그들 (530, 531, 532 및 533) 은 외부 램 (150) 상의 주소를 나타낸다. 그러므로, 제 1 프로세서 (100) 가 단계 S312 에서 제 2 프로세서 (120) 에 의해서 기입되는 프로그램 코드들을 실행할 때, 제 1 프로세서 (100) 는, 프로그램 코드들이 주소 m 전방으로부터 외부 램 (150) 으로부터의 프로그램 인출을 통해 사전에 판독되고 프로그램 캐쉬 메모리 (112) 에 기입된 것처럼, 프로그램 코드들을 실행시킬 수 있다. 따라서, 프로그램은 프로그램 캐쉬 메모리 (112) 를 재기입하지 않고 프로그램 인출을 통해 실행될 수 있다.
상술한 바와 같이, 프로그램 캐쉬 메모리 (112) 를 초기화하는 때에, 외부 램 (150) 은 프로그램 코드들 (410, 411, 412 및 413) 을 초기화하는 프로그램 캐쉬 메모리를 저장하고 제 1 프로세서 (100) 는 코드들을 실행한다. 이 방식으로, 제 1 프로세서 (100) 는 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 저장된 데이터는 외부 램 (150) 에 저장된 프로그램 코드와 동일하다는 것을 인지할 수 있다. 그러므로, 단계 S312 에서, 이후에, 제 2 프로세서 (120) 가 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 의 내용을 재기입할 지라도, 프로그램 캐쉬 메모리 태그들 (510 내지 513) 은 재기입되지 않는다. 그 결과, 제 1 프로세서 (100) 는 프로그램 코드와 외부 램 (150) 의 내용들 사이에는 차이가 없다고 단정한다. 그러므로, 제 1 프로세서 (100) 는 외부 램 (150) 에 대한 프로그램 인출 액세스를 하지 않고 프로그램 캐쉬 메모리 (112) 에 저장된 프로그램 코드를 실행한다. 따라서, 본 발명에 따르면, 초기화 후에, 외부 램 (150) 에 재기입하는 것이 가능하고, 또한, 외부 램 (150) 은 다른 목적들을 위해서도 사용될 수 있다.
상술한 바는 1 킬로바이트로 설정된 프로그램 캐쉬 메모리 영역일 때 4 개의 프로그램 캐쉬 메모리 영역들 (530 내지 533) 과 4 개의 프로그램 캐쉬 메모리 영역들 (510 내지 513) 로 이루어지는 프로그램 캐쉬 메모리 (112) 에 관한 것이다. 그러나, 본 발명은 거기에 한정되지는 않는다. x 개의 프로그램 캐쉬 메모리 영역들과 x 개의 프로그램 캐쉬 메모리 태그들이 있고, 프로그램 캐쉬 메모리 영역의 크기가 y 바이트라는 가정 하에, 점프 명령들에 의해서 정의되고 프로그램 캐쉬 메모리를 초기화시키는 프로그램 코드들 (410, 411, 412 및 413) 의 명령 저장 주소들이 y 바이트만큼 이격되고, 저장된 명령들의 수가 (x-1) 이며, 점프 명령에 의해서 정의된 점프 폭이 y 바이트인 경우에 본 발명은 응용된다.
메모리 버스 라인들은 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 가 제 2 프로세서 (120) 의 메모리 맵에 맵핑되도록 하기 위해서 접속된다. 그러므로, 제 2 프로세서 (120) 는 제 1 프로세서 프로그램 코드들 중 제 1 프로세서의 내부 프로그램 메모리 용량을 초과하는 코드들을 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 기입할 수 있다. 또한, 초기화 프로그램 코드가 사 용되고, 그로 인해서, 제 1 프로세서 (100) 는 제 1 프로세서 (100) 에 의해서 외부 램 (150) 으로부터 인출되고 제 2 프로세서 (120) 에 의해서 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 기입된 제 1 프로세서 프로그램 코드들을 인식하게 한다. 따라서, 제 1 프로세서 (100) 는 초기화 후에 외부 램 (150) 내의 프로그램 코드들을 저장하지 않고서 프로그램 코드들을 실행시킬 수 있다.
또한, 초기화 프로그램 코드는 외부 램 상의 소정의 주소 간격을 갖는 점프 명령들을 실행하는 프로그램을 나타낸다. 외부 램 (150) 의 프로그램 코드는 초기화 동안 인출 액세스를 하는 제 1 프로세서 (100) 에 의해서 프로그램 캐쉬 메모리 (112) 에 기입된다. 이때, 프로그램 캐쉬 메모리 (112) 는 외부 램 (150) 에 저장된 프로그램 코드를 외부 램 (150) 상의 프로그램 코드의 주소와 관련시켜 저장한다. 그 다음, 제 2 프로세서 (120) 는 프로그램 캐쉬 메모리 (112) 의 메모리 영역만을 재기입하고, 이에 따라서 제 1 프로세서 (100) 는 외부 램에 저장된 데이터가 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리의 데이터와 동등하다는 것을 인지한다.
상기 구성에 따르면, 프로그램 메모리 용량을 초과하는 프로그램 코드를 실행하는 경우조차, 외부 램 (150) 의 메모리 용량을 증가시키는 것은 불필요하다. 예를 들면, 내부 프로그램 메모리 (113) 및 프로그램 캐쉬 메모리 (112) 의 전체 용량과 동등하거나 보다 작은 크기를 갖는 프로그램 코드를 실행하는 경우에, 외부 램 (150) 에 프로그램 코드를 저장할 필요가 없다. 따라서, 외부 램 (150) 의 용량의 증가를 피할 수 있다. 또한, 내부 프로그램 메모리 (113) 및 프로그램 캐쉬 메모리 (112) 의 전체 용량을 초과하는 크기를 갖는 프로그램 코드를 실행하는 경우조차, 외부 램 (150) 의 자유 공간이 감소되는 것을 실질적으로 방지할 수 있다. 예를 들면, 외부 램 (150) 에 대한 프로그램 인출 액세스는 프로그램 캐쉬 메모리 (112) 의 초기화 후의 프로그램의 실행 동안 금지된다. 또 다른 방법으로, 외부 램 (150) 에 대한 프로그램 인출 액세스는 제 2 프로세서 (120) 가 프로그램 캐쉬 메모리 (112) 에 프로그램을 기입하는 상태에서는 금지된다. 따라서, 프로그램 캐쉬 메모리 (112) 에 기입하는 것은 금지된다. 즉, 외부 램 (150) 내에 저장된 프로그램 코드가 판독될 지라도, 프로그램 코드는 프로그램 캐쉬 주소에 기입되지는 않는다. 이로 인해서, 외부 램 (150) 의 용량은 프로그램 캐쉬 메모리의 용량에 비례하여 증가하는 상황을 피할 수 있다. 따라서, 다른 목적들을 위해 사용될 수 있는 외부 램 (150) 의 자유 공간은 실질적으로 증가될 수 있다.
본 발명에 따르면, 제 1 프로세서 (100) 에 내장된 내부 프로그램 메모리 (113) 의 메모리 용량을 초과하는 크기를 갖는 프로그램 코드를 실행하는 경우에, 제 1 프로세서 (100) 의 내부 프로그램 메모리 용량을 증가시킬 필요가 없다. 이로 인해서 내부 프로그램 메모리 (113) 의 용량의 증가는 방지된다. 또한, 외부 램 (150) 내에 저장된 프로그램 코드는 더 작은 메모리 영역을 차지하므로, 외부 램 (150) 은 초기화 후에, 데이터 메모리 등으로 사용될 수 있다. 따라서, 기존의 프로세서 코어 모듈들이 다양화됨에 따라 개발비를 절약하는 것이 가능하고 메모리 모듈 하드웨어의 LSI 풋프린트 (footprint) 의 감소에 기인하여 처리 량을 증가시킬 수 있다.
제 1 실시형태
도 7 을 참조하면, 본 발명에 따른 데이터 프로세싱 장치의 실시형태들이 기술된다. 도 7 은 본 발명의 제 1 실시형태에 따른 데이터 프로세싱 장치의 구조를 도시하는 블록도이다. 부수적으로, 위의 데이터 프로세싱 장치의 구성요소들과 동일한 구성요소들에 대한 기술은 생략된다. 도 7 에서, 설명의 용이성을 위해서, 제 2 프로세서 (120) 의 내부 구조 및 제 1 프로세서 (100) 의 롬 (114) 의 구성이 생략된다. 또한, 설명의 명확성을 위해서, 도 7 은 프로그램 캐쉬 메모리 (112) 의 태그 영역 (520) 을 도시한다.
도 7에서 도시된 바와 같이, 데이터 프로세싱 장치는 제 1 프로세서 (100), 제 2 프로세서 (120) 및 외부 램 (150) 을 포함한다. 제 1 프로세서 (100), 제 2 프로세서 (120), 및 외부 램 (150) 은 시스템 버스 (160) 를 통해 접속된다. 제 1 프로세서 (100) 및 제 2 프로세서 (120) 는 시스템 버스 (160) 를 통해 외부 램 (150) 을 액세스하거나 각각과 통신한다. 제 1 프로세서 (100) 및 제 2 프로세서 (120) 는, 예를 들면, CPU이다. 제 2 프로세서 (120) 는 메인 프로세서이고, 제 1 프로세서 (100) 는 제 2 프로세서 (120) 의 제어 하에서 동작하는 보조 프로세서이다.
산술 논리 유닛 (110) 이 외부 램 (150) 을 액세스하거나 제 1 프로세서 (100) 가 프로세서와 통신할 때, 데이터는 데이터 액세스 I/F (117) 및 시스템 버스 I/F (118) 를 통해서 전달된다. 시스템 버스 I/F (118) 는 시스템 버스 (160) 와 접속되고, 데이터 액세스 I/F (117) 는 시스템 버스 I/F (118) 와 접속된다. 제 1 프로세서 (110) 는 내부 프로그램 메모리 (113) 와 함께 제공된다. 내부 프로그램 메모리 (113) 는 범용 프로그램들을 저장한다.
외부 램 (150) 에 저장된 프로그램을 캐슁 (caching) 하는 경우에는, 프로세서는 캐쉬 주소 영역으로부터 외부 램 (150) 을 액세스한다. 이에 기인하여 캐쉬 제어기 (111a) 가 작동한다. 캐쉬 제어기 (111a) 는 프로그램 캐쉬 메모리 (112) 에 기입하는 것을 제어하기 위해서 도 1 의 메모리 제어기 (111) 의 부분을 구성한다. 따라서, 캐쉬 제어기 (111a) 는 외부 램 (150) 상의 프로그램들을 프로그램 캐쉬 메모리 (112) 에 기입한다. 이 때, 외부 램 (150) 상의 프로그램들은 시스템 버스 I/F (118) 및 데이터 액세스 I/F (117) 를 통해 판독된다. 또한, 캐쉬 제어기 (111a) 는 외부 램 (150) 으로부터 판독된 프로그램의 주소를 프로그램 캐쉬 메모리 (112) 의 메모리 태그에 기입한다. 따라서, 외부 램 (150) 상의 주소가 프로그램 캐쉬 메모리 (112) 의 태그 영역 (520) 에 기입된다. 즉, 캐쉬 제어기 (111a) 는 프로그램 캐쉬 메모리 (112) 에 기입된 프로그램이 저장되는 외부 램 (150) 상의 주소에 관한 정보를 프로그램 캐쉬 메모리 태그로서 기입한다. 이 동작과 함께, 프로그램 캐쉬 메모리 (112) 의 태그 영역에 저장된 외부 램 (150) 상의 주소가 재기입된다. 이 방식으로, 프로그램 캐쉬 메모리 태그들은 또 다른 것과 관련된 외부 램 (150) 상의 주소들을 저장한다.
도 7 의 태그 영역 (520) 에 의해서 지시된 바와 같이, 외부 램 (150) 의 주소 0 에 저장된 프로그램은 프로그램 캐쉬 메모리 태그 0 과 관련되도록 기입된다. 또한, 외부 램 (150) 의 주소 n 에 저장된 프로그램은 프로그램 캐쉬 메모리 태그 n 과 관련되도록 기입된다. 도 7 에서 도시된 바와 같이, 이 방식으로, 캐쉬 제어기 (111a) 는 프로그램 캐쉬 메모리 태그 n 과 외부 램 (150) 의 주소 n 을 관련시킨다. 프로그램 캐쉬 메모리 태그에 기초하여, 어느 주소가 프로그램 캐쉬 메모리 (112) 에 기입된 프로그램에 대응하는지 결정할 수 있다. 캐쉬 제어기 (111a) 는 외부 램 상의 주소를 태그 영역 (520) 의 소정의 태그에 기입한다.
내부 프로그램 메모리 (113)의 용량은 한정된다. 따라서, 동작을 위해서 필요한 모든 프로그램들은 내부 프로그램 메모리 (113) 내에 저장될 수 없다. 결국, 제 1 프로세서 (100) 의 동작을 이해하는 (grasp) 제 2 프로세서 (120) 는 필요한 프로그램의 일부 또는 전부를 프로그램 캐쉬 메모리 (112) 에 기억되도록 한다. 예를 들면, 제 1 프로세서 (100) 가 인코딩을 실행하는 것을 필요로 한다면, 인코딩 프로그램은 프로그램 캐쉬 메모리 (112) 내에 저장된다. 또 다른 방법으로, 제 1 프로세서 (100) 가 디코딩을 실행하는 것을 필요로 한다면, 디코딩 프로그램은 프로그램 캐쉬 메모리 (112) 에 저장된다. 부언할 필요도 없이, 상술한 프로그램들 외의 프로그램들도 프로그램 캐쉬 메모리 (112) 에 저장될 수 있다. 또한, 프로그램 캐쉬 메모리 (112) 도 프로그램들의 일 부분을 저장할 수 있다.
여기에서, 제 2 프로세서 (120) 는 도 8 의 루트 A 에 의해서 프로그램 캐쉬 메모리 (112) 에 프로그램을 기입한다. 즉, 제 2 프로세서 (120) 는 시스템 버스 (160), 시스템 버스 I/F (118) 및 데이터 액세스 I/F (117) 를 통해 프로그램을 프로그램 캐쉬 메모리에 기입한다. 상술한 바와 같이, 제 2 프로세서 (120) 는 프로그램을 외부 램 (150) 을 통하지 않고 프로그램 캐쉬 메모리 (112) 에 기입한다. 캐쉬 제어기 (111a) 는 프로그램을 프로그램 캐쉬 메모리 (112) 에 기입하지 않기 때문에, 프로그램 캐쉬 메모리 태그는 다시 기입되지 않는다. 따라서, 외부 램 (150) 상의 주소는 여전히 프로그램 캐쉬 메모리 태그에 기입되어 있다. 캐쉬 제어기 (111a) 는 외부 램 (150) 으로부터 판독되는 프로그램이 프로그램 캐쉬 메모리 (112) 내에 저장된다는 것을 인지한다. 따라서, 산술 논리 유닛 (110) 은 외부 램 내의 프로그램들이 제 1 프로세서 (100) 내의 프로그램 캐쉬 메모리 (112) 에 기입된 것처럼 프로세싱을 실행한다. 그러므로, 제 1 프로세서 (100) 는 외부 램 (100) 에 대한 프로그램 인출 액세스를 실행하지 않고, 프로그램 캐쉬 메모리 (112) 에 저장된 프로그램 코드를 실행한다. 따라서, 제 2 프로세서 (120) 는 외부 램 (150) 을 완전히 사용할 수 있다. 따라서, 프로그램 캐쉬 메모리 (112) 의 용량에 따라서 외부 램 (150) 의 용량을 절약하는 것이 가능하다. 그 결과, 다른 목적들을 위해서 사용될 수 있는 외부 램 (150) 의 자유 용량은 실질적으로 증가될 수 있다.
제 2 프로세서 (120) 는, 예를 들어, 도 5 에서 도시된 점프 명령을 포함하는 초기화 프로그램 코드를 사용하여 프로그램들을 프로그램 캐쉬 메모리 (112) 에 기입한다. 더 상세하게는, 도 3 에서 도시된 인터럽트 프로세싱 후에, 제 2 프로세서 (120) 는 외부 램 (150) 에 프로그램들을 기입한다. 점프 명령을 포함하는 초기화 프로그램을 사용함으로써, 외부 램 (150) 상의 주소는 프로그램 캐쉬 메모리 태그와 관련될 수 있다. 즉, 제 1 프로세서 (100) 는 캐쉬 제어기 (111a) 의 태그 영역과 외부 램 (150) 의 주소를 관련시킨다. 여기에서, 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 는 제 2 프로세서 (120) 의 메모리 맵에 맵핑된다. 따라서, 제 1 프로세서 (100) 에 의해서 요구된 프로그램들은 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 에 기입될 수 있다. 이 때, 프로그램은 루트 A 에 의해서 기입된다. 그 다음, 제 1 프로세서는 외부 램 (150) 의 프로그램과 같이 프로그램 캐쉬 메모리 (112) 에 기입된 프로그램들을 사용한다. 상술한 바와 같이, 점프 명령을 포함하는 프로그램을 사용함으로써, 프로그램들은 더 단순한 방식으로 제 2 프로세서 (120) 에 의해서 프로그램 캐쉬 메모리 (112) 에 기입될 수 있다.
제 2 실시형태
도 9를 참조하여, 본 발명의 제 2 실시형태에 따른 데이터 프로세싱 장치의 구조가 기술된다. 이 실시형태에 따른 데이터 프로세싱 장치의 기본 구조는 제 1 실시형태의 데이터 프로세싱 장치의 기본 구조와 동일하다. 그러므로, 상술한 데이터 프로세싱 장치의 구성요소들과 동일한 구성요소들에 관한 반복적인 기술은 생략한다. 이 실시형태의 데이터 프로세싱 장치는 프로그램 캐쉬 메모리 태그를 기입하는 루트 측면에서 제 1 실시형태의 데이터 프로세싱 장치와 다르다. 이 실시형태에서, 제 2 프로세서 (120) 가 프로그램 캐쉬 메모리 (112) 에 프로그램들을 기입할 때, 태그는 도 9 의 루트 B 에 의해서 프로그램 캐쉬 메모리 (112) 에 기입된다. 즉, 태그는 시스템 버스 (160), 시스템 버스 I/F (118), 데이터 액세스 I/F (117) 및 캐쉬 제어기 (111a) 를 통해 프로그램 캐쉬 메모리 (112) 에 기입된다. 이 방식으로, 이 실시형태에서, 캐쉬 제어기 (111a) 는 태그를 프로그램 캐쉬 메모리 (112) 에 기입한다.
이 실시형태에서, 데이터 접속은 데이터 액세스 I/F (117) 가 캐쉬 제어기 (111a) 에 데이터를 기입하도록 하기 위해서 설치된다. 따라서, 캐쉬 제어기 (111a) 는 루트 B 에 의해서 프로그램 캐쉬 메모리를 직접 다시 기입할 수 있다. 이에 따라서, 제 1 실시형태에서 기술된 점프 명령을 포함하는 프로그램을 판독되는 것은 불필요하다. 즉, 캐쉬 제어기 (111a) 는 제 2 프로세서 (120) 가 프로그램을 기입하도록 하고, 프로그램 캐쉬 메모리 태그를 다시 기입한다. 이 때, 제 1 프로세서 (100) 의 프로그램 캐쉬 메모리 (112) 는 제 2 프로세서 메모리 맵에 맵핑된다. 그러므로, 제 2 프로세서 (120) 의 내부 프로그램 (132) 또는 롬 상의 주소가 프로그램이 판독하는 소스로서 프로그램 캐쉬 메모리 태그에 기입된다. 따라서, 제 2 프로세서 (120) 는 외부 램 (150) 을 완전히 사용할 수 있다. 그러므로, 제 1 실시형태와 유사하게, 프로그램 캐쉬 메모리 (112) 의 용량에 따라서 외부 램 (150)의 용량을 절약하는 것이 가능하다.
제 3 실시형태
도 10 을 참조하여, 본 발명의 제 3 실시형태에 따른 데이터 프로세싱 장치의 구조가 기술된다. 이 실시형태의 데이터 프로세싱 장치의 기본 구조는 제 1 실시형태의 데이터 프로세싱 장치의 기본 구조와 동일하다. 따라서, 상술한 데이터 프로세싱 장치의 구성요소들과 동일한 구성요소들에 대한 반복적인 기술은 생 략된다. 이 실시형태의 데이터 프로세싱 장치의 제 1 프로세서 (100) 는 데이터가 기입되는 데이터 캐쉬 메모리 (119) 를 포함한다. 데이터 캐쉬 메모리 (119) 는, 예를 들면, 프로그램을 실행함으로써 얻어지는 프로그램 데이터를 저장한다. 또한, 데이터 캐쉬 메모리 (119) 가 프로그램 캐쉬 메모리 (112) 처럼 접속된다. 그 다음, 데이터 캐쉬 메모리 (119) 가 제 2 프로세서 (120) 의 메모리 맵에 맵핑된다. 따라서, 제 2 프로세서 (120) 는 데이터 캐쉬 메모리 (119) 를 다시 기입할 수 있다. 따라서, 제 1 실시형태와 유사하게, 프로그램 캐쉬 메모리 (112) 의 용량에 따라서 외부 램 (150) 의 용량을 절약하는 것이 가능하다. 부수적으로, 데이터가 루트 A 또는 루트 B 중 하나에 의해서 데이터 캐쉬 메모리 (119) 에 기입될 수 있다.
본 발명의 실시형태에서 기술된 바와 같이, 제 2 프로세서 (120) 는 제 1 프로세서 (100) 에서 사용된 프로그램을 기입하지만, 본 발명은 거기에 한정되지 않는다. 제 2 프로세서 (120) 는 프로그램 데이터를 기입할 수도 있다. 즉, 제 2 프로세서 (120) 에서 사용되는 프로그램 코드 또는 프로그램 데이터와 같은 다양한 종류의 데이터가 제 2 프로세서 (120) 에 의해서 캐쉬 메모리에 기입될 수 있다. 이 접속에서, 데이터라는 용어는 제 1 프로세서 (100) 에서 사용되는 프로그램의 코드 또는 프로그램을 실행함으로써 얻어지는 프로그램 데이터와 같은 정보를 의미한다. 즉, 제 2 프로세서 (120) 에 의해서 프로그램 캐쉬 메모리 (112) 에 기입된 데이터는 제 1 프로세서 (100) 에서 사용되는 프로그램과 프로그램을 실행함으로써 얻어지는 데이터를 포함한다. 그러므로, 프로그램 캐쉬 메 모리 (112) 에 따라서 외부 램 (150) 의 용량을 절약하는 것이 가능하고, 다른 목적들을 위해서 사용될 수 있는 외부 램 (150) 의 자유 공간을 실질적으로 증가시키는 것이 가능하다.
본 발명은 상술한 실시형태에 한정되는 것은 아니라 본 발명의 범주 및 사상으로부터 벗어남이 없이 수정되고 변경될 수 있는 것은 분명하다.
본 발명에 따르면, 제 1 프로세서는 외부 램 상의 주소와 관련시켜 제 1 프로세서에서 사용되는 데이터를 저장하는 캐쉬 메모리를 구비하고, 데이터는 외부 램을 통해서가 아니라 제 2 프로세서에 의해서 캐쉬 메모리에 기입됨에 따라서, 제 1 프로세서에 내장된 내부 프로그램 메모리의 메모리 용량을 초과하는 크기를 갖는 프로그램 코드를 실행하는 경우에도, 제 1 프로세서의 내부 프로그램 메모리 용량을 증가시킬 필요가 없다. 이로 인해서 내부 프로그램 메모리의 용량의 증가는 방지된다. 또한, 외부 램에 저장된 프로그램 코드는 더 작은 메모리 영역을 차지하므로, 외부 램은 초기화 후에, 데이터 메모리 등으로 사용될 수 있다. 따라서, 기존의 프로세서 코어 모듈들이 다양화됨에 따라 개발비를 절약하는 것이 가능하고 메모리 모듈 하드웨어의 LSI 풋프린트 (footprint) 의 감소에 기인하여 처리량을 증가시킬 수 있다.

Claims (8)

  1. 제 1 프로세서;
    제 2 프로세서; 및
    상기 제 1 프로세서가 데이터를 기입/판독하는 외부 램 (RAM) 을 구비하며,
    상기 제 1 프로세서는, 상기 외부 램 상의 주소와 관련되어 상기 제 1 프로세서에서 사용되는 데이터를 저장하는 캐쉬 메모리를 포함하고,
    상기 데이터는, 상기 외부 램을 통하지 않고 상기 제 2 프로세서에 의해서 상기 캐쉬 메모리에 기입되는, 데이터 프로세싱 장치.
  2. 제 1 항에 있어서,
    상기 캐쉬 메모리의 메모리 영역들 중에서, 상기 제 2 프로세서가 상기 데이터를 기입하는 메모리 영역에 대응하는 태그 영역은, 상기 외부 램 상의 상기 주소와 관련되는, 데이터 프로세싱 장치.
  3. 제 2 항에 있어서,
    상기 외부 램 상의 소정의 주소 간격에서, 점프 명령을 실행하는 프로그램이 상기 외부 램에 기입되고,
    상기 제 2 프로세서가 상기 프로그램을 실행한 후에, 상기 데이터는, 상기 프로그램이 상기 제 2 프로세서에 의해서 기입되는 상기 캐쉬 메모리의 메모리 영 역에 기입되는, 데이터 프로세싱 장치.
  4. 제 1 항에 있어서,
    상기 외부 램에 대한 상기 제 1 프로세서의 프로그램 인출 액세스는, 상기 데이터가 상기 제 2 프로세서에 의해서 상기 캐쉬 메모리에 기입되는 상태에서는 금지되는, 데이터 프로세싱 장치.
  5. 제 1 프로세서, 제 2 프로세서, 및 상기 제 1 프로세서가 데이터를 기입/판독하는 외부 램을 포함하는 데이터 프로세싱 장치에서 사용되는 데이터 프로세싱 방법으로서,
    상기 제 1 프로세서에 제공된 캐쉬 메모리를 상기 외부 램 상의 주소와 관련시키는 단계; 및
    상기 외부 램을 통하지 않고 상기 제 2 프로세서를 사용하여 상기 캐쉬 메모리에 데이터를 기입하는 단계를 포함하는, 데이터 프로세싱 방법.
  6. 제 5 항에 있어서,
    상기 캐쉬 메모리의 메모리 영역들 중에서, 상기 제 2 프로세서가 상기 데이터를 기입하는 메모리 영역에 대응하는 태그 영역은, 상기 외부 램 상의 상기 주소와 관련되는, 데이터 프로세싱 방법.
  7. 제 6 항에 있어서,
    상기 외부 램 상의 소정의 주소 간격에서, 점프 명령을 실행하는 프로그램이 상기 외부 램에 기입되고,
    상기 제 2 프로세서가 상기 프로그램을 실행한 후, 상기 데이터는, 상기 프로그램이 상기 제 2 프로세서에 의해서 기입되는 상기 캐쉬 메모리의 메모리 영역에 기입되는, 데이터 프로세싱 방법.
  8. 제 5 항에 있어서,
    상기 외부 램에 대한 상기 제 1 프로세서의 프로그램 인출 액세스는, 상기 데이터가 상기 제 2 프로세서에 의해서 상기 캐쉬 메모리에 기입되는 상태에서는 금지되는, 데이터 프로세싱 방법.
KR1020060039062A 2005-04-28 2006-04-28 데이터 프로세싱 장치 및 데이터 프로세싱 방법 KR100861896B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005131212 2005-04-28
JPJP-P-2005-00131212 2005-04-28
JPJP-P-2006-00054279 2006-03-01
JP2006054279A JP4471947B2 (ja) 2005-04-28 2006-03-01 データ処理装置及びデータ処理方法

Publications (2)

Publication Number Publication Date
KR20060113560A true KR20060113560A (ko) 2006-11-02
KR100861896B1 KR100861896B1 (ko) 2008-10-09

Family

ID=37235776

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060039062A KR100861896B1 (ko) 2005-04-28 2006-04-28 데이터 프로세싱 장치 및 데이터 프로세싱 방법

Country Status (3)

Country Link
US (2) US8122192B2 (ko)
JP (1) JP4471947B2 (ko)
KR (1) KR100861896B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
DE102011084569B4 (de) * 2011-10-14 2019-02-21 Continental Automotive Gmbh Verfahren zum Betreiben eines informationstechnischen Systems und informationstechnisches System
WO2014132619A1 (ja) * 2013-03-01 2014-09-04 日本電気株式会社 情報処理装置、情報処理方法及び記憶媒体
US9794366B1 (en) * 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4413317A (en) * 1980-11-14 1983-11-01 Sperry Corporation Multiprocessor system with cache/disk subsystem with status routing for plural disk drives
US4445174A (en) * 1981-03-31 1984-04-24 International Business Machines Corporation Multiprocessing system including a shared cache
KR910001548A (ko) 1989-06-21 1991-01-31 미다 가쓰시게 계층 캐쉬를 무효화화는 멀티 프로세서 시스템
JPH05225147A (ja) * 1992-02-17 1993-09-03 Toshiba Corp マルチプロセッサ型データ処理システム
JPH0944401A (ja) * 1995-07-27 1997-02-14 Nec Ibaraki Ltd キャッシュ制御装置
JPH11175398A (ja) 1997-12-11 1999-07-02 Matsushita Electric Ind Co Ltd メモリ装置
JPH11306029A (ja) 1998-04-17 1999-11-05 Toyota Motor Corp 割り込み処理装置、方法及び媒体
JP4076316B2 (ja) * 2000-09-08 2008-04-16 株式会社日立製作所 不揮発性キャッシュメモリを用いたデータ書き込みシステム
JP4043225B2 (ja) * 2001-12-10 2008-02-06 株式会社ルネサステクノロジ キャッシュ装置および方法
JP2004005287A (ja) 2002-06-03 2004-01-08 Hitachi Ltd コプロセッサを搭載したプロセッサシステム
US6973541B1 (en) * 2002-09-26 2005-12-06 Unisys Corporation System and method for initializing memory within a data processing system
JP4173110B2 (ja) * 2004-01-29 2008-10-29 株式会社日立製作所 記憶装置システム
JP2005259051A (ja) * 2004-03-15 2005-09-22 Ip Flex Kk プロセッシングユニットおよびその制御方法

Also Published As

Publication number Publication date
US8122192B2 (en) 2012-02-21
US20060248263A1 (en) 2006-11-02
JP4471947B2 (ja) 2010-06-02
JP2006331391A (ja) 2006-12-07
US20120110268A1 (en) 2012-05-03
US8312216B2 (en) 2012-11-13
KR100861896B1 (ko) 2008-10-09

Similar Documents

Publication Publication Date Title
JP3623840B2 (ja) データ処理装置及びマイクロプロセッサ
KR100309615B1 (ko) 고속프로그램가능로직컨트롤러(plc)
JP6005392B2 (ja) ルーティングのための方法及び装置
EP1369787A2 (en) Processor device and information processing device, compiling device, and compiling method using said processor device
US6351788B1 (en) Data processor and data processing system
KR100861896B1 (ko) 데이터 프로세싱 장치 및 데이터 프로세싱 방법
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
KR100385493B1 (ko) 재구성가능한프로그램상태워드를갖는마이크로콘트롤러
US8612685B2 (en) Processor, information processing device and cache control method of processor
US7159078B2 (en) Computer system embedding sequential buffers therein for performing a digital signal processing data access operation and a method thereof
JPH0727492B2 (ja) 緩衝記憶装置
US20080282071A1 (en) Microprocessor and register saving method
KR20200124243A (ko) 처리회로 상에서 실행할 프로그램을 디버깅할 때 메타데이터를 액세스하는 방법
US6237071B1 (en) Multiaccess circuit including arbitration capabilities to effectively perform pipeline and suspend operations according to its priority
JP4553622B2 (ja) データ処理装置
JPH0666052B2 (ja) メモリ内容を機械レジスタに自動的に写像する計算機
KR930002324B1 (ko) 기억버퍼를 갖는 마이크로 프로세서
KR0155931B1 (ko) 외부에서 억세스 가능한 온칩 캐시 메모리 시스템
JP2004295874A (ja) マイコン応用システムおよびマイコン、並びに、信号処理システムおよび信号処理lsi
JP2002149488A (ja) 集積回路装置およびキャッシュメモリの制御方法
KR101538425B1 (ko) 프로세서 및 프로세서에서의 명령 처리방법
JP2012123719A (ja) プログラマブルコントローラ
JPH11306019A (ja) 情報処理装置及びプロセッサ
JP2002024088A (ja) データ処理装置
JP2002032352A (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20120907

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130903

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140901

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee