KR20080044652A - Cpu에서의 스택을 이용한 디버깅 방법 - Google Patents
Cpu에서의 스택을 이용한 디버깅 방법 Download PDFInfo
- Publication number
- KR20080044652A KR20080044652A KR1020060113943A KR20060113943A KR20080044652A KR 20080044652 A KR20080044652 A KR 20080044652A KR 1020060113943 A KR1020060113943 A KR 1020060113943A KR 20060113943 A KR20060113943 A KR 20060113943A KR 20080044652 A KR20080044652 A KR 20080044652A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- register
- stack
- value
- entry
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1497—Details of time redundant execution on a single processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅하기 위한 것으로, 이를 위한 본 발명은, 메모리로의 명령 수행인 경우, 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 스택에 기록하는 과정과, 레지스터로의 명령 수행인 경우, 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 스택에 기록하는 과정과, CPU에서 에러가 발생될 경우, 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정을 포함한다. 따라서, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있는 효과가 있다.
CPU, 메모리, 스택, 레지스터, 코어
Description
도 1은 본 발명에 따른 CPU에서의 스택을 이용한 디버깅 방법을 수행하기 위한 블록 구성도,
도 2는 본 발명의 바람직한 실시예에 따른 CPU에서의 스택을 이용한 디버깅 방법에 대한 상세 흐름도.
<도면의 주요부분에 대한 부호의 설명>
101 : 메모리 1011-0,...,1011-n : INS 0,..., INS n
1013 : 데이터부 103 : CPU
1031 : 코어 1033 : 레지스터
1035 : 스택(Stack) 1037 : 디버깅부
본 발명은 중앙 처리 장치(Central Processing Unit, CPU)에서의 스택을 이용한 디버깅 방법에 관한 것으로, 보다 상세하게는 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상 황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅할 수 있는 방법에 관한 것이다.
주지된 바와 같이, CPU는 컴퓨터 및 각종 전자제품 등의 시스템 전체를 제어하는 장치로서, 다양한 입력장치로부터 자료를 받아서 처리한 후 그 결과를 출력장치로 보내는 일련의 과정을 제어하고 조정하는 일을 수행한다.
이러한 CPU는 비교, 판단, 연산을 담당하는 논리연산장치(arithmetic logic unit)와 명령어의 해석과 실행을 담당하는 제어장치(control unit)로 구성된다. 논리연산장치(ALU)는 각종 덧셈을 수행하고 결과를 수행하는 가산기(adder)와 산술과 논리연산의 결과를 일시적으로 기억하는 레지스터인 누산기(accumulater), 중앙처리장치에 있는 일종의 임시 기억장치인 레지스터(register) 등으로 구성되어 있다.
더불어, 제어장치는 프로그램의 수행 순서를 제어하는 프로그램 계수기(program counter), 현재 수행중인 명령어의 내용을 임시 기억하는 명령 레지스터(instruction register), 명령 레지스터에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보내는 명령해독기(instruction decoder)로 이루어져 있다. 즉, CPU는 외부 메모리(예컨대, RAM, ROM,.. 등)에 연결되어 메모리내 데이터부에 저장된 각종 데이터의 코드를 읽어와서 기계어 명령(Instruction)을 실행하는 것이다.
그러나, 상술한 바와 같이 구성된 CPU가 메모리에 저장된 데이터의 코드를 읽어와서 기계어 명령을 실행하는 중에 원하지 않는 상황, 즉 에러가 발생될 경우 해당 작업의 실행이 갑자기 중지됨에 따라 CPU의 상태를 재부팅하여 처음부터 다시 진행해야 하므로, 에러가 발생되기 바로 이전 메모리 값 및 레지스터 값의 변화를 기억하고 있지 못하여 결국 비정상적으로 디버깅을 수행할 수 밖에 없는 문제점을 갖는다.
이에, 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로, 그 목적은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅할 수 있는 CPU에서의 스택을 이용한 디버깅 방법을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명에서 CPU에서의 스택을 이용한 디버깅 방법은 메모리로의 명령 수행인 경우, 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 스택에 기록하는 과정과, 레지스터로의 명령 수행인 경우, 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 스택에 기록하는 과정과, CPU에서 에러가 발생될 경우, 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정을 포함하는 것을 특징으로 한다.
이하, 본 발명의 실시 예는 다수개가 존재할 수 있으며, 이하에서 첨부한 도면을 참조하여 바람직한 실시 예에 대하여 상세히 설명하기로 한다. 이 기술 분야의 숙련자라면 이 실시 예를 통해 본 발명의 목적, 특징 및 이점들을 잘 이해하게 될 것이다.
도 1은 본 발명에 따른 CPU에서의 스택을 이용한 디버깅 방법을 위한 개략적인 블록 구성도로서, 다수의 실행 코드인 INS 0,..., INS n(1011-0,...,1011-n) 및 각종 데이터를 저장하고 있는 데이터부(1013)를 갖는 메모리(101)와, 메모리(101)와 스택(1035)간에 위치하여 메모리(101) 변화 값의 엔트리를 스택(1035)에 기록하도록 제공하는 코어(1031)와, 산술과 논리연산의 결과를 일시적으로 기억하고 있다가 레지스터(1033) 변화 값의 엔트리를 스택(1035)에 제공하는 레지스터(1033)와, 코어(1035)를 통해 제공되는 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 기록하고 있다가 공간이 꽉 차게되면 가장 오래 전에 기록된 엔트리를 지워 새로운 엔트리가 기록될 공간을 확보하는 스택(1035)과, 원하지 않는 상황 즉 에러가 발생될 경우, 에러가 발생되기 바로 이전 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리(101) 혹은 레지스터(1033)의 값을 변화되기 이전으로 디버깅을 수행하는 디버깅부(1037)를 갖는 CPU(103)를 포함한다.
다음에, 상술한 바와 같은 구성을 갖는 본 실시 예의 CPU에서의 스택을 이용한 디버깅 과정에 대하여 설명한다.
도 2는 본 발명의 바람직한 실시 예에 따라 CPU에서의 스택을 이용한 디버깅 과정을 순차적으로 도시한 흐름도이다.
먼저, CPU(103)는 내부에 일정량의 스택(1035)을 갖고 있으며, 메모리(101)로의 명령 수행인지 아니면 레지스터(1033)로의 명령 수행인지를 판단한다(S201).
상기 판단(S201)결과, 메모리(101)로의 명령 수행인 경우, 메모리(101)내 데이터부(1013)에 저장된 데이터의 변화가 있을 때마다 변화된 기억장소 위치와 변화전의 값과 변화후의 값인 세가지 값으로 이루어진 엔트리(예컨대, 도 1의 스택내에 저장된 MEM 00xx, 35, 27)를 다수의 실행 코드인 INS 0,..., INS n(1011-0,...,1011-n)로부터 코어(1031)를 통해 제공받아 스택(1035)에 기록한다(S203).
상기 판단(S201)결과, 레지스터(1011)로의 명령 수행인 경우, 레지스터(101)의 주소와 변화전의 값과 변화후의 값인 세가지 값으로 이루어진 엔트리(예컨대, 도 1의 스택내에 저장된 REG 0x, 2A, 9B)를 스택(1035)에 기록한다(S205).
한편, CPU(103)는 원하지 않는 상황 즉 에러가 발생될 경우(S207), 디버깅부(1037)를 실행시킨다(S209).
그러면, 디버깅부(1037)는 스택(1035)에 저장된 에러가 발생되기 바로 이전 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리(101) 혹은 레지스터(1033)의 값을 변화되기 이전으로 디버깅을 수행한다(S211).
따라서, 본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅함으로써, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있다.
상기에서 설명한 바와 같이, 본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅함으로써, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있는 효과가 있다.
Claims (3)
- 메모리와 레지스터 각각으로 명령을 수행하는 CPU에서의 스택을 이용한 디버깅 방법으로서,(a) 상기 메모리로의 명령 수행인 경우, 상기 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 상기 스택에 기록하는 과정과,(b) 상기 레지스터로의 명령 수행인 경우, 상기 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 상기 스택에 기록하는 과정과,(c) 상기 CPU에서 에러가 발생될 경우, 상기 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 상기 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정을 포함하는 CPU에서의 스택을 이용한 디버깅 방법.
- 제 1 항에 있어서,상기 (a) 과정의 메모리 엔트리는, 상기 메모리 기억장소 위치와 변화전의 값과 변화후의 값으로 이루어진 것을 특징으로 하는 CPU에서의 스택을 이용한 디버깅 방법.
- 제 1 항에 있어서,상기 (b) 과정의 레지스터 엔트리는, 상기 레지스터 기억장소 위치와 변화전의 값과 변화후의 값으로 이루어진 것을 특징으로 하는 CPU에서의 스택을 이용한 디버깅 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060113943A KR20080044652A (ko) | 2006-11-17 | 2006-11-17 | Cpu에서의 스택을 이용한 디버깅 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060113943A KR20080044652A (ko) | 2006-11-17 | 2006-11-17 | Cpu에서의 스택을 이용한 디버깅 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080044652A true KR20080044652A (ko) | 2008-05-21 |
Family
ID=39662470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060113943A KR20080044652A (ko) | 2006-11-17 | 2006-11-17 | Cpu에서의 스택을 이용한 디버깅 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20080044652A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293999A (zh) * | 2015-06-25 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
CN113377593A (zh) * | 2021-06-29 | 2021-09-10 | 厦门紫光展锐科技有限公司 | Cpu失效位置的定位分析方法及相关产品 |
-
2006
- 2006-11-17 KR KR1020060113943A patent/KR20080044652A/ko not_active Application Discontinuation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293999A (zh) * | 2015-06-25 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
CN106293999B (zh) * | 2015-06-25 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
US11010277B2 (en) | 2015-06-25 | 2021-05-18 | Sanechips Technology Co., Ltd. | Method and device for realizing snapshot function of micro-engine processing packet intermediate data |
CN113377593A (zh) * | 2021-06-29 | 2021-09-10 | 厦门紫光展锐科技有限公司 | Cpu失效位置的定位分析方法及相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4703718B2 (ja) | 選択的サブルーチンリターン構造 | |
JP5611756B2 (ja) | プログラム・フロー制御 | |
JP2008009721A (ja) | 評価システム及びその評価方法 | |
JP3938580B2 (ja) | 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム | |
US6925522B2 (en) | Device and method capable of changing codes of micro-controller | |
CN111625328B (zh) | 适用于risc-v架构的中断装置、系统及方法 | |
US20050060690A1 (en) | Microprocessor system with software emulation processed by auxiliary hardware | |
KR20080044652A (ko) | Cpu에서의 스택을 이용한 디버깅 방법 | |
US20080282071A1 (en) | Microprocessor and register saving method | |
US7890740B2 (en) | Processor comprising a first and a second mode of operation and method of operating the same | |
JP2001306334A (ja) | エミュレーション装置 | |
JP2009230479A (ja) | マイクロプロセッサ | |
US7353343B2 (en) | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory | |
KR100525537B1 (ko) | 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법. | |
JPH03271829A (ja) | 情報処理装置 | |
JP2562838B2 (ja) | プロセッサ及びストアバッファ制御方法 | |
JPH0475137A (ja) | データ処理装置 | |
JPH1011315A (ja) | インサーキットエミュレータ装置およびインサーキットエミュレーション方法 | |
JPH0535499A (ja) | データ処理装置及びデータ処理方法 | |
JPH04342037A (ja) | プログラムのオペランドチェック方式 | |
CN117724938A (zh) | 存储器的控制方法 | |
WO2024029174A1 (ja) | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体 | |
JPH0484224A (ja) | スタックエリア保護回路 | |
JPS60193046A (ja) | 命令例外検出方式 | |
JPH1055289A (ja) | デバッグ情報生成回路、およびそれを用いた情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20061117 |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |