KR20040047399A - 메모리 영역 억세스 제어 방법 - Google Patents
메모리 영역 억세스 제어 방법 Download PDFInfo
- Publication number
- KR20040047399A KR20040047399A KR1020020075608A KR20020075608A KR20040047399A KR 20040047399 A KR20040047399 A KR 20040047399A KR 1020020075608 A KR1020020075608 A KR 1020020075608A KR 20020075608 A KR20020075608 A KR 20020075608A KR 20040047399 A KR20040047399 A KR 20040047399A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- memory area
- register
- accessed
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 RISC 프로세서에서의 사용되지 않는 메모리 영역 억세스 제어 방법에 관한 것으로서, 특히 시스템 초기화시 상기 레지스터에 사용하지 않는 메모리 영역의 어드레스를 저장하는 단계와, 메모리 억세스시 억세스되는 메모리의 어드레스와 상기 레지스터에 저장된 어드레스를 비교하는 단계와, 상기 단계에서 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스라고 판별되면 인터럽트를 통해 내부적으로 리셋을 수행하는 단계를 포함하여 이루어지며, 하드웨어가 죽거나 오동작을 일으키게 되는 것을 방지할 수 있고, 또한 디버깅을 해야할 때는 비정상적인 동작을 한 해당 명령어와 그 시점을 알 수 있다.
Description
본 발명은 RISC 프로세서에 관한 것으로서, 특히 RISC 프로세서에서 사용하지 않는 무효한 메모리 영역이 억세스되지 않도록 제어하는 메모리 영역 억세스 제어 방법에 관한 것이다.
상기 RISC(Reduced Instruction Set Computer)는 처리 시간이 매우 짧고 간단한 명령만을 골라 그것들을 조합한 명령 세트에 의해 고속 처리를 수행하도록 설계된 마이크로프로세서로서, 기존의 기계어와 마이크로 명령의 중간 레벨로 어드레싱을 소수로 제한하고 있으며 LSI(고집적)화가 용이하고 파이프라인에 의한 명령의 고속화가 가능한 장점을 갖고 있다. 특히, RISC의 모든 명령은 1클럭(스위치 개폐를 제어하는 순간적인 신호)으로 실행되고, 모든 명령은 1워드 길이로, 연산은 레지스터 사이에서만 실행되는 특징을 지닌다.
일반적으로 프로세서는 프로그램 수행 중에 프로그램상의 오류 혹은 하드웨어의 버그로 인해 사용하지 않는 메모리 영역을 억세스하는 경우가 생긴다. 그러면, 프로세서는 죽게 되거나 잘못된 연산을 계속하게 된다. 예를 들어, 메모리를 억스세할 때 데이터가 준비되면 레디(ready) 신호를 띄워주는 방식으로 인터페이스가 구현된 경우에는 레디 신호가 계속 뜨지 않으므로 프로세서는 이를 한없이 기다리게 되어 죽어있는 상태가 된다.
또한, 레디 신호를 사용하지 않는 경우에는 메모리로부터 0이나 알려지지 않은(unknown) 신호들이 출력되어 그 값을 가지고 연산을 수행하게 되는데, 이 경우 잘못된 값이 쓰여진 내부 레지스터들이 후에 사용될 때 문제를 일으켜 오동작을 하게 된다.
따라서, 이러한 오동작에 의해 내부 하드웨어가 손상을 입을 수도 있고, 시스템 개발 중 디버깅을 할 때는 오동작의 원인을 쉽게 찾을 수 없게 된다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 사용하지 않는 메모리 영역이 억세스되는 것을 감지하여 내부적으로 리셋되도록 함으로써, 오동작을 막는 메모리 영역 억세스 제어 방법을 제공함에 있다.
도 1a는 일반적인 메모리 맵의 예를 보인 도면
도 1b는 도 1a의 메모리 맵에서 사용되지 않는 메모리 영역의 어드레스를 레지스터에 저장하는 예를 보인 도면
도 2는 본 발명에 따른 사용되지 않는 메모리 영역 억세스 제어 방법을 수행하기 위한 흐름도
도 3의 (a) 내지 (g)는 메모리 리드/라이트 과정에서 사용되지 않는 메모리 영역이 억세스될 때의 해당 신호들의 타이밍도
도 4의 (a) 내지 (f)는 프로그램 페치 과정에서 사용되지 않는 메모리 영역이 억세스될 때의 해당 신호들의 타이밍도
상기와 같은 목적을 달성하기 위한 본 발명에 따른 RISC 프로세서에서 메모리 영역 억세스 제어 방법은, 데이터의 리드/라이트가 이루어지는 메모리 및 레지스터를 포함한 RISC 프로세서에서 시스템 초기화시 상기 레지스터에 사용하지 않는 메모리 영역의 어드레스를 저장하는 단계와, 메모리 억세스시 억세스되는 메모리의 어드레스와 상기 레지스터에 저장된 어드레스를 비교하는 단계와, 상기 단계에서 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스라고 판별되면 인터럽트를 통해 내부적으로 리셋을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 한다.
상기 어드레스 저장 단계는 상기 레지스터에 사용하지 않는 메모리 영역의 시작 어드레스와 마지막 어드레스를 라이트하는 것을 특징으로 한다.
상기 리셋 수행 단계는 사용하지 않는 메모리 영역을 억세스하도록 한 해당 명령어의 프로그램 카운터(PC) 값을 저장하는 단계와, 디버깅시 요청이 있으면 상기 저장된 PC 값을 current PC값으로 하여 출력하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 도시되고 또 이것에 의해서 설명되는 본 발명의 구성과 작용은 적어도 하나의 실시예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
본원 발명은 사용하지 않는 메모리 영역이 억세스되면 초기 번지로 점프함에 의해 소프트웨어적인 리셋을 수행함으로써, 사용되지 않는 메모리 영역이 억세스됨으로써 발생할 수 있는 오동작을 방지할 수 있고, 디버깅시에도 그 원인을 쉽게 찾을 수 있도록 하는데 그 특징이 있다.
도 1a는 사용하지 않는 메모리 영역을 갖고 있는 메모리 맵의 일 예를 보인 것으로서, 데이터 버스(data bus)의 폭(width)이 32비트(4Byte))이고, 가상(virtual) 메모리의 전체 영역은 4GB인 경우를 나타내고 있다. 도 1b는 상기 도 1a에서 사용하지 않는 메모리 영역의 주소를 저장하는 본 발명의 내부 레지스터의 예를 보이고 있다.
도 2는 본 발명에 따른 사용하지 않는 메모리 영역 억세스 제어 방법을 수행하기 위한 동작 흐름도이다.
즉, 상기된 도 1과 같은 메모리 맵을 갖는 프로그램을 수행하게 되는 경우, 프로그램의 초기화 루틴에서 도 1b와 같은 레지스터에 사용하지 않는 메모리 영역의 시작 어드레스와 마지막 어드레스를 써준다(단계 201). 여기서, 상기 도 1b의 레지스터는 사용하지 않는 메모리 영역이 억세스되는 것을 감지하기 위한 것으로서, 하드웨어 블록 내부에 존재한다. 예를 들어, 도 1a와 같이 첫 번째미사용(reserved) 영역은 0x00002000번지부터 0x00FFFFFC까지이고, 두 번째 미사용(reserved) 영역은 0x01008000번지로부터 0xFFFFFFFC까지라고 가정하자. 그러면, 상기 도 1b의 레지스터에는 0x00002000, 0x00FFFFFC, 0x01008000, 0xFFFFFFFC가 라이트(write)된다.
이후, 상기 메모리가 억세스되면(단계 202), 메모리로부터 억세스된 어드레스 값과 상기 레지스터에 라이트된 값을 비교하여 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스인지를 판단한다(단계 203).
상기 단계 203에서 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스가 아니라고 판별되면, 즉 유효화(valid) 영역의 어드레스라고 판별되면 해당 명령어를 수행한다(단계 204).
한편, 상기 단계 203에서 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스라고 판별되면, 즉 무효화(invalid) 영역의 어드레스라고 판별되면 잘못된 어드레스를 발생시킨 명령어의 프로그램 카운터(program counter ; PC) 값을 저장하고(단계 205), 초기 번지로 점프하여 리셋을 수행한다(단계 206). 이때, 상기 단계 205에서 PC 값을 저장하는 것은 디버깅시 어느 명령어에서 이런 현상이 발생되었는지 알아낼 때 이용하기 위해서이다. 즉, 상기 PC 값을 통해 프로그램의 오류인지 하드웨어의 버그인지는 알 수 없지만, 문제가 드러나는 시점은 쉽게 찾을 수 있다.
도 3은 실제 파이프라인 상에서의 무효화 영역의 어드레스 억세스 감지 동작을 나타낸 타이밍도이다. 이 프로세서는 (a)와 같이 F(Fetch), D(Decoding),R(Read), E(Execution), W(Write)의 5단계 파이프라인을 수행하고, 실행 단계(Execution phase)에서 (b)와 같이 메모리를 억세스한다. 그리고, 명령어는 16bit(2Byte)이다. 즉, (b)와 같이 메모리 리드 신호가 뜨고, (c)와 같이 어드레스값이 나오면 이를 도 1b의 레지스터 값과 비교하여 상기 어드레스가 사용하지 않는 범위에 속하는지 확인한다. 예를 들어, 리드된 어드레스가 0xFFFFFFFC라면 무효화 영역에 속하는 어드레스가 판별되어 (d)와 같이 무효화 영역임을 알리는 invalid mem 신호가 발생하여 (e)와 같이 인터럽트 요청을 하게 된다.
그러면, 해당 인터럽트의 서비스 루틴으로 점프하게 되고, 그 루틴에서는 (f)와 같이 초기 번지인 0x00000000 번지로 점프하여 소프트웨어적인 리셋을 수행한다.
이러한 과정을 메모리 억세스가 이루어질 때마다 수행함으로써, 사용하지 않는 메모리 영역을 읽거나 쓸 경우에 리셋을 통해 오동작을 방지할 수 있다.
그리고, 디버깅시 어느 명령어에서 이런 현상이 발생되었는지 알아내고 싶으면 해당 명령어의 프로그램 카운터(PC)를 따로 저장해서 칩(chip)밖으로 내보내주면 된다. 도 3에서는 해당 명령어의 PC 값을 current PC라는 이름으로 출력 핀을 통해 내보내주면 프로그램의 오류인지 하드웨어의 버그인지는 알 수 없지만, 문제가 드러나는 시점은 쉽게 찾을 수 있다.
만일, 도 4와 같이 데이터를 읽거나 쓰는 중이 아니고 프로그램을 페치(fetch)하던 중에 사용하지 않는 메모리 영역을 억세스 했을 경우에도 마찬가지로, 레지스터에 저장된 값과의 비교를 통해 사용하지 않는 메모리 영역이 억세스되었음을 판단하여, (d)와 같이 무효화 영역임을 알리는 invalid mem 신호를 발생시키고, (e)와 같이 인터럽트 요청을 하게 된다. 그러면, 해당 인터럽트의 서비스 루틴으로 점프하게 되고, 그 루틴에서는 (c)와 같이 초기 번지인 0x00000000 번지로 점프하여 소프트웨어적인 리셋을 수행한다.
하지만 이 경우에는 (f)와 같이 current pc값이 무효한 어드레스를 만들어낸 명령어를 가리키도록 만들어준다. 즉, 0x00000400의 명령어가 2 단계(phase) 뒤의 프로그램 페치 어드레스를 만들어내는 프로세서의 경우를 뜻한다. 만일 프로세서가 1 단계(phase) 뒤의 프로그램 페치 어드레스를 만들어낸다면 이때의 current pc는 0x00000402가 되어야 할 것이다. 그리고, 디버깅시 어느 명령어에서 이런 현상이 발생되었는지 알아내고 싶을 때, 상기 current PC 값을 출력 핀을 통해 내보내주면 프로그램의 오류인지 하드웨어의 버그인지는 알 수 없지만, 문제가 드러나는 시점은 쉽게 찾을 수 있다.
이상에서와 같이 본 발명에 따른 메모리 영역 억세스 제어 방법에 의하면, 프로그램 상에서 사용하지 않는 메모리 영역이 하드웨어 내의 버그나 프로그램상의 오류로 인해 억세스되는 경우를 감지하여 리셋시킴으로써, 하드웨어가 죽거나 오동작을 일으키게 되는 것을 방지할 수 있고, 또한 디버깅을 해야할 때는 비정상적인 동작을 한 해당 명령어와 그 시점을 알 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 이탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.
Claims (4)
- 데이터의 리드/라이트가 이루어지는 메모리 및 레지스터를 포함한 RISC 프로세서에서의 메모리 영역 억세스 제어 방법에 있어서,(a) 시스템 초기화시 상기 레지스터에 사용하지 않는 메모리 영역의 어드레스를 저장하는 단계;(b) 메모리 억세스시 억세스되는 메모리의 어드레스와 상기 레지스터에 저장된 어드레스를 비교하는 단계; 그리고(c) 상기 (b) 단계에서 억세스된 어드레스가 사용되지 않는 메모리 영역의 어드레스라고 판별되면 인터럽트를 통해 내부적으로 리셋을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 하는 메모리 영역 억세스 제어 방법.
- 제 1 항에 있어서, 상기 (a) 단계는상기 레지스터에 사용하지 않는 메모리 영역의 시작 어드레스와 마지막 어드레스를 라이트하는 것을 특징으로 하는 메모리 영역 억세스 제어 방법.
- 제 1 항에 있어서, 상기 (c) 단계는사용하지 않는 메모리 영역을 억세스하도록 한 해당 명령어의 프로그램 카운터(PC) 값을 저장하는 단계와,디버깅시 요청이 있으면 상기 저장된 PC 값을 current PC값으로 하여 출력하는 단계를 더 포함하는 것을 특징으로 하는 메모리 영역 억세스 제어 방법.
- 제 3 항에 있어서,사용하지 않는 메모리 영역을 억세스하도록 한 해당 명령어가 페치 명령어이면 무효화 어드레스를 만들어낸 명령어를 current PC값으로 하여 출력하는 것을 특징으로 하는 메모리 영역 억세스 제어 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020075608A KR20040047399A (ko) | 2002-11-30 | 2002-11-30 | 메모리 영역 억세스 제어 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020075608A KR20040047399A (ko) | 2002-11-30 | 2002-11-30 | 메모리 영역 억세스 제어 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20040047399A true KR20040047399A (ko) | 2004-06-05 |
Family
ID=37342798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020020075608A KR20040047399A (ko) | 2002-11-30 | 2002-11-30 | 메모리 영역 억세스 제어 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20040047399A (ko) |
-
2002
- 2002-11-30 KR KR1020020075608A patent/KR20040047399A/ko not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100350568B1 (ko) | 디버그기능을수행하기위한데이타처리시스템및방법 | |
US4924382A (en) | Debugging microprocessor capable of switching between emulation and monitor without accessing stack area | |
US6212625B1 (en) | General purpose dynamically programmable state engine for executing finite state machines | |
KR970012145A (ko) | 데이타 프로세서와 그 작동 방법, 그 디버깅 작동 실행 방법 및 그 중단점 값 수정 방법 | |
US5862148A (en) | Microcontroller with improved debug capability for internal memory | |
US4747045A (en) | Information processing apparatus having an instruction prefetch circuit | |
CN118377637B (zh) | 减少冗余缓存一致性操作的方法、装置、设备和存储介质 | |
JP4689087B2 (ja) | 情報処理装置及び省電力移行制御方法 | |
KR100313939B1 (ko) | 인터럽트제어기 | |
JPH10333939A (ja) | マイクロプロセッサ | |
US6944794B2 (en) | Microcontroller with debug support unit | |
CN111381881A (zh) | 一种基于ahb总线接口的低功耗指令缓存方法及装置 | |
JP3590282B2 (ja) | スーパースカラーマイクロプロセッサーの停止点インターラプト発生装置 | |
KR20040047399A (ko) | 메모리 영역 억세스 제어 방법 | |
JPH1049373A (ja) | パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置 | |
JP2001306334A (ja) | エミュレーション装置 | |
US20010052114A1 (en) | Data processing apparatus | |
US20010049794A1 (en) | Write protection software for programmable chip | |
JP2504191B2 (ja) | マイクロプロセッサ | |
JP3097602B2 (ja) | データ処理装置 | |
CN117063155A (zh) | 检测卸载操作中的执行风险 | |
JPH0934795A (ja) | Cpuプログラムのコピープロテクト法 | |
KR0155931B1 (ko) | 외부에서 억세스 가능한 온칩 캐시 메모리 시스템 | |
CN118132427A (zh) | 芯片的运行跟踪方法、芯片、板卡、电子设备及存储介质 | |
JPH04332045A (ja) | 演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |