KR101259395B1 - 마이크로 컨트롤러 및 그의 동작방법 - Google Patents

마이크로 컨트롤러 및 그의 동작방법 Download PDF

Info

Publication number
KR101259395B1
KR101259395B1 KR1020110048995A KR20110048995A KR101259395B1 KR 101259395 B1 KR101259395 B1 KR 101259395B1 KR 1020110048995 A KR1020110048995 A KR 1020110048995A KR 20110048995 A KR20110048995 A KR 20110048995A KR 101259395 B1 KR101259395 B1 KR 101259395B1
Authority
KR
South Korea
Prior art keywords
cache
program code
instruction
processor
microcontroller
Prior art date
Application number
KR1020110048995A
Other languages
English (en)
Other versions
KR20120130923A (ko
Inventor
박대진
곽승호
Original Assignee
어보브반도체 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어보브반도체 주식회사 filed Critical 어보브반도체 주식회사
Priority to KR1020110048995A priority Critical patent/KR101259395B1/ko
Publication of KR20120130923A publication Critical patent/KR20120130923A/ko
Application granted granted Critical
Publication of KR101259395B1 publication Critical patent/KR101259395B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

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

Abstract

본 발명은 마이크로 컨트롤러 및 그의 동작방법에 관한 것으로서, 인스트럭션 또는 프로그램 코드가 저장되는 제1 캐쉬(cache) 및 제2 캐쉬(cache); 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 어느 하나의 캐쉬에 저장하는 캐쉬 컨트롤러(cache controller); 및 프로세서에서 요청된 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬에서 탐색하여 상기 프로세서로 전달하는 캐쉬 브리지 컨트롤러(cache bridge controller)를 포함하며, 상기 캐쉬 컨트롤러는 상기 제1 캐쉬 또는 상기 제2 캐쉬의 동작 상태 정보에 기초하여 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 현재 저장이 가능한 캐쉬를 판별하도록 구성되어, code 메모리로서 외부 메모리를 적용하면서도 내부 메모리를 구비한 경우와 비슷한 정도의 코드 페치 시간을 낼 수 있도록 하여 마이크로 컨트롤러 칩의 크기를 소형화하고 제작공정에 소요되는 비용을 절감할 수 있는 효과가 있다.

Description

마이크로 컨트롤러 및 그의 동작방법 {MICROCONTROLLER AND OPERATING METHOD THEREOF}
본 발명은 마이크로 컨트롤러 및 그의 동작방법에 관한 것으로, 보다 상세하게는 내부에 대용량 메모리를 구비하지 않고도 내부 메모리를 구비한 것처럼 짧은 시간에 코드를 페치(code fetch)할 수 있는 마이크로 컨트롤러 및 그의 동작방법에 관한 것이다.
도 1은 일반적인 마이크로 컨트롤러 유닛의 구성이 도시된 블록도이다.
최근 제작되는 대부분의 마이크로 컨트롤러 유닛(MCU; MicroController Unit, 100)은 도 1에 도시된 바와 같이, 칩에 on-chip flash memory(120)를 포함하여 코드 메모리(code memory)로 사용하고 있다. 코드 메모리(120)가 프로세서(110)의 CPU bus에 직접 물려 있으므로 수 개의 클럭으로도 코드 페치(code fetch)가 가능하며, 프로그래머가 code execution의 latency를 고려할 필요가 없는 장점이 있다.
이러한 on-chip flash memory는 embedded flash 공정을 이용하여 제작되는데, embedded flash 공정은 공정에 소요되는 비용이 클 뿐만 아니라 최소 피처 크기(minimum feature size)가 커 마이크로 컨트롤러 칩의 크기를 줄이는 데 한계가 있다.
또한, 상기 공정을 통해 생산된 마이크로 컨트롤러 칩에 대해 테스트를 수행한 결과 문제점이 발생한 경우 메모리가 칩에 내장되어 있으므로 새로 칩을 제작하여 테스트를 수행하는 과정을 반복해야 하며, 이에 따라 테스트에 소요되는 비용이 증가하게 된다.
이러한 문제점을 해결하기 위하여 상기 코드 메모리를 내장 ROM(120)이 아닌 마이크로 컨트롤러 유닛의 외부에 배치하는 방안을 고려할 수 있다. 코드 메모리를 마이크로 컨트롤러의 외부에 배치하게 되면 기존의 마이크로 컨트롤러 칩에서 많은 면적을 차지하고 있던 메모리가 빠지게 되므로 마이크로 컨트롤러 칩 자체의 크기를 크게 줄일 수 있게 된다. 또한 embedded flash 공정을 사용하지 않아도 되므로 제조 공정에 소요되는 비용을 절감할 수 있다.
그러나, 마이크로 컨트롤러에 외부 메모리를 구비하는 경우, 내장 ROM으로부터 코드를 페치하는 데 걸리는 시간과 비교하면 외부 메모리로부터 마이크로 컨트롤러의 내부 버퍼로 코드 데이터를 페치하는 데 상당한 시간이 소요되며, 내부 버퍼의 hit ratio에 의해 code execution latency가 낮아질 수밖에 없어 전체적인 데이터 처리 시간이 크게 늘어나는 문제점이 있다.
본 발명은 상술한 바와 같은 문제점을 해결하고자 제안된 것으로, 마이크로 컨트롤러의 코드 메모리를 마이크로 컨트롤러 칩의 외부에 구비하여 마이크로 컨트롤러 칩의 크기를 크게 줄이고 제작공정 및 테스트에 소요되는 비용을 절감할 수 있도록 하는 마이크로 컨트롤러 및 그의 동작방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 마이크로 컨트롤러에 외부의 코드 메모리를 적용하면서도 내장 메모리를 구비한 경우와 비슷한 정도의 짧은 시간 내에 코드를 페치할 수 있는 마이크로 컨트롤러 및 그의 동작방법을 제공하는 데 그 목적이 있다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 마이크로 컨트롤러는 인스트럭션 또는 프로그램 코드가 저장되는 제1 캐쉬(cache) 및 제2 캐쉬(cache); 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 어느 하나의 캐쉬에 저장하는 캐쉬 컨트롤러(cache controller); 및 프로세서에서 요청된 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬에서 탐색하여 상기 프로세서로 전달하는 캐쉬 브리지 컨트롤러(cache bridge controller)를 포함하며, 상기 캐쉬 컨트롤러는 상기 제1 캐쉬 또는 상기 제2 캐쉬의 동작 상태 정보에 기초하여 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 현재 저장이 가능한 캐쉬를 판별한다.
상기 캐쉬 컨트롤러는, 상기 프로세서로 전달되는 인스트럭션 또는 프로그램 코드의 내용에 기초하여 상기 프로세서로부터 요청될 인스트럭션 또는 프로그램 코드를 예측하고, 상기 예측된 인스트럭션 또는 프로그램 코드를 상기 외부 메모리로부터 읽어들여 상기 판별된 캐쉬에 저장한다.
상기 제1 캐쉬 및 제2 캐쉬는 싱글 포트 SRAM이다.
또한, 본 발명의 일실시예에 따른 마이크로 컨트롤러의 동작방법은, 프로세서로부터 처리하고자 하는 인스트럭션 또는 프로그램 코드가 요청되면, 요청된 상기 인스트럭션 또는 프로그램 코드가 제1 캐쉬 또는 제2 캐쉬에 저장되어 있는지 확인하고 상기 요청된 인스트럭션 또는 프로그램 코드를 상기 프로세서로 전달하는 단계; 상기 제1 캐쉬 또는 제2 캐쉬의 동작 상태 정보에 기초하여 상기 제1 캐쉬 또는 제2 캐쉬 중 현재 저장이 가능한 캐쉬를 판별하는 단계; 및 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 판별된 캐쉬에 저장하는 단계를 포함한다.
상기 저장하는 단계는, 상기 프로세서로 전달되는 인스트럭션 또는 프로그램 코드의 내용에 기초하여 상기 프로세서로부터 요청될 코드를 예측하는 단계; 및 상기 예측된 인스트럭션 또는 프로그램 코드를 상기 외부 메모리로부터 읽어들이는 단계를 더 포함한다.
상기 마이크로 컨트롤러의 동작방법은, 상기 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드의 오류를 검사하여 오류가 검출되면 상기 예측된 인스트럭션 또는 프로그램 코드를 다시 읽어들이는 단계를 더 포함한다.
상기와 같이 구성 및 동작하는 본 발명의 일실시예에 따른 마이크로 컨트롤러 및 그의 동작방법은 마이크로 컨트롤러의 외부에 코드 메모리를 구비하면서도 내장 메모리를 구비한 경우와 비슷한 정도의 짧은 시간 내에 코드를 페치할 수 있는 효과가 있다.
이 때 동일 레벨에서 병렬적으로 배치되는 2개(또는 그 이상)의 내부 버퍼 메모리(제1 캐쉬, 제2 캐쉬)를 이용함으로써 메인 프로세서가 감지하는 미스 비율(miss ratio)을 낮출 수 있고 미스가 발생하는 경우의 페널티(penalty)도 줄일 수 있다. 또한 2개 이상의 내부 버퍼 메모리를 싱글 포트 SRAM(Static RAM)으로 구성함으로써 코드 데이터의 플로우가 간단해지고 코드 데이터의 제어가 용이해지는 장점이 있다.
또한 본 발명의 마이크로 컨트롤러에 따르면, 내부 버퍼 메모리(제1 캐쉬 및 제2 캐쉬)에 저장된 코드 내용의 효율적인 관리를 통하여 내부 버퍼 메모리의 미스 비율(miss ratio)을 더욱 낮출 수 있고, 이로 인하여 마이크로 컨트롤러 내의 메인 프로세서가 코드 메모리가 내부에 있는 경우와의 차이점을 감지하지 못할 정도로 필요한 코드 (또는 인스트럭션)가 페널티 없이 메인 프로세서에 전달될 수 있다. 즉, 동일 레벨에서 병렬적으로 배치되는 2개 이상의 내부 버퍼 메모리를 이용하고 이를 효율적으로 관리함으로써 프로세서가 감지하지 못하는 사이에 내부 버퍼 메모리에 필요한 코드를 채워 넣는 과정이 히든 프로세스(hidden process)로 실행될 수 있어 페널티를 크게 줄일 수 있다. 또한, 본 발명의 마이크로 컨트롤러에 따르면, 코드 메모리를 마이크로 컨트롤러의 외부에 구비하여 마이크로 컨트롤러 칩 자체의 크기를 크게 줄이고 제작공정 및 테스트에 소요되는 비용을 절감할 수 있다.
도1은 일반적인 마이크로 컨트롤러 유닛의 구성이 도시된 블록도이다.
도2는 본 발명에 따른 마이크로 컨트롤러의 구성이 간략하게 도시된 블록도이다.
도3은 도2에 도시된 마이크로 컨트롤러의 구성이 보다 상세하게 도시된 블록도이다.
도4는 본 발명의 일실시예에 따른 마이크로 컨트롤러에 있어서, 캐쉬 브리지 컨트롤러의 동작방법이 도시된 순서도이다.
도5는 본 발명의 일실시예에 따른 마이크로 컨트롤러에 있어서, 캐쉬 컨트롤러의 동작방법이 도시된 순서도이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 본 명세서에서, 외부 메모리로부터 프로세서로 전달되는 코드 데이터는 컴퓨터 시스템의 동작에 필요한 인스트럭션(instruction) 또는 프로그램 코드(program code)를 지칭한다.
도2는 본 발명에 따른 마이크로 컨트롤러의 구성이 간략하게 도시된 블록도이다. 본 발명에 따른 마이크로 컨트롤러(200)는 도 2에 도시된 바와 같이, 프로세서(210) 및 외부 메모리(220)로부터 코드 데이터를 읽어들여 상기 프로세서(210)로 전달하는 가상 ROM(300)을 포함하여 구성된다.
이는 마이크로 컨트롤러의 프로세서(210) 입장에서 봤을 때 코드 메모리가 내부에 위치한 것처럼 인식하여 동작하기 위한 것으로, 내부 ROM을 구비한 경우와 유사한 정도의 코드 페치 시간을 낼 수 있도록 한다.
또한, 코드 메모리가 내장되지 않은 마이크로 컨트롤러(200)와 외부의 코드 메모리(220)는 multi-chip package의 구조로 결합될 수 있으므로 외부에서는 embedded-flash memory의 구성과 구별하기 어려울 정도의 성능을 구현할 수 있으며, 기판에서 차지하는 면적이나 단가는 크게 낮출 수 있게 된다.
도3은 도2에 도시된 마이크로 컨트롤러의 구성이 보다 상세하게 도시된 블록도로서, 도 2에서 도시된 가상 ROM(300)의 세부 구성에 대해 보다 상세히 설명한다.
본 발명의 일실시예에 따른 마이크로 컨트롤러에 있어서, 가상 롬(300)은 제1 캐쉬(320), 제2 캐쉬(330), 상기 제1 캐쉬(320) 및 상기 제2 캐쉬(330)와 앞뒤로 연결되어 외부 메모리(220)로부터의 코드 데이터가 상기 프로세서(210)로 전달되도록 제어하는 캐쉬 브리지 컨트롤러(310) 및 캐쉬 컨트롤러(340)를 포함한다.
제1 캐쉬(320) 및 제2 캐쉬(330)는 외부 메모리(220)로부터 읽어들인 인스트럭션 또는 프로그램 코드 등의 코드 데이터가 저장되는 캐쉬 메모리로서, 계층 구조가 아닌 병렬 구조로 캐쉬 브리지 컨트롤러(310) 및 캐쉬 컨트롤러(340)에 연결된다.
상기 제1 캐쉬(320) 및 상기 제2 캐쉬(330)로는 SRAM이 사용되며, 데이터의 read/write를 동시에 수행할 수 있는 dual port SRAM의 경우 상대적으로 크기(면적)가 크며, 단가가 비싸므로 제어신호에 따라 데이터의 read/write 기능이 번갈아 수행되는 single port SRAM을 상기 제1 캐쉬(320) 및 상기 제2 캐쉬(330)로 사용하여 dual port SRAM과 유사한 기능을 수행할 수 있도록 한다.
캐쉬 브리지 컨트롤러(cache bridge controller, 310)는 상기 가상 ROM(300)을 프로세서(210)에서 내부 메모리인 것처럼 인식할 수 있도록 상기 제1 캐쉬(320) 및 상기 제2 캐쉬(330)를 제어하는 수단으로, 프로세서(210)로부터 소정의 코드 데이터, 즉 인스트럭션 또는 프로그램 코드가 요청되면, 요청된 상기 코드 데이터가 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330)에 저장되어 있는지 탐색하고 탐색결과 상기 코드 데이터가 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330) 중 어느 한 캐쉬에 저장되어 있으면 저장되어 있는 코드 데이터를 읽어들여 상기 프로세서(210)로 전달한다.
또한, 상기 캐쉬 브리지 컨트롤러(310)는, 프로세서(210)로부터 요청된 코드 데이터가 제1 캐쉬(320) 및 제2 캐쉬(330)에 모두 저장되어 있지 않은 상태인 캐쉬 미스(cache miss)가 발생하면 상기 프로세서(210)에서 요청된 인스트럭션 또는 프로그램 코드를 상기 캐쉬 컨트롤러(340)에 요청하여 상기 요청된 인스트럭션 또는 프로그램 코드가 상기 제1 캐쉬(320) 또는 제2 캐쉬(330)에 저장되도록 한다.
캐쉬 컨트롤러(cache controller, 240)는 본 발명의 일실시예에 따른 마이크로 컨트롤러(200)-외부 메모리(220) 패키지가 내부 메모리를 구비한 마이크로 컨트롤러와 비슷한 정도의 코드 페치 시간을 갖도록 상기 제1 캐쉬(320) 및 상기 제2 캐쉬(330)를 제어하는 수단으로, 외부 메모리(220)로부터 읽어들인 코드 데이터를 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330) 중 어느 하나의 캐쉬에 저장하며, 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330)의 동작상태 정보에 기초하여 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330) 중 현재 저장이 가능한 캐쉬를 판별하여 상기 외부 메모리(220)로부터 읽어들인 코드 데이터를 저장한다.
특히 상기 캐쉬 컨트롤러(340)는 상기 프로세서(210)로 전달되는 코드 데이터의 내용에 기초하여 이후 상기 프로세서(210)로부터 캐쉬 브리지 컨트롤러(310)로 요청될 코드 데이터를 예측하고, 상기 예측된 코드 데이터를 상기 외부 메모리(220)로부터 미리 읽어들여 현재 저장이 가능한 것으로 판별된 캐쉬에 저장한다.
즉, 상기 캐쉬 컨트롤러(340)는 프로세서(210)로부터 요청된 코드 데이터를 외부 메모리(220)로부터 읽어들여 제1 캐쉬(320) 또는 제2 캐쉬(330)에 저장하며, 현재 프로세서(210)에서 처리되고 있거나 앞서 제1 캐쉬(320) 또는 제2 캐쉬(330)에 저장된 코드 데이터의 내용을 분석하고 앞으로 상기 프로세서(210)로부터 요청될 코드 데이터를 예측하여 상기 제1 캐쉬(320) 또는 상기 제2 캐쉬(330) 중 어느 하나의 캐쉬에 저장한다.
본 발명의 일실시예에 따른 마이크로 컨트롤러는 오류정정 모듈(350)을 더 포함하며, 상기 오류정정 모듈(350)은 상기 외부 메모리(220)로부터 읽어들인 코드 데이터에 대해 읽어들이는 과정에서 오류가 있었는지 여부를 검사하고 오류가 검출되지 않으면 상기 외부 메모리(220)로부터 읽어들인 코드 데이터를 상기 캐쉬 컨트롤러(340)로 전달한다. 또한, 오류가 검출되면 해당 코드 데이터를 다시 외부 메모리(220)로부터 읽어들여 오류 검사를 반복함으로써 프로세서(210) 측으로 전달되는 코드 데이터의 오류 발생 빈도를 크게 줄이도록 한다.
s-flash controller(360)는 플래시 메모리인 외부 메모리(220)의 동작을 제어하는 수단으로, clock converter(370)로부터 인가되는 clock에 의해 동작하며 표준화된 SPI(Serial Port Interface)를 나타내는 4개의 연결 포트를 통해 외부 메모리(220)와 연결된다.
즉, 본 발명의 일실시예에 따른 마이크로 컨트롤러의 구성은, 코드 캐쉬 구조를 듀얼 캐쉬(다중 캐쉬)로 함에 따라 코드 캐쉬 미스의 확률을 크게 낮출 수 있으며, 외부 메모리로부터 페치하는 코드 데이터의 오류를 프로세서(210) 측에서는 인식하지 못하는 hidden process로 검사할 수 있으므로 코드 데이터의 신뢰성을 높일 수 있다.
또한 캐쉬 메모리로서, SRAM 중에서도 상대적으로 크기가 작고 가격이 저렴한 single port SRAM을 병렬 구조로 연결하여 가상의 메모리를 구성함에 따라 마이크로 컨트롤러 칩의 크기를 보다 작게 할 수 있으며 생산비용도 절감할 수 있다. 싱글 포트 SRAM을 이용함으로써 내부 코드 메모리의 면적을 줄이고 데이터 플로우를 간단히 할 수 있는 장점이 있다.
상기와 같이 구성되는 본 발명의 일실시예에 따른 마이크로 컨트롤러는 다음과 같이 동작한다.
도 4는 본 발명의 일실시예에 따른 마이크로 컨트롤러에 있어서, 캐쉬 브리지 컨트롤러의 동작방법이 도시된 순서도이다.
우선, 프로세서로부터 캐쉬 브리지 컨트롤러로 소정의 코드 데이터에 대한 어드레스가 요청된다(S100).
요청된 어드레스에 대한 코드 데이터가 제1 캐쉬 또는 제2 캐쉬에 저장되어 있는지 탐색한다(S110).
탐색결과, 요청된 코드 데이터가 상기 제1 캐쉬 또는 제2 캐쉬 중 어느 하나의 캐쉬에 저장되어 있으면(S120), 이를 읽어들여 상기 프로세서로 전달한다(S130).
탐색결과, 상기 요청된 코드 데이터가 상기 제1 캐쉬 및 상기 제2 캐쉬에 저장되어 있지 않는 경우(S120) 캐쉬 미스(cache miss)로 판정하여(S140) 상기 요청된 코드 데이터에 대한 어드레스 정보를 포함하는 캐쉬 미스 신호를 생성한 후 이를 캐쉬 컨트롤러로 전달하여 외부 메모리로부터 상기 요청된 코드 데이터를 읽어들이도록 한다.
도 5 는 본 발명의 일실시예에 따른 마이크로 컨트롤러에 있어서, 캐쉬 컨트롤러의 동작방법이 도시된 순서도이다.
캐쉬 컨트롤러는 캐쉬 브리지 컨트롤러로부터 캐쉬 미스 신호가 수신되었는지 여부에 따라 동작이 달라질 수 있는데, 캐쉬 컨트롤러에서 캐쉬 미스 신호를 수신했다는 것은 제1 캐쉬 및 제2 캐쉬 모두에 프로세서에서 요청한 코드 데이터가 존재하지 않는다는 의미이므로 외부 메모리에 상기 프로세서에서 요청한 코드 데이터를 탐색하여 읽어들여야 한다.
또한, 캐쉬 컨트롤러에서 캐쉬 미스신호를 수신하지 않았다는 것은 프로세서에서 요청된 코드 데이터가 제1 캐쉬 또는 제2 캐쉬 중 어느 하나의 캐쉬에 저장되어 있으며, 캐쉬 브리지 컨트롤러에서 상기 요청된 코드 데이터를 상기 프로세서로 전달하고 있는 중이라는 의미이다.
우선, 캐쉬 컨트롤러는 상기 캐쉬 브리지 컨트롤러로부터 캐쉬 미스 신호를 수신하였는지 여부를 확인한다(S200). 상기 캐쉬 브리지 컨트롤러로부터 캐쉬 미스 신호를 수신하지 않은 경우, 상기 프로세서로부터 이후에 어느 코드 데이터가 요청될 것인지를 예측한다(S230). 어느 코드 데이터가 상기 프로세서로부터 요청될지 예측하는 것은 현재 상기 프로세서로 전달되고 있는 코드 데이터 또는 앞서 제1 캐쉬 또는 제2 캐쉬에 저장된 코드 데이터의 내용을 분석하는 것으로부터 도출될 수 있다. 예를 들어, 제1 캐쉬에서 프로세서로 코드 데이터가 전달되고 있을 때, 제 1 캐쉬에 저장된 코드 데이터에 하위 루프로의 이동 명령이 있는 경우 이후 프로세서에서 하위 루프에 해당하는 코드 데이터를 요청할 것으로 예측할 수 있다.
단계 S230에서, 어느 코드 데이터가 요청될 지 예측하고 나면, 예측을 통해 도출된 코드 데이터의 메모리 어드레스를 외부 메모리로 전달하여 탐색하도록 하고(S240), 탐색된 어드레스에 해당하는 코드 데이터 블록을 읽어들인다(S250).
읽어들인 코드 데이터는 오류 정정모듈로 전달되어 CRC 방식 등을 통해 오류가 있는지 여부를 검사하게 되며, 오류가 없는 것으로 판정되면, 캐쉬 컨트롤러로 전달된다(S260).
캐쉬 컨트롤러는 수신된 코드 데이터를 제1 캐쉬 또는 제2 캐쉬 중에서 어느 캐쉬가 현재 데이터가 저장 가능한 캐쉬인지 판별하여(S270) 상기 수신된 코드 데이터를 저장하게 되는데(S280), 상기 제1 캐쉬 및 제2 캐쉬는 단일 포트(single port) SRAM으로서, read/write 작업이 하나의 포트에서 이루어지므로 제어신호에 따라 한번에 하나의 동작을 수행할 수 있다. 따라서, 상기 제1 캐쉬 및 제2 캐쉬에 발령된 제어신호를 판독하는 것으로 현재 저장 가능한 캐쉬를 판별할 수 있다. 예를 들어 보다 상세히 설명하면, 제1 캐쉬에서 현재 프로세서로 코드데이터를 전달하는 중이면, 제1 캐쉬로는 현재 read 명령이 발령된 상태이다. 이때 제2 캐쉬는 대기상태로 write 명령이 발령될 수 있으므로 제2 캐쉬를 현재 저장 가능한 캐쉬인 것으로 판별할 수 있다. 이에 따라, 제2 캐쉬를 저장 가능한 캐쉬로 판별하게 되면, 오류 정정모듈로부터 수신된 코드 데이터를 제2 캐쉬로 전달하여 제2 캐쉬에 저장되도록 한다.
마찬가지 방식으로, 현재 제2 캐쉬에서 프로세서로 코드 데이터를 전달하는 중이라면, 제2 캐쉬로는 현재 read 명령이 발령된 상태이며, 이때 제1 캐쉬는 write 명령이 발령될 수 있으므로 제1 캐쉬를 현재 저장 가능한 캐쉬로 판별하여 상기 오류 정정모듈로부터 수신된 코드 데이터를 제1 캐쉬로 전달하여 저장하게 된다.
도 5에서, 단계 S270의 저장 가능한 캐쉬를 판별하는 단계는, 판별된 캐쉬에 읽어들인 데이터를 저장하는 동작 흐름을 도시하고자 단계 S270으로 기재하였으나 해당 단계에서만 수행되지는 않으며, 단계 S230의 코드 데이터 예측 단계와 병렬적으로 함께 수행될 수도 있다.
오류정정 모듈의 경우, 수신된 코드 데이터에 오류가 발생하면 수신된 코드 데이터의 어드레스를 다시 외부 메모리로 호출하여 오류가 발생한 코드 데이터를 다시 읽어들이며, 다시 읽어들인 코드 데이터에 대해서도 오류가 존재하는지 여부를 검출한다. 이때, 프로세서는 제1 캐쉬 또는 제2 캐쉬로부터 필요한 코드 데이터를 읽어들이는 중이므로, 프로세서의 입장에서는 오류정정 모듈의 동작이 인식되지 않는다. 따라서 오류정정 모듈에서, 읽어들인 코드 데이터에 오류가 있는 것으로 판정이 되더라도 프로세서 측에서는 이를 감지할 수 없으며, 오류정정 모듈의 동작에 따라 오류가 없는 데이터를 다시 읽어들여 현재 저장 가능한 캐쉬에 저장해놓을 수 있으므로 프로세서로 전달되는 코드 데이터의 신뢰성을 높일 수 있는 것이다.
즉, 코드 캐쉬 구조를 듀얼 캐쉬(다중 캐쉬)로 함에 따라 코드 캐쉬 미스 확률을 크게 낮출 수 있으며, 외부 코드 롬으로부터 페치하는 코드 데이터의 오류를 hidden process로 검사할 수 있으므로 코드 데이터의 신뢰성을 높일 수 있으며, 코드 페치 과정에서 오류가 발생하더라도 마이크로 컨트롤러는 이를 감지하지 못하도록 할 수 있다.
한편, 상기 캐쉬 컨트롤러는 단계 S200의 다음 단계로서, 상기 프로세서로부터 이후에 요청될 코드 데이터에 대해 예측할 필요가 있는지 여부를 판단하는 단계(S210)를 더 포함할 수 있다. 예측할 필요가 있는지 여부의 판단은 캐쉬 컨트롤러 및 캐쉬의 동작 효율성을 위한 것으로, 요청될 것으로 예측하여 미리 저장된 코드 데이터가 실제로 프로세서로부터 항상 요청되는 것은 아닐 수 있는데도 불구하고 지속적으로 캐쉬에 저장된 코드 데이터로부터 이후의 코드 데이터 예측작업을 수행하고 해당 코드 데이터를 읽어들이는 것은 불필요한 자원을 소모하는 일이 될 수 있다.
따라서, 미리 제1 캐쉬 또는 제2 캐쉬에 예측된 코드 데이터 블록을 저장해놓은 상태에서, 해당 코드 데이터가 실제로 프로세서의 요청에 의해 상기 프로세서로 전달되면 해당 코드 데이터 블록이 대부분 상기 프로세서로 전달될 때까지는 예측 동작을 수행하지 않고 대기(idle)상태로 있을 수 있다(S220)
또한, 제1 캐쉬 또는 제2 캐쉬에 예측된 코드 데이터 블록이 저장되어 있음에도 불구하고 코드 미스가 발생하게 되면 저장해놓은 코드 데이터 블록에 대한 예측 작업에 오류가 있었던 것이므로 다시 예측작업을 수행할 필요가 있으며, 이에 따라 외부 메모리로부터 읽어들인 코드 데이터를 다시 분석하여 예측 작업을 수행할 수 있다.
한편, 캐쉬 브리지 컨트롤러로부터 캐쉬 미스 신호가 수신되면, 수신된 캐쉬 미스 신호에 함께 포함된 코드 데이터 어드레스를 판독하여 s-flash controller로 전달한다. s-flash controller는 외부 메모리에 수신된 코드 데이터 어드레스 정보를 외부 메모리에 전달하여 해당 어드레스의 코드 데이터를 읽어들인다. 읽어들인 코드 데이터는 오류 정정모듈로 전달되어 CRC 방식 등을 통해 오류가 있는지 여부를 검사하게 되며, 오류가 없는 것으로 판정되면, 캐쉬 컨트롤러로 전달된다.
캐쉬 컨트롤러는 제1 캐쉬 또는 제2 캐쉬 중 현재 데이터가 저장 가능한 캐쉬를 판별하게 되는데, 단계 S200에서 캐쉬 미스가 발생한 경우에는 제1 캐쉬 및 제2 캐쉬 모두가 데이터를 저장할 수 있는 상태이므로 자체 판단하여 오류 정정모듈로부터 수신된 코드 데이터를 소정의 캐쉬에 저장시킨다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 다수의 단일 포트 SRAM을 병렬로 연결하고 코드 데이터 예측을 통해 프로세서에서 요청될 코드 데이터를 미리 저장함에 따라 외부 메모리를 사용하면서도 내부 메모리를 적용한 경우와 비슷한 정도의 데이터 처리 속도를 낼 수 있도록 하는 본 발명의 기술사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100, 200: 마이크로 컨트롤러 210: 프로세서
220: 외부 메모리 300: 가상 ROM
310: 캐쉬 브리지 컨트롤러 320: 제1 캐쉬
330: 제2 캐쉬 340: 캐쉬 컨트롤러
350: 오류정정모듈

Claims (8)

  1. 싱글 포트 SRAM로 구성되고 인스트럭션 또는 프로그램 코드가 저장되는 제1 캐쉬(cache) 및 제2 캐쉬(cache);
    외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 어느 하나의 캐쉬에 저장하는 캐쉬 컨트롤러(cache controller); 및
    프로세서에서 요청된 인스트럭션 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬에서 탐색하여 상기 프로세서로 전달하는 캐쉬 브리지 컨트롤러(cache bridge controller)를 포함하며,
    상기 캐쉬 컨트롤러는 상기 외부 메모리로부터 읽어들인 인스트럭션 코드 또는 프로그램 코드를 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 어느 하나의 캐쉬에 저장하는 과정이 상기 프로세서가 감지하지 못하는 사이에 히든 프로세스(hidden process)로서 실행될 수 있도록 상기 제1 캐쉬 또는 상기 제2 캐쉬의 동작 상태 정보에 기초하여 상기 제1 캐쉬 또는 상기 제2 캐쉬 중 현재 상기 프로세서로 인스트럭션 또는 프로그램 코드를 전달하는 읽기(read) 상태가 아닌 대기(idle) 상태인 캐쉬를 저장이 가능한 캐쉬로 판별하는 마이크로 컨트롤러.
  2. 제1항에 있어서,
    상기 캐쉬 컨트롤러는, 상기 프로세서로 전달되는 인스트럭션 또는 프로그램 코드의 내용에 기초하여 상기 프로세서로부터 요청될 인스트럭션 또는 프로그램 코드를 예측하고, 상기 예측된 인스트럭션 또는 프로그램 코드를 상기 외부 메모리로부터 읽어들여 상기 판별된 캐쉬에 저장하는 것을 특징으로 하는 마이크로 컨트롤러.
  3. 삭제
  4. 제1항에 있어서,
    상기 캐쉬 브리지 컨트롤러는, 캐쉬 미스(cache miss)가 발생하면 상기 프로세서에서 요청된 인스트럭션 또는 프로그램 코드를 상기 캐쉬 컨트롤러에 요청하여 상기 요청된 인스트럭션 또는 프로그램 코드가 상기 제 1캐쉬 또는 상기 제 2캐쉬에 저장되도록 하는 것을 특징으로 하는 마이크로 컨트롤러.
  5. 제1항에 있어서,
    상기 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드의 오류를 검사하고 오류가 검출되지 않으면 상기 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 캐쉬 컨트롤러로 전달하는 오류정정모듈을 더 포함하는 마이크로 컨트롤러.
  6. 프로세서로부터 처리하고자 하는 인스트럭션 또는 프로그램 코드가 요청되면, 요청된 상기 인스트럭션 또는 프로그램 코드가 싱글 포트 SRAM로 구성된 제1 캐쉬 또는 싱글 포트 SRAM로 구성된 제2 캐쉬에 저장되어 있는지 확인하고 상기 요청된 인스트럭션 또는 프로그램 코드를 상기 프로세서로 전달하는 단계;
    상기 제1 캐쉬 또는 제2 캐쉬의 동작 상태 정보에 기초하여 상기 제1 캐쉬 또는 제2 캐쉬 중 현재 상기 프로세서로 인스트럭션 또는 프로그램 코드를 전달하는 읽기(read) 상태가 아닌 대기(idle) 상태인 캐쉬를 저장이 가능한 캐쉬로 판별하는 단계; 및
    외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드를 상기 판별된 캐쉬에 저장하는 단계를 포함하고,
    상기 판별된 캐쉬에 저장하는 단계는 상기 프로세서가 감지하지 못하는 사이에 히든 프로세스(hidden process)로서 실행되는 것을 특징으로 하는 마이크로 컨트롤러의 동작방법.
  7. 제 6항에 있어서,
    상기 프로세서로 전달되는 인스트럭션 또는 프로그램 코드의 내용에 기초하여 상기 프로세서로부터 요청될 코드를 예측하는 단계; 및
    상기 예측된 인스트럭션 또는 프로그램 코드를 상기 외부 메모리로부터 읽어들이는 단계
    를 더 포함하는 것을 특징으로 하는 마이크로 컨트롤러의 동작방법.
  8. 제 7항에 있어서,
    상기 외부 메모리로부터 읽어들인 인스트럭션 또는 프로그램 코드의 오류를 검사하여 오류가 검출되면 상기 예측된 인스트럭션 또는 프로그램 코드를 다시 읽어들이는 단계
    를 더 포함하는 것을 특징으로 하는 마이크로 컨트롤러의 동작방법.
KR1020110048995A 2011-05-24 2011-05-24 마이크로 컨트롤러 및 그의 동작방법 KR101259395B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110048995A KR101259395B1 (ko) 2011-05-24 2011-05-24 마이크로 컨트롤러 및 그의 동작방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110048995A KR101259395B1 (ko) 2011-05-24 2011-05-24 마이크로 컨트롤러 및 그의 동작방법

Publications (2)

Publication Number Publication Date
KR20120130923A KR20120130923A (ko) 2012-12-04
KR101259395B1 true KR101259395B1 (ko) 2013-04-30

Family

ID=47514892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110048995A KR101259395B1 (ko) 2011-05-24 2011-05-24 마이크로 컨트롤러 및 그의 동작방법

Country Status (1)

Country Link
KR (1) KR101259395B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990022010A (ko) * 1995-05-26 1999-03-25 마이클 월러 문맥 데이타 서치를 위한 연계 캐시
KR200204909Y1 (ko) 1997-12-30 2000-12-01 김영환 분할된 내부 코드 메모리를 갖는 마이크로컨트롤러
KR20050005553A (ko) * 2002-06-07 2005-01-13 마이크론 테크놀로지 인코포레이티드 내부 캐쉬 및/또는 메모리 액세스 예측을 지닌 메모리 허브

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990022010A (ko) * 1995-05-26 1999-03-25 마이클 월러 문맥 데이타 서치를 위한 연계 캐시
KR200204909Y1 (ko) 1997-12-30 2000-12-01 김영환 분할된 내부 코드 메모리를 갖는 마이크로컨트롤러
KR20050005553A (ko) * 2002-06-07 2005-01-13 마이크론 테크놀로지 인코포레이티드 내부 캐쉬 및/또는 메모리 액세스 예측을 지닌 메모리 허브

Also Published As

Publication number Publication date
KR20120130923A (ko) 2012-12-04

Similar Documents

Publication Publication Date Title
KR101531078B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
CA1244554A (en) Pageable branch history table
CN110069285B (zh) 一种检测分支预测的方法及处理器
US8108615B2 (en) Prefetching controller using a counter
US8327077B2 (en) Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
US20150143045A1 (en) Cache control apparatus and method
US20120226865A1 (en) Network-on-chip system including active memory processor
US4901228A (en) Pipelined cache system using back up address registers for providing error recovery while continuing pipeline processing
US8060701B2 (en) Apparatus and methods for low-complexity instruction prefetch system
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
JP2000003308A (ja) オ―バラップしたl1およびl2メモリ・アクセス方法および装置
CN110806900B (zh) 一种访存指令处理方法及处理器
US20060224870A1 (en) Information processing device
US20110072215A1 (en) Cache system and control method of way prediction for cache memory
CN116361232A (zh) 片上缓存的处理方法、装置、芯片及存储介质
US5940857A (en) Instruction cache memory apparatus with advanced read function that predicts whether to read out a next instruction block including an address register, a counter and a selector
US20120215959A1 (en) Cache Memory Controlling Method and Cache Memory System For Reducing Cache Latency
US9405545B2 (en) Method and apparatus for cutting senior store latency using store prefetching
CN102722451A (zh) 采用物理地址预测访问高速缓存的装置
CN112612728B (zh) 缓存管理方法及装置、设备
KR101259395B1 (ko) 마이크로 컨트롤러 및 그의 동작방법
US7007137B2 (en) Method and architecture capable of accessing data and instructions using store and forward
KR102692838B1 (ko) 저장 디바이스들에 대한 강화된 선판독 능력
US11048637B2 (en) High-frequency and low-power L1 cache and associated access technique
US7032075B2 (en) Instruction cache and microprocessor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160401

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180416

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 7