KR20020029921A - Method and apparatus for modifying microinstructions in a static memory device - Google Patents

Method and apparatus for modifying microinstructions in a static memory device Download PDF

Info

Publication number
KR20020029921A
KR20020029921A KR1020027001886A KR20027001886A KR20020029921A KR 20020029921 A KR20020029921 A KR 20020029921A KR 1020027001886 A KR1020027001886 A KR 1020027001886A KR 20027001886 A KR20027001886 A KR 20027001886A KR 20020029921 A KR20020029921 A KR 20020029921A
Authority
KR
South Korea
Prior art keywords
address
jump point
microinstruction
memory device
jump
Prior art date
Application number
KR1020027001886A
Other languages
Korean (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 KR20020029921A publication Critical patent/KR20020029921A/en

Links

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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

정적 기억 장치에 상주하는 마이크로 명령어의 프로그램 플로우를 수정하는 방법 및 장치. 정적 기억 장치의 마이크로 명령어를 수정할 필요가 있을 경우, 인터럽트 이벤트를 트리거하는 점프 포인트 어드레스를 보유하기 위해 점프 포인트 레지스터를 사용한다. 프로그램 카운터가 현재 보유하고 있는 어드레스와 점프 포인트 어드레스가 일치하고 점프 포인트 레지스터가 인에블이면, 프로그램 플로우를 정적 기억 장치로부터 프로그램 가능한 기억 장치로 전송하는 인터럽트 이벤트가 발생한다. 인터럽트를 외부 이벤트의 발생을 나타내는데 사용하기보다, 정적 기억 장치에 상주하는 마이크로 명령어 일부를 바이패스하는데 사용한다.Method and apparatus for modifying the program flow of microinstructions residing in static storage. If you need to modify the microinstructions in static storage, use the jump point register to hold the jump point address that triggers the interrupt event. If the address currently held by the program counter matches the jump point address and the jump point register is enabled, an interrupt event occurs that transfers the program flow from the static memory to the programmable memory. Instead of using interrupts to indicate the occurrence of external events, they are used to bypass some of the microinstructions that reside in static memory.

Description

정적 기억 장치 내의 마이크로 명령어를 수정하는 방법 및 장치{METHOD AND APPARATUS FOR MODIFYING MICROINSTRUCTIONS IN A STATIC MEMORY DEVICE}METHOD AND APPARATUS FOR MODIFYING MICROINSTRUCTIONS IN A STATIC MEMORY DEVICE}

제어 기억 장치는 마이크로프로세서의 데이터 경로를 제어하는 실행가능 마이크로 명령어를 포함하고 있다. 기계에 따라, 제어 기억 장치는 RAM이나 ROM으로 구성된다. RAM의 내용은 새로운 정보로 쉽게 재기록할 수 있다. 하지만, RAM은 휘발성이어서, 회로에 전원이 공급되는 동안만 RAM의 내용을 유지한다. 반면에, ROM의 내용은 ROM의 제조시에 기입되며, 전원이 차단되더라도 변경되거나 삭제되지 않는다.The control memory contains executable micro instructions that control the data path of the microprocessor. Depending on the machine, the control storage device is composed of RAM or ROM. The contents of the RAM can be easily rewritten with new information. RAM is volatile, however, and retains its contents only while the circuit is powered up. On the other hand, the contents of the ROM are written at the time of manufacture of the ROM, and are not changed or deleted even if the power is cut off.

대량 생산할 경우 RAM보다 ROM이 훨씬 저렴하다. RAM과 ROM의 비용을 고려하기 때문에, 마이크로코드 프로그래머들은 일반적으로 프로그래밍 에러를 쉽게 수정할 수 있는 RAM으로 회로를 설계하고 설계의 마지막 단계에서 RAM을 ROM으로 치환하여 생산 비용을 최소화한다. 그러나, 아무리 엄격하게 설계 검사를 하더라도 정적 ROM에 영구적으로 남아 있게 될 프로그래밍 에러를 간과할 수 있다.In mass production, ROM is much cheaper than RAM. Because of the cost of RAM and ROM, microcode programmers typically design circuits with RAM that can easily correct programming errors and minimize production costs by replacing RAM with ROM at the end of the design. However, no matter how strict your design checks, you can overlook programming errors that will remain permanently in static ROM.

ROM에 저장된 마이크로 명령어 세트에서 프로그래밍 에러가 발견될 경우, 프로그래머들은 이를 수정하기 위한 패치를 만든다. "패치"는 종래의 코드를 수정하거나 기능을 부가하기 위해 만들어진 새로운 코드를 일컫는 기술 용어이다. 마이크로 명령어는 전체적으로 "코드"로 호칭되며, 분할된 서브루틴으로 전체 코드가 구성되는 모듈방식으로 설계된다. 따라서, 코드의 일부에 에러가 있을 경우, 전체 코드를 재기록할 필요없이 분리하여 수정할 수 있다. 에러가 있는 서브루틴이 발견되면, 프로그래머는 에러가 없는 서브루틴의 사본을 만들고, 프로그램 플로우는 에러가 있는 서브루틴을 대신하여 상기 서브루틴의 사본을 호출하게 된다. 이러한 기술은 마이크로 명령어 세트를 저장하는데 RAM과 ROM 모두를 사용하는 시스템을 통해 구현할 수 있다. 일반적으로 서브루틴은 ROM에 저장되는 반면, 서브루틴을 호출하는 메인 프로그램 코드는 RAM에 저장된다. 프로그램 플로우가 RAM의 마이크로 명령어 세트를 처리해 나갈 때, 메인 코드의 출구점 (exit point) 을 만나면 ROM에 저장되어 있는 서브루틴의 마이크로 명령어가 실행된다. 서브루틴의 실행이 완료되면, 프로그램 플로우는 서브루틴을 빠져나와 RAM의 메인 코드로 돌아간다. 그러나, 서브루틴에 에러가 있을 경우, 프로그래머는 에러가 있는 서브루틴에 대응되는 출구점을 디스에이블하고 새로운 서브루틴으로 에러를 패치해야 한다. ROM은 정적이므로, 그 새로운 서브루틴은 RAM에 저장되어야 한다.If a programming error is found in the microinstruction set stored in ROM, programmers create a patch to fix it. "Patch" is a technical term that refers to new code created to modify or add functionality to conventional code. Micro-instructions are collectively called "codes" and are designed in a modular fashion that consists of the entire code in divided subroutines. Thus, if there is an error in part of the code, it can be modified separately without the need to rewrite the entire code. If an error subroutine is found, the programmer makes a copy of the error free subroutine, and the program flow calls the copy of the subroutine in lieu of the error subroutine. This technique can be implemented in systems that use both RAM and ROM to store microinstruction sets. Typically, the subroutine is stored in ROM, while the main program code that calls the subroutine is stored in RAM. When the program flow processes the microinstruction set in RAM, it encounters the exit point of the main code and executes the microinstruction of the subroutine stored in ROM. When the execution of the subroutine completes, the program flow exits the subroutine and returns to the main code of RAM. However, if there is an error in the subroutine, the programmer must disable the exit point corresponding to the subroutine in error and patch the error with the new subroutine. Since the ROM is static, the new subroutine must be stored in RAM.

메인 코드에서 미리 정해진 포인트에서가 아니라면 에러가 있는 서브루틴으로 출입할 수 없기 때문에, 이 방법은 융통성이 떨어진다. 또한, 아무리 에러가 사소한 것이라 하더라도 서브루틴의 프로그래밍 에러를 수정하기 위해서는 서브루틴 전부를 RAM에 복사해야 하므로 RAM의 공간을 낭비하게 된다. 프로그램 플로우에 ROM과 RAM 사이의 출입점을 보다 융통성있게 설정할 수 있는 기술이 요구된다. 또한, ROM의 프로그래밍 에러를 수정하는데 요구되는 RAM 사이즈를 최소화할 필요가 있다.This method is inflexible, because you can't enter an erroneous subroutine unless at a predetermined point in the main code. Also, no matter how minor the error, in order to correct the programming error of the subroutine, the entire subroutine must be copied to RAM, which wastes the RAM space. There is a need for a technology that allows more flexible setting of entry points between ROM and RAM in the program flow. In addition, there is a need to minimize the RAM size required to correct ROM programming errors.

본 발명은 마이크로프로세서용 제어 기억 장치 분야에 관한 것이다. 보다 구체적으로, 본 발명은 판독 전용 메모리(ROM)와 임의 접근 메모리(RAM) 모두를 이용하는 제어 기억 장치의 수정에 관한 것이다.The present invention relates to the field of control storage for microprocessors. More specifically, the present invention relates to the modification of a control storage device using both read only memory (ROM) and random access memory (RAM).

도 1은 RAM과 ROM 사이의 종래의 프로그램 플로우를 나타내는 도면이다.1 is a diagram illustrating a conventional program flow between a RAM and a ROM.

도 2는 본 발명의 실시예에서의 RAM과 ROM 사이의 프로그램 플로우를 나타내는 도면이다.2 is a diagram illustrating a program flow between a RAM and a ROM in an embodiment of the present invention.

도 3은 RAM과 ROM 사이의 프로그램 플로우를 구현하는 회로의 블록도이다.3 is a block diagram of circuitry for implementing a program flow between a RAM and a ROM.

도 4는 데이터 처리 시스템의 블록도이다.4 is a block diagram of a data processing system.

본 발명은, 프로그래머들이 ROM의 마이크로 명령어에 대해 좀더 직접적인 액세스와 제어를 할 수 있도록, ROM에 상주하는 마이크로 명령어의 프로그램 플로우를 수정하는 방법 및 장치에 관한 것이다. ROM의 마이크로 명령어는 변경할 수 없기 때문에, 마이크로 명령어 세트에 대한 변경은 RAM에서 해야만 한다. 본 발명은 프로그래머로 하여금 RAM에 서브루틴 전부를 복사할 필요없이 ROM의 프로그래밍 에러에 직접 액세스하도록 한다. 또한, 본 발명은 프로그래머로 하여금 종래의 ROM을 새로 설계된 ROM으로 교체하지 않고 종래의 ROM에 기능을 부가하도록 한다.The present invention relates to a method and apparatus for modifying the program flow of microinstructions residing in a ROM so that programmers have more direct access and control over the microinstructions of the ROM. Because microinstructions in ROM cannot be changed, changes to the microinstruction set must be made in RAM. The present invention allows the programmer to directly access programming errors in ROM without having to copy all of the subroutines into RAM. The present invention also allows the programmer to add functionality to a conventional ROM without replacing the conventional ROM with a newly designed ROM.

본 발명의 실시예는, 정적 기억 장치로부터 프로그램 가능한 기억 장치로의 점프를 트리거하는 인터럽트를 발생하는 단계를 포함하는, 정적 기억 장치 내의 프로그램 플로우를 수정하는 방법이다.An embodiment of the present invention is a method of modifying a program flow in a static memory device comprising generating an interrupt that triggers a jump from the static memory device to the programmable memory device.

본 발명의 일 실시예에서는, 점프 포인트 레지스터를 사용하여 점프 포인트 어드레스를 보유한다. 상기 점프 포인트 어드레스는 프로그램 플로우에 인터럽트 이벤트를 트리거할 수 있다. 프로그램 카운터에는 프로그램 플로우의 현재마이크로 명령어에 대한 어드레스가 격납되어 있다. 프로그램 카운터가 점프 포인트 레지스터의 점프 포인트 어드레스와 동일한 어드레스를 보유하면, 인터럽트 이벤트가 발생한다. 이러한 인터럽트 이벤트에 의해 정적 기억 소자로부터 프로그램 가능한 기억 소자로 프로그램 플로우의 변경이 개시된다.In one embodiment of the present invention, a jump point register is used to hold a jump point address. The jump point address may trigger an interrupt event in the program flow. The program counter stores an address for the current micro instruction of the program flow. If the program counter has the same address as the jump point address in the jump point register, an interrupt event occurs. The interrupt event initiates a change in the program flow from the static memory element to the programmable memory element.

본 발명의 다른 실시예에서는, 상기 인터럽트 이벤트를 이용하여 정적 기억 장치의 프로그래밍 에러를 수정할 수 있다. 프로그래머는 정적 기억 장치에 상주하는 결함 있는 코드부에 대한 패치를 개발할 수 있다. 그 후, 프로그래머는 레지스터나 다른 기억 장치에 출구 어드레스를 저장할 수 있는데, 상기 출구 어드레스는 결함 있는 코드부 내의 마이크로 명령어에 대해 선결된 어드레스에 해당한다. 상기 출구 어드레스는 프로그램 플로우에서 실행 중인 모든 마이크로 명령어와 비교된다. 프로그램 플로우에서 상기 선결된 마이크로 명령어가 발생할 경우, 패치의 마이크로 명령어가 실행된다.In another embodiment of the present invention, the interrupt event may be used to correct programming errors of the static memory device. Programmers can develop patches for defective code residing in static storage. The programmer can then store the exit address in a register or other storage device, which corresponds to the address pre-determined for the microinstruction in the defective code portion. The exit address is compared with all micro instructions executing in the program flow. When the predetermined micro instruction occurs in the program flow, the micro instruction of the patch is executed.

본 발명의 또 다른 실시예에서는, 상기 인터럽트 이벤트로 프로그램 플로우를 변경하여 정적 기억 장치에 기능을 부가할 수 있다. 이러한 변경은, 프로그램 가능한 메모리 장치에 저장되어, 정적 메모리 장치로부터의 마이크로 코드가 실행되는 도중에 실행되는, 추가된 코드 형태일 수 있다.In another embodiment of the present invention, the program flow may be changed by the interrupt event to add a function to the static memory device. Such modifications may be in the form of added code, stored in a programmable memory device and executed during the execution of microcode from a static memory device.

본 발명의 또 다른 실시예에서는, 복수 개의 점프 포인트 레지스터가 인터럽트 포트에 연결될 수 있는데, 상기 비교기는 각 점프 포인트 레지스터를 개별적으로 인에이블하거나 디스에이블할 수 있다. 점프 포인트 레지스터 각각을 개별적인 인터럽트 이벤트와 관련지을 수 있다. 다중 점프 포인트 레지스터를 사용함으로써, 프로그래머는 향후 필요에 따라 점프 포인트를 할당할 수 있는 융통성을 갖게 된다.In another embodiment of the present invention, a plurality of jump point registers may be coupled to the interrupt port, and the comparator may individually enable or disable each jump point register. Each jump point register can be associated with a separate interrupt event. By using multiple jump point registers, programmers have the flexibility to assign jump points as needed in the future.

이러한 수정은 ROM의 펌웨어 에러를 수정하는데 필요한 RAM 사이즈를 감소시키며 ROM의 기능을 향상시킨다.This modification reduces the RAM size needed to correct ROM firmware errors and improves ROM functionality.

이하, 본 발명의 또 다른 목적과 이점을 자세히 설명한다.Hereinafter, another object and advantages of the present invention will be described in detail.

도 1은 컴퓨터 시스템이나 범용 마이크로 컴퓨터와 같은 데이터 처리 시스템의 마이크로 명령어에 대한 에러 수정 방법, 즉 "디버깅" 방법을 구현하는 종래 기술을 나타낸 블록도이다. 예시적인 목적을 위하여, ROM과 RAM을 사용하여 본 발명의 실시예를 설명한다. 그러나, 이하의 상세한 설명을 통해 명백히 알 수 있듯이, 어떠한 정적 기억 장치 및 휘발성 기억 장치에도 본 발명을 응용할 수 있다. 도 1 에서, RAM (100) 은 ROM (110) 의 서브루틴을 호출하는 코드로 프로그램 되어 있다. 다음에 실행될 마이크로 명령어의 어드레스를 보유하고 있는 프로그램 카운터(도시되지 않음)가 ROM 스택의 마이크로 명령어에 대한 어드레스를만날 때까지 RAM 스택을 처리해 간다. 포인트 (101) 에서, 프로그램 플로우는 RAM (100) 의 마이크로 명령어 세트를 빠져나와 ROM (110) 의 마이크로 명령어 세트로 들어간다. 프로그램 카운터는 RAM (100) 의 마이크로 명령어의 어드레스를 만날 때까지 ROM (110) 을 처리해 간다. 포인트 (102) 에서, 프로그램 플로우는 ROM (110) 의 마이크로 명령어 세트를 빠져나와 RAM (100) 의 마이크로 명령어 세트로 다시 들어간다. ROM (110) 에 저장되어 있는 다양한 서브루틴들에 대해 이런 과정 자체가 반복된다. 그러나, 만약 ROM (110) 의 프로그래밍 에러가 수정될 필요가 있거나 다른 기능이 부가될 필요가 있다면, 프로그래머는 RAM (100) 을 다시 프로그램하여 ROM (110) 에 저장된 서브루틴을 바이패스할 수 있다. 당업자는, 프로그래밍 에러가 제거된 서브루틴 전체를 RAM (100) 에 복사하고, 프로그램 플로우는 ROM (110) 에 저장된 에러가 있는 서브루틴이 아니라 RAM (100) 에 복사된 서브루틴을 실행하도록 RAM (100) 을 다시 프로그래밍하여 디버그한다.1 is a block diagram illustrating a prior art that implements an error correction method, i.e., a "debugging" method, for a microinstruction of a data processing system such as a computer system or a general purpose microcomputer. For illustrative purposes, embodiments of the present invention will be described using ROM and RAM. However, as will be apparent from the following detailed description, the present invention can be applied to any static memory and volatile memory. In FIG. 1, the RAM 100 is programmed with code that calls a subroutine of the ROM 110. The RAM stack is processed until a program counter (not shown) that holds the address of the microinstruction to be executed next encounters the address of the microinstruction of the ROM stack. At point 101, the program flow exits the microinstruction set of RAM 100 and enters the microinstruction set of ROM 110. The program counter processes the ROM 110 until it encounters an address of a micro instruction of the RAM 100. At point 102, the program flow exits the microinstruction set of ROM 110 and reenters the microinstruction set of RAM 100. This process itself is repeated for the various subroutines stored in ROM 110. However, if the programming error of ROM 110 needs to be corrected or other functionality needs to be added, the programmer can bypass the subroutine stored in ROM 110 by reprogramming RAM 100. Those skilled in the art will copy the entire subroutine from which programming errors have been eliminated to RAM 100, and the program flow will be executed to execute the subroutine copied to RAM 100 rather than the faulty subroutine stored in ROM 110. Reprogram and debug 100).

도 1 에 도시된 바와 같이, 만약 서브루틴 (105) 에서 프로그래밍 에러 (106) 가 발견되면, 프로그래머는 RAM (100) 에서 ROM (110) 으로의 데이터 경로 (103) 를 디스에이블하고 RAM (100) 에 상주하는 대체 서브루틴 (107) 으로 새로운 데이터 경로 (104) 를 설계해야 한다. 서브루틴 (107) 이 완료되면, 데이터 경로 (108) 는 디스에이블된 데이터 경로 (103) 다음에 위치한, RAM (100) 의 표시된 마이크로 명령어로 돌아간다.As shown in FIG. 1, if a programming error 106 is found in the subroutine 105, the programmer disables the data path 103 from the RAM 100 to the ROM 110 and the RAM 100. The new data path 104 must be designed with an alternate subroutine 107 that resides in. Once the subroutine 107 is complete, the data path 108 returns to the indicated microinstruction of the RAM 100, located next to the disabled data path 103.

이것은, 프로그래밍 에러의 사이즈가 작을 경우 RAM 자원의 엄청난 낭비가 될 수 있다. ROM은 정적이기 때문에, 서브루틴의 극히 일부만 재기록할 필요가있더라도, 프로그램 플로우가 ROM의 다른 포인트에서 RAM으로 다시 향하도록 ROM의 마이크로 명령어를 변경할 수 없다.This can be a huge waste of RAM resources when the size of programming errors is small. Since the ROM is static, even if only a small portion of the subroutine needs to be rewritten, the microinstruction of the ROM cannot be changed so that the program flow is redirected back to RAM at another point in the ROM.

도 2 는, RAM (200) 에 서브루틴 전체를 복사할 필요없이 ROM (210) 에 저장된 에러가 있는 서브루틴을 디버그할 수 있는, RAM (200) 과 ROM (210) 사이의 프로그램 플로우를 나타내는 본 발명의 실시예인 블록도이다. 또한, ROM (210) 에 저장된 서브루틴에 추가적 특징과 기능이 포함되도록 프로그램할 수도 있다. 마이크로 코드에 에러가 없는 부분에서는 도 1 에서와 같이 프로그램 플로우가 RAM (200) 을 빠져나와 ROM (210) 으로 들어간다. 그러나, ROM (210) 에서 버그가 발견되면, 도 2 의 프로그램 플로우는 버그를 수정하기 위해 RAM (200) 의 많은 부분을 낭비하지 않고도 버그에 대한 패치를 프로그램할 수 있도록 한다.FIG. 2 is a diagram illustrating a program flow between RAM 200 and ROM 210 that can debug an error subroutine stored in ROM 210 without having to copy the entire subroutine to RAM 200. A block diagram that is an embodiment of the invention. In addition, subroutines stored in ROM 210 may be programmed to include additional features and functionality. In the part where there is no error in the microcode, the program flow exits the RAM 200 and enters the ROM 210 as shown in FIG. 1. However, if a bug is found in the ROM 210, the program flow of FIG. 2 allows to program a patch for the bug without wasting much of the RAM 200 to fix the bug.

프로그램 카운터(도시되지 않음)가 ROM 스택의 마이크로 명령어의 어드레스가 될 때까지 RAM 스택을 처리해 간다. 포인트 (201) 에서, 프로그램 플로우는 RAM (200) 의 마이크로 명령어 세트를 빠져나와 ROM (210) 의 마이크로 명령어 세트로 들어간다. 프로그램 카운터가 RAM (200) 의 마이크로 명령어의 어드레스가 될 때까지 ROM (210) 을 처리해 간다. 포인트 (202) 에서, 프로그램 플로우는 ROM (210) 의 마이크로 명령어 세트를 빠져나와 RAM (200) 의 마이크로 명령어 세트로 들어간다. ROM (210) 에 저장되어 있는 다양한 서브루틴들에 대해 이러한 과정 자체가 반복된다.The RAM stack is processed until the program counter (not shown) is the address of the microinstruction of the ROM stack. At point 201, the program flow exits the microinstruction set of RAM 200 and enters the microinstruction set of ROM 210. The ROM 210 is processed until the program counter becomes the address of the micro instruction of the RAM 200. At point 202, the program flow exits the microinstruction set of ROM 210 and enters the microinstruction set of RAM 200. This process itself is repeated for the various subroutines stored in ROM 210.

프로그래밍 에러 (205) 가 포함된 서브루틴 (208) 까지 프로그램 플로우 (203) 가 계속된다. 이 서브루틴의 에러없는 명령어들이 실행되다가, 포인트(204) 에서 그 프로그램 플로우는 패치를 위해 RAM (200) 으로 돌아간다. 포인트 (206) 에서 패치가 완료되면 프로그램 플로우는 ROM (210) 으로 돌아간다. 서브루틴이 완료되면, 데이터 경로 (207) 는 RAM (200) 으로 돌아간다.Program flow 203 continues until subroutine 208 contains a programming error 205. Error-free instructions of this subroutine are executed, and at point 204 the program flow returns to RAM 200 for patching. When the patch is complete at point 206, the program flow returns to ROM 210. When the subroutine is completed, data path 207 returns to RAM 200.

본 발명의 실시예에서는, 인터럽트 회로가 종래의 데이터 처리 시스템에 적용된다. 도 3 은 도 2 에 도시된 프로그램 플로우를 구현할 수 있는 인터럽트 회로의 블록도이다.In an embodiment of the present invention, an interrupt circuit is applied to a conventional data processing system. FIG. 3 is a block diagram of an interrupt circuit that may implement the program flow shown in FIG. 2.

도 3 의 인터럽트 회로는, 일반적으로 점프 포인트 레지스터라 불리는, 마이크로 명령어의 어드레스를 저장할 수 있는 복수의 레지스터나 다른 기억 장치로 구성된다. 점프 포인트 레지스터는 인터럽트 이벤트를 트리거하는 점프 포인트 어드레스를 보유한다. 공지된 바와 같이, 인터럽트는 프로세스 밖에서 외부적인 이벤트가 발생할 경우 그 프로세스를 일시적으로 보류시킨다. 인터럽트 신호가 인터럽트 이벤트의 발생을 지시하면 프로세서는 현재의 프로세스를 보류하고 인터럽트 신호가 요청하는 작업을 수행한다. 그런데, 본 발명의 실시예에서, 인터럽트 신호는 매우 상이한 방식으로 사용된다. 외부 이벤트의 발생을 나타내기 위해 인터럽트를 사용하는 것이 아니라, 도 3 의 인터럽트 회로는 ROM에 상주하는 마이크로 코드 일부를 바이패스하기 위해 인터럽트를 사용한다.The interrupt circuit of FIG. 3 is composed of a plurality of registers or other storage devices capable of storing addresses of microinstructions, generally called jump point registers. The jump point register holds a jump point address that triggers an interrupt event. As is known, an interrupt temporarily suspends a process when an external event occurs outside the process. When the interrupt signal indicates the occurrence of an interrupt event, the processor suspends the current process and performs the task requested by the interrupt signal. By the way, in the embodiment of the present invention, the interrupt signal is used in a very different way. Rather than using interrupts to indicate the occurrence of external events, the interrupt circuit of FIG. 3 uses interrupts to bypass portions of the microcode residing in ROM.

도 3 에 구현된 인터럽트 회로는 3 개의 점프 포인트 레지스터 (300, 310, 320) 를 포함하고 있다. 그런데, 점프 포인트 레지스터의 수는 본 발명의 범위와 관계없이 회로 설계자의 기호에 따라 변경될 수 있다. 3 개의 점프 포인트 레지스터 각각은 라인 (303, 313, 323) 을 통해 3 개의 비교기 (308, 318, 328) 에각각 연결된다. 비교기는 2 개의 입력워드를 비교하는 장치로서 대개는 배타적 논리합 게이트로 구성되지만, 비교 기능을 수행할 수 있다면 어떤 장치라도 사용될 수 있다. 그러나, 예시적인 목적을 위해, "비교기" 라는 용어를 사용할 것이다. 각각의 비교기 (308, 318, 328) 는 제어 라인 (304, 305) 을 통해 프로세서 (320) 에 연결된다.The interrupt circuit implemented in FIG. 3 includes three jump point registers 300, 310, 320. By the way, the number of jump point registers can be changed according to the preference of the circuit designer regardless of the scope of the present invention. Each of the three jump point registers is connected to three comparators 308, 318, 328 via lines 303, 313, 323, respectively. A comparator is a device that compares two input words, usually consisting of an exclusive OR gate, but any device can be used as long as it can perform the comparison function. However, for illustrative purposes, the term "comparator" will be used. Each comparator 308, 318, 328 is connected to the processor 320 via control lines 304, 305.

점프 포인트 레지스터 (300, 310, 320) 각각은 인터럽트 이벤트에 대응되는 어드레스로 설정된다. 라인 (301) 은 프로세서 (320) 로부터 각 점프 포인트 레지스터로 그 어드레스를 로드한다.Each of the jump point registers 300, 310, and 320 is set to an address corresponding to an interrupt event. Line 301 loads its address from processor 320 into each jump point register.

제어 라인 (304) 은 프로그램 카운터의 내용을 비교기 (308, 318, 328) 로 전달한다. 프로그램 카운터는 다음에 실행될 마이크로 명령어의 어드레스를 보유하는 레지스터이다. 어떤 데이터 처리 시스템에서는, 현재 실행되고 있는 마이크로 명령어을 보유하도록 프로그램 카운터를 설계한다. 본 발명의 실시예를 구현하기 위하여, 프로그램 카운터의 내용을 후행 (predictive) 상태나 현행 상태에 제한할 필요는 없다.Control line 304 communicates the contents of the program counter to comparators 308, 318, and 328. The program counter is a register holding the address of the microinstruction to be executed next. In some data processing systems, program counters are designed to hold the microinstructions that are currently being executed. In order to implement an embodiment of the present invention, it is not necessary to limit the contents of the program counter to the predictive state or the current state.

각 점프 포인트 레지스터와 관련된 소정의 기능을 달성하기 위해, 제어 라인 (305) 은 프로세서 (320) 로부터 비교기 (308, 318, 328) 각각을 인에이블하거나 디스에이블하는 제어 신호를 전달한다.To achieve the desired function associated with each jump point register, control line 305 carries control signals from processor 320 to enable or disable each of comparators 308, 318, and 328.

제어 라인 (306) 은, 비교기 (308, 318, 328) 로부터 프로세서 (320) 의 상태 레지스터(도시되지 않음)로 점프 포인트 레지스터 중 어느 것이 프로그램 카운터와 동일한 어드레스를 보유하고 있는지를 나타내는 상태 신호를 전달한다.프로세서 (320) 에 상태 레지스터를 배치하는 것은 설계 선택의 문제일 뿐이며 본 발명의 범위에 영향을 주지 못한다. 본 발명의 또 다른 실시예로서, 프로그램 카운터와 동일한 어드레스를 가진 점프 포인트 레지스터를 확인하는데 프로그램 카운터를 사용할 수도 있다. 만약 프로그램 카운터가 사용될 경우, 문제가 되는 점프 포인트 레지스터를 확인하기 위해서는 어드레스의 모든 비트를 조사해야 한다. 만약 상태 레지스터가 사용된다면, 하나의 비트만 조사하면 된다. 어느 점프 포인트 레지스터가 현재의 인터럽트와 관계된 점프 포인트 어드레스를 보유하고 있는지를 확인할 목적으로 프로그램 카운터나 상태 레지스터를 사용하는 것은 설계 선택의 문제일 뿐이다.Control line 306 transfers a status signal from comparators 308, 318, and 328 to a status register (not shown) of processor 320 indicating which of the jump point registers has the same address as the program counter. Placement of a status register in processor 320 is only a matter of design choice and does not affect the scope of the present invention. As another embodiment of the present invention, the program counter may be used to identify a jump point register having the same address as the program counter. If a program counter is used, all bits of the address must be examined to identify the jump point register in question. If the status register is used, only one bit needs to be examined. Using the program counter or status registers to determine which jump point register holds the jump point address associated with the current interrupt is only a matter of design choice.

프로그램 카운터의 어드레스가 점프 포인트 레지스터 (300, 310, 320) 의 어드레스 중 하나와 동일하고 상기 점프 포인트 레지스터에 대응되는 비교기를 인에이블하는 제어 신호가 전달되면, 프로세서 (320) 로 상태 신호가 전달되고 인터럽트 제어기(도시되지 않음)로 신호가 전달되어 인터럽트가 발생한다.When the address of the program counter is the same as one of the addresses of the jump point registers 300, 310, and 320, and a control signal for enabling the comparator corresponding to the jump point register is transmitted, the status signal is transmitted to the processor 320. A signal is passed to an interrupt controller (not shown) to generate an interrupt.

이 경우, 인터럽트 이벤트는 프로그램 플로우의 보류를 호출하는 외부 이벤트라기보다, RAM에 저장되어 있는 마이크로 명령어로 프로그램 카운터를 향하게 하는 인터럽트 이벤트이다. 프로그램 플로우는 ROM으로 다시 향하게 될 때까지 RAM에서 계속된다. RAM은 동적이기 때문에 프로그램 카운터와 그에 따른 프로그램 플로우를 ROM에 저장되어 있는 어떤 마이크로 명령어로도 다시 향하게 할 수 있다.In this case, the interrupt event is an interrupt event that is directed to the program counter by a micro-instruction stored in RAM, rather than an external event that calls to hold the program flow. The program flow continues in RAM until it is directed back to ROM. Because RAM is dynamic, program counters and the resulting program flow can be redirected to any microinstruction stored in ROM.

프로그램 코드의 디버깅을 위해, 프로그래머는 ROM의 마이크로 명령어 서브루틴부분에서 버그를 확인하여 그 버그 주소를 점프 포인트 레지스터에 저장한다. 만약 상기 버그가 몇 줄의 코드로 수정될 수 있는 사소한 것이라면, 버그에 대한 패치를 RAM에 용이하게 저장할 수 있다. 프로그램 카운터가 점프 포인트 레지스터에 저장되어 있는 그 버그 주소를 만나면, 비교기에서 인터럽트 제어기로 신호가 전달되고, 이에 의해 프로그램 플로우를 RAM에 저장되어 있는 패치로 다시 향하게 하는 인터럽트가 발생한다. 그 패치의 마이크로 명령어 전부가 실행되고 나면, 이 패치에 후속하는 RAM의 마이크로 명령어는 서브루틴의 에러부에 후속하는 ROM의 마이크로 명령어로 프로그램 플로우를 다시 향하게 할 수 있다. 이런 식으로, 서브루틴 전부를 RAM에 복사할 필요없이 사소한 에러를 포함한 서브루틴을 수정할 수 있다.To debug the program code, the programmer checks the bug in the microinstruction subroutine section of the ROM and stores the bug address in the jump point register. If the bug is a minor one that can be fixed in a few lines of code, you can easily store a patch for the bug in RAM. When the program counter encounters the bug address stored in the jump point register, a signal is sent from the comparator to the interrupt controller, thereby generating an interrupt that directs the program flow back to the patch stored in RAM. Once all of the microinstructions of the patch have been executed, the microinstructions of the RAM following this patch can redirect the program flow back to the microinstructions of the ROM following the error portion of the subroutine. In this way, you can modify subroutines that contain minor errors without having to copy all of the subroutines into RAM.

ROM에 저장된 프로그램 코드에 기능을 추가할 목적으로, 프로그래머는 기존의 ROM 서브루틴 구조 내에 서브루틴을 추가하는데 점프 포인트 레지스터를 활용할 수 있다. 본 발명의 일 실시예에서, 프로그래머는 마이크로 명령어의 어드레스를 점프 포인트 레지스터에 삽입할 수 있는데, 상기 마이크로 명령어의 어드레스는 ROM에 상주하는 프로그램 서브루틴의 일부가 된다. 프로그램 카운터가 상기 마이크로 명령어의 어드레스를 보유하면, 프로그램 플로우는 RAM에 저장된 마이크로 명령어 대응 세트로 점프하게 될 것이다. 상기 마이크로 명령어 대응 세트의 마지막 명령어에 의해 프로그래머는 프로그램 플로우를 원하는 서브루틴으로 다시 향하게 할 수 있다. 이런 식으로, 프로그래머는 프로그램되어 있는 종래의 ROM을 대체하지 않고도 ROM에 새로운 기능을 부가할 수 있다. 따라서, 재프로그램된 ROM으로 대체하지 않고도 ROM을 갱신할 수 있다.For the purpose of adding functionality to program code stored in ROM, the programmer can use the jump point register to add subroutines within existing ROM subroutine structures. In one embodiment of the invention, the programmer can insert the address of the microinstruction into the jump point register, which becomes part of the program subroutine residing in the ROM. If the program counter holds the address of the microinstruction, the program flow will jump to the microinstruction corresponding set stored in RAM. The last instruction in the microinstruction corresponding set allows the programmer to direct the program flow back to the desired subroutine. In this way, a programmer can add new functionality to a ROM without replacing the conventional ROM that is programmed. Thus, the ROM can be updated without replacing the reprogrammed ROM.

도 3 의 인터럽트 회로는 본 발명의 일 실시예로서, 3 개의 점프 포인트 레지스터와 대응되는 비교기들이 논리합 게이트 (330) 를 통해 프로세서, 즉 인터럽트 제어기의 인터럽트 요구(IRQ) 핀에 연결되어 있다. 본 발명의 또 다른 실시예로, 데이터 처리 시스템 내에 다중 인터럽트 회로를 사용하여 인터럽트가 트리거될 때마다 발생하게 될 새로운 코드에 대한 점검량을 최소화할 수 있다. 하나의 인터럽트 회로 내에 다수의 점프 포인트 레지스터가 사용되면, 방금 트리거된 인터럽트에 대응되는 새로운 코드가 무엇인지를 결정하는데 대량의 MIPS가 소모된다. 그러나, 각 인터럽트 회로가 3 개 이하의 점프 포인트 레지스터를 구비하며 별개의 IRQ 핀에 연결되어 있는 경우라면, 트리거된 인터럽트 이벤트에 대응되는 코드를 구현하는데 MIPS의 소모가 적다. 다중 인터럽트 회로나 단일 인터럽트 회로를 사용하는 것은 회로 기판 설계자가 필요에 따라 선택할 문제이다. 그러나, 여기에서 설명된 바와 같은 인터럽트 회로의 어떠한 변형도 본 발명의 범위 내에 해당된다.The interrupt circuit of FIG. 3 is an embodiment of the present invention in which comparators corresponding to the three jump point registers are connected to the interrupt request (IRQ) pin of the processor, that is, the interrupt controller, through the OR gate 330. In another embodiment of the present invention, multiple interrupt circuits within the data processing system can be used to minimize the amount of check for new code that will be generated each time an interrupt is triggered. If multiple jump point registers are used in one interrupt circuit, a large amount of MIPS is consumed to determine what new code corresponds to the interrupt just triggered. However, if each interrupt circuit has three or fewer jump point registers and is connected to separate IRQ pins, then MIPS is less expensive to implement the code corresponding to the triggered interrupt event. Using multiple interrupt circuits or a single interrupt circuit is a matter for the circuit board designer to choose as needed. However, any variation of the interrupt circuit as described herein is within the scope of the present invention.

도 4 는 데이터 처리 시스템을 나타내는 블록도이다. 당업자는 공지의 회로와 제어 로직에 대한 상세한 기술 없이도 본 발명을 실시할 수 있으므로, 요점을 분명히 하기 위해, 그에 대한 상세한 설명은 도 4 에서 생략하였다. 도 4 의 블록도는 오퍼레이션 코어로부터 제어 로직이 분리된 시스템의 대표적인 형태이다. 상기 시스템은 디지털 신호 처리기나 응용 주문형 집적 회로 (ASIC) 일 수 있다. 그러나, 제어 로직이 오퍼레이션 코어와 결합된 것과 같은 다른 아키텍쳐 형태의 데이터 처리 시스템에도 본 발명을 사용할 수 있다.4 is a block diagram illustrating a data processing system. Those skilled in the art can implement the present invention without detailed description of well-known circuits and control logic, and therefore, detailed descriptions thereof are omitted in FIG. 4 for clarity. 4 is a representative form of a system in which control logic is separated from an operation core. The system may be a digital signal processor or an application specific integrated circuit (ASIC). However, the present invention can also be used for other architecture types of data processing systems, such as control logic combined with an operation core.

프로그램 플로우 제어 장치 (400) 는, 제어 기억 장치 RAM (430), 제어 기억 장치 ROM (440), 인터럽트 회로 (450) 및 명령어 디코더 (410) 에 연결된다. 인터럽트 회로 (450) 는 도 3 의 인터럽트 회로일 수 있다. 프로그램 플로우 제어 장치 (400) 는 프로그램 카운터의 내용을 생성하고, 현재의 명령어가 실행되었는지 취소되었는지를 나타내는 플래그를 생성하며, 직접 메모리 액세스 (DMA) 및 인터럽트와 같은 외부 이벤트를 처리한다. 명령어 디코더 (410) 는 오퍼레이션 코어 (420) 내에 집적될 수 있으며, 라인 (405) 을 통해 프로그램 플로우 제어 장치 (400) 에 연결된다. 명령어 디코더 장치 (410) 도 라인 (404) 을 통해 제어 기억 장치 RAM (430) 과 제어 기억 장치 ROM (440) 에 연결된다. 인터럽트 회로 (450) 는 프로그램 플로우 제어 장치 (400), 제어 기억 장치 RAM (430), 제어 기억 장치 ROM (440) 및 오퍼레이션 코어 (420) 에 연결된다. 프로그램 플로우 제어 장치 (400) 는 제어 기억 장치 RAM (430), 제어 기억 장치 ROM (440) 또는 인터럽트 회로 (450) 로부터의 입력에 기초하여 프로그램 카운터를 생성한다. 프로그램 플로우 제어 장치 (400) 는, 제어 기억 장치 RAM (430), 제어 기억 장치 ROM (440) 또는 인터럽트 회로 (450) 로부터의 입력을 인에이블하는데 RAM_CS (401), ROM_CS (403) 및 EXEC (412) 의 라인들을 사용한다. 라인 (422) 은 인터럽트 회로 (450) 의 점프 포인트 레지스터 (도시되지 않음) 로 점프 포인트 어드레스를 로드한다. 라인 (402) 은 프로그램 카운터의 내용을 제어 기억 장치 RAM (430), 제어 기억 장치 ROM (440) 및 인터럽트 회로 (450) 로 전달한다.인터럽트 회로 (450) 가, 프로그램 카운터가 현재 점프 포인트 레지스터 (도시되지 않음) 에 보유된 점프 포인트 어드레스와 동일한 어드레스를 보유하고 있음을 나타내면, 프로그램 플로우 제어 장치 (400) 에 집적될 수도 있는 인터럽트 제어기 (도시되지 않음) 에 의해 인터럽트가 발생한다. 인터럽트 회로 (450) 가 인터럽트를 발생하면, 프로그램 플로우 제어 장치 (400) 는 인터럽트 이벤트에 의해 특정된 후속 마이크로 명령어의 어드레스를 보유하도록 프로그램 카운터를 리셋한다.The program flow control device 400 is connected to the control storage device RAM 430, the control storage device ROM 440, the interrupt circuit 450, and the instruction decoder 410. Interrupt circuit 450 may be the interrupt circuit of FIG. 3. The program flow control device 400 generates the contents of the program counter, generates a flag indicating whether the current instruction has been executed or canceled, and processes external events such as direct memory access (DMA) and interrupts. The instruction decoder 410 may be integrated into the operation core 420 and is connected to the program flow control apparatus 400 via the line 405. The command decoder device 410 is also connected to the control memory RAM 430 and the control memory ROM 440 via a line 404. The interrupt circuit 450 is connected to the program flow control device 400, the control storage device RAM 430, the control storage device ROM 440, and the operation core 420. The program flow control device 400 generates a program counter based on an input from the control storage device RAM 430, the control storage device ROM 440, or the interrupt circuit 450. The program flow control apparatus 400 enables the inputs from the control storage RAM 430, the control storage ROM 440, or the interrupt circuit 450 to enable the RAM_CS 401, the ROM_CS 403, and the EXEC 412. ) Lines. Line 422 loads a jump point address into a jump point register (not shown) of interrupt circuit 450. Line 402 delivers the contents of the program counter to control memory RAM 430, control memory ROM 440, and interrupt circuit 450. Interrupt circuit 450 allows the program counter to display the current jump point register ( If it is shown that it has the same address as the jump point address held in (not shown), an interrupt is generated by an interrupt controller (not shown) which may be integrated in the program flow control apparatus 400. When the interrupt circuit 450 generates an interrupt, the program flow control device 400 resets the program counter to hold the address of the subsequent microinstruction specified by the interrupt event.

도 4 의 데이터 처리 시스템은 본 발명이 어떻게 활용될 수 있는지를 보여 주는 하나의 실시예일 뿐이다. 본 발명은 특정 하드웨어 및 소프트웨어의 구성에 제한되지 않으며, 다양한 컴퓨터 프로그래밍 언어와 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 프로그램 플로우 제어 장치 (400), 명령어 디코더 (410) 및 오퍼레이션 코어 (420) 의 기능은, 블록 (490) 으로 도시된 바와 같이, 범용 프로세서를 사용하여 구현할 수도 있다. 본 발명은 ROM, 자기 테이프 기억 장치, 콤팩트 디스크나 플로피 디스크와 같은 정적 기억 장치에 저장된 코드를 갖는 형태라면 어디에도 활용될 수 있다.The data processing system of FIG. 4 is just one embodiment showing how the present invention can be utilized. The present invention is not limited to specific hardware and software configurations, and can be implemented using various computer programming languages and hardware. For example, the functionality of the program flow control apparatus 400, the instruction decoder 410, and the operation core 420 may be implemented using a general purpose processor, as shown by block 490. The present invention can be used anywhere as long as it has a code stored in a static memory device such as a ROM, a magnetic tape storage device, a compact disk or a floppy disk.

본 발명의 범위를 벗어나지 않으면서, 다른 실시 형태를 가질 수 있으며 다양한 측면의 변형이 가능하다. 따라서, 도면과 설명은 제한적인 의미가 아닌 예시적인 의미로 보아야 한다.Other embodiments may be modified and various aspects may be modified without departing from the scope of the present invention. Accordingly, the drawings and description are to be regarded in an illustrative rather than a restrictive sense.

Claims (15)

정적 기억 장치의 프로그램 플로우를 수정하는 방법으로서,As a method of modifying the program flow of static storage, 상기 정적 기억 장치로부터 프로그램 가능한 기억 장치로의 점프를 트리거하는 인터럽트를 발생하는 단계를 구비하는 것을 특징으로 하는 방법.Generating an interrupt that triggers a jump from the static memory device to a programmable memory device. 제 1 항에 있어서,The method of claim 1, 상기 인터럽트를 발생하는 단계는,Generating the interrupt, 제 1 마이크로 명령어의 어드레스 사본을 저장하는 단계로서, 상기 제 1 마이크로 명령어는 제 1 마이크로 명령어 세트의 일부이며, 상기 제 1 마이크로 명령어 세트는 상기 정적 기억 장치에 상주하는 서브루틴의 서브세트인, 단계;Storing an address copy of a first microinstruction, wherein the first microinstruction is part of a first microinstruction set, wherein the first microinstruction set is a subset of the subroutine residing in the static memory device. ; 상기 프로그램 가능한 기억 장치에 대체 마이크로 명령어 세트를 저장하는 단계;Storing an alternate micro instruction set in the programmable storage device; 프로그램 플로우 동안, 상기 서브루틴의 각 마이크로 명령어의 어드레스와 저장되어 있는 상기 사본을 비교하는 단계; 및During a program flow, comparing an address of each micro-instruction of the subroutine with the stored copy; And 상기 비교 단계의 결과가 일치할 경우, 상기 제 1 마이크로 명령어 세트를 상기 대체 마이크로 명령어 세트로 치환하는 단계로서, 상기 정적 기억 장치로부터 상기 프로그램 가능한 기억 장치로 상기 프로그램 플로우의 점프를 발생하는, 단계를 포함하는 것을 특징으로 하는 방법.If the result of the comparing step matches, replacing the first microinstruction set with the replacement microinstruction set, generating a jump in the program flow from the static memory device to the programmable memory device. Method comprising a. 제 2 항에 있어서,The method of claim 2, 상기 정적 기억 장치는 판독 전용 기억 장치 (ROM) 를 구비하고, 상기 프로그램 가능한 기억 장치는 임의 접근 기억 장치 (RAM) 를 구비하는 것을 특징으로 하는 방법.Wherein said static memory device comprises a read-only memory device (ROM) and said programmable memory device comprises a random access memory device (RAM). 제 3 항에 있어서,The method of claim 3, wherein 상기 대체 마이크로 명령어 세트는 상기 서브루틴에 존재하는 프로그래밍 에러에 대한 패치를 포함하는 것을 특징으로 하는 방법.Wherein said alternative microinstruction set includes a patch for programming errors present in said subroutine. 제 1 항에 있어서,The method of claim 1, 상기 인터럽트를 발생하는 단계는,Generating the interrupt, 제 1 마이크로 명령어의 어드레스 사본을 저장하는 단계로서, 상기 제 1 마이크로 명령어는 제 1 서브루틴에 포함된 제 1 마이크로 명령어 세트의 일부이며, 상기 제 1 서브루틴은 상기 정적 기억 장치에 상주하는, 단계;Storing an address copy of a first microinstruction, wherein the first microinstruction is part of a first set of microinstructions included in a first subroutine, wherein the first subroutine resides in the static memory device; ; 프로그램 가능한 기억 장치에 부가된 마이크로 명령어 세트를 저장하는 단계;Storing a micro-instruction set added to the programmable storage device; 프로그램 플로우 동안, 상기 서브루틴의 각 마이크로 명령어의 어드레스와 저장되어 있는 상기 사본을 비교하는 단계; 및During a program flow, comparing an address of each micro-instruction of the subroutine with the stored copy; And 상기 비교 단계의 결과가 일치할 경우 상기 부가된 마이크로 명령어 세트를 부가하는 단계로서, 상기 정적 기억 장치로부터 상기 프로그램 가능한 기억 장치로상기 프로그램 플로우의 점프를 발생하는, 단계를 포함하는 것을 특징으로 하는 방법.Adding the added microinstruction set if the results of the comparing step match, generating a jump of the program flow from the static memory device to the programmable memory device. . 제 5 항에 있어서,The method of claim 5, 상기 부가된 마이크로 명령어 세트는 부가된 기능을 갖는 제 2 서브루틴인 것을 특징으로 하는 방법.And said added microinstruction set is a second subroutine with added functionality. 제 1 항에 있어서,The method of claim 1, 상기 인터럽트를 발생하는 단계는,Generating the interrupt, 인터럽트 이벤트를 트리거하는 점프 포인트 어드레스를 보유하는데 점프 포인트 레지스터를 사용하는 단계;Using a jump point register to hold a jump point address that triggers an interrupt event; 상기 정적 기억 장치에 상주하는 제 1 마이크로 명령어 세트를 순차적으로 실행하는 단계로서, 순차적으로 실행된 상기 제 1 마이크로 명령어 세트의 각 마이크로 명령어는 상기 순차적인 실행 동안 프로그램 카운터에 별도로 저장된 대응 어드레스를 갖는, 단계; 및Sequentially executing a first microinstruction set residing in the static memory, wherein each microinstruction of the sequentially executed first microinstruction set has a corresponding address stored separately in a program counter during the sequential execution; step; And 상기 프로그램 카운터가 상기 점프 포인트 레지스터의 점프 포인트 어드레스와 동일한 어드레스를 보유할 경우, 상기 인터럽트 이벤트로 상기 프로그램 플로우를 인터럽트하는 단계를 포함하는 것을 특징으로 하는 방법.Interrupting the program flow with the interrupt event when the program counter has the same address as the jump point address of the jump point register. 제 7 항에 있어서,The method of claim 7, wherein 상기 프로그램 플로우를 인터럽트하는 단계는,Interrupting the program flow, 상기 프로그램 카운터의 어드레스와 상기 점프 포인트 레지스터에 보유된 어드레스를 비교하는 비교기를 조건에 따라 인에이블하는 제어 신호를 셋팅하는 단계; 및Setting a control signal for enabling a comparator that compares an address of the program counter with an address held in the jump point register according to a condition; And 상기 비교기가 인에이블 제어 신호를 수신할 경우 상기 점프 포인트 어드레스에 대응되는 제 2 마이크로 명령어 세트를 실행하는 단계로서, 상기 제 2 마이크로 명령어 세트는 프로그램 가능한 기억 장치에 상주하는, 단계를 포함하는 것을 특징으로 하는 방법.Executing a second microinstruction set corresponding to the jump point address when the comparator receives an enable control signal, wherein the second microinstruction set resides in a programmable storage device. How to. 제 8 항에 있어서, 상기 프로그램 가능한 기억 장치는 임의 접근 기억 장치 (RAM) 인 것을 특징으로 하는 방법.10. The method of claim 8, wherein the programmable memory device is random access memory (RAM). 제 1 항에 있어서,The method of claim 1, 상기 인터럽트를 발생하는 단계는,Generating the interrupt, 복수의 점프 포인트 어드레스를 저장하는 단계로서, 각 점프 포인트 어드레스는 대응되는 점프 포인트 레지스터에 저장되며, 각 점프 포인트 어드레스는 대응되는 인터럽트 이벤트를 트리거하는, 단계;Storing a plurality of jump point addresses, each jump point address stored in a corresponding jump point register, each jump point address triggering a corresponding interrupt event; 상기 복수의 점프 포인트 어드레스 중 어느 점프 포인트 어드레스를 인에이블할 것인지 선결하는 단계;Determining which jump point address of the plurality of jump point addresses to enable; 상기 정적 기억 장치에 상주하는 제 1 마이크로 명령어 세트를 순차적으로실행하는 단계로서, 프로그램 카운터는 실행 중인 각 마이크로 명령어에 대한 어드레스를 순차적으로 보유하는, 단계; 및Sequentially executing a first set of micro instructions residing in the static memory device, wherein the program counter sequentially holds an address for each micro instruction being executed; And 상기 프로그램 카운터가 상기 복수의 점프 포인트 어드레스 중 하나와 동일한 어드레스를 보유하며 상기 점프 포인트 어드레스가 인에이블일 경우, 상기 대응되는 인터럽트 이벤트를 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.And executing the corresponding interrupt event when the program counter has the same address as one of the plurality of jump point addresses and the jump point address is enabled. 제 10 항에 있어서,The method of claim 10, 상기 인터럽트 이벤트를 실행하는 단계는,Executing the interrupt event, 상기 복수의 점프 포인트 어드레스 각각에 대응되는 복수의 마이크로 명령어 세트를 선결하는 단계;Predetermining a plurality of micro instruction sets corresponding to each of the plurality of jump point addresses; 대응되는 점프 포인트 레지스터 및 상기 프로그램 카운터에 연결된 복수의 비교기 각각을 조건에 따라 인에이블하는 제어 신호를 셋팅하는 단계;Setting a control signal for enabling each of a plurality of comparators connected to a corresponding jump point register and the program counter according to a condition; 상기 복수의 비교기 중 하나가 인에이블 제어 신호를 수신할 경우, 상기 점프 포인트 어드레스와 관련된 대응 마이크로 명령어 세트를 실행하는 단계로서, 상기 점프 포인트 어드레스는 상기 프로그램 카운터의 어드레스와 동일하며, 상기 대응 마이크로 명령어 세트는 프로그램 가능한 기억 장치에 상주하는, 단계를 포함하는 것을 특징으로 하는 방법.When one of the plurality of comparators receives an enable control signal, executing a corresponding microinstruction set associated with the jump point address, wherein the jump point address is identical to the address of the program counter, and the corresponding microinstruction Wherein the set resides in a programmable storage device. 제 11 항에 있어서,The method of claim 11, 상기 대응 마이크로 명령어 세트를 실행하는 단계는, 상기 제 1 마이크로 명령어 세트로부터의 후속 마이크로 명령어를 실행하는 단계를 수반하는 것을 특징으로 하는 방법.Executing the corresponding microinstruction set includes executing a subsequent microinstruction from the first microinstruction set. 프로그램 가능한 기계 명령어 신호를 처리하는 장치로서,A device for processing programmable machine command signals, 선결된 하나 이상의 점프 포인트를 포함하는 점프 포인트 레지스터;A jump point register including one or more predetermined jump points; 상기 점프 포인트 레지스터에 연결되며, 제 1 마이크로 명령어 세트를 포함하는 정적 기억 장치;A static memory device coupled to the jump point register and including a first microinstruction set; 상기 점프 포인트 레지스터 및 상기 정적 기억 장치에 연결되며, 제 2 마이크로 명령어 세트를 포함하는 임의 접근 기억 장치;A random access memory device coupled to the jump point register and the static memory device, the random access memory device comprising a second micro-instruction set; 상기 점프 포인트 레지스터, 상기 정적 기억 장치 및 상기 임의 접근 기억 장치에 연결되며, 상기 점프 포인트 레지스터, 상기 정적 기억 장치 및 상기 임의 접근 기억 장치로 복수의 제어 신호를 송신하는 프로그램 제어 유닛; 및A program control unit coupled to the jump point register, the static memory and the random access memory, for transmitting a plurality of control signals to the jump point register, the static memory and the random access memory; And 상기 점프 포인트 레지스터 및 상기 프로그램 제어 유닛에 연결된 비교기로서, 상기 복수의 제어 신호 중 하나 이상과 상기 선결된 점프 포인트를 비교하여 그 비교 결과에 따라 인터럽트 신호를 발생하는 비교기를 포함하는 것을 특징으로 하는 장치.A comparator coupled to the jump point register and the program control unit, comprising: a comparator for comparing one or more of the plurality of control signals with the predetermined jump point and generating an interrupt signal according to the comparison result . 제 13 항에 있어서,The method of claim 13, 각각이 하나 이상의 선결된 점프 포인트를 저장하는 복수의 점프 포인트 레지스터로서, 상기 프로그램 제어 유닛은 상기 복수의 각 점프 포인트 레지스터, 상기 정적 기억 장치 및 상기 임의 접근 기억 장치로 복수의 제어 신호를 송신하는, 상기 복수의 점프 포인트 레지스터; 및A plurality of jump point registers each storing one or more predetermined jump points, wherein the program control unit transmits a plurality of control signals to each of the plurality of jump point registers, the static memory, and the random access memory, The plurality of jump point registers; And 상기 복수의 점프 포인트 레지스터 중 하나 및 상기 프로그램 제어 유닛에 연결된 복수의 비교기로서, 상기 비교기 각각은 상기 대응되는 점프 포인트 어드레스와 상기 복수의 제어 신호 중 하나 이상을 비교하여 그 비교 결과에 따라 인터럽트 신호를 발생하는, 상기 복수의 비교기를 더 포함하는 것을 특징으로 하는 장치.A plurality of comparators coupled to one of the plurality of jump point registers and the program control unit, each of the comparators comparing one or more of the corresponding jump point addresses and the plurality of control signals to generate an interrupt signal according to the comparison result; Generating a plurality of comparators. 정적 기억 장치에 상주하는 마이크로 명령어의 프로그램 플로우를 수정하는 장치로서,A device for modifying the program flow of microinstructions residing in static storage, 정적 기억 장치와는 별도로, 선결된 마이크로 명령어 어드레스를 기억하는 기억 수단;Storage means for storing a predetermined microinstruction address, separate from the static storage device; 제 1 마이크로 명령어 어드레스 세트를 기억하는 휘발성 기억 수단;Volatile storage means for storing a first micro-instruction address set; 상기 선결된 마이크로 명령어 어드레스와 상기 제 1 마이크로 명령어 어드레스 세트의 각 어드레스를 비교하는 수단; 및Means for comparing the predetermined microinstruction address with each address in the first microinstruction address set; And 상기 선결된 마이크로 명령어 어드레스 기억 수단, 상기 휘발성 기억 수단 및 상기 비교 수단에 연결되며, 상기 프로그램 플로우의 상기 정적 기억 장치로부터 상기 휘발성 기억 장치로의 수정을 인에이블하는 복수의 제어 신호 발생 수단을 포함하는 것을 특징으로 하는 장치.A plurality of control signal generating means connected to said predetermined microinstruction address storage means, said volatile memory means and said comparing means, and enabling a modification of said program flow from said static memory device to said volatile memory device; Device characterized in that.
KR1020027001886A 1999-09-14 2000-09-14 Method and apparatus for modifying microinstructions in a static memory device KR20020029921A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39891299A 1999-09-14 1999-09-14
US09/398,912 1999-09-14
PCT/US2000/025474 WO2001020453A1 (en) 1999-09-14 2000-09-14 Method and apparatus for modifying microinstructions in a static memory device

Publications (1)

Publication Number Publication Date
KR20020029921A true KR20020029921A (en) 2002-04-20

Family

ID=23577324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027001886A KR20020029921A (en) 1999-09-14 2000-09-14 Method and apparatus for modifying microinstructions in a static memory device

Country Status (6)

Country Link
EP (1) EP1221096A1 (en)
JP (1) JP2003509769A (en)
KR (1) KR20020029921A (en)
CN (1) CN1373872A (en)
AU (1) AU7495300A (en)
WO (1) WO2001020453A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464248B2 (en) 2005-04-25 2008-12-09 Mediatek Incorporation Microprocessor systems and bus address translation methods
CN103268237A (en) * 2013-05-10 2013-08-28 东信和平科技股份有限公司 Patching function extension method and device for mask smart card
CN106484369B (en) * 2013-10-24 2019-11-29 华为技术有限公司 A kind of method and device of online patch activation
CN104156241B (en) * 2014-07-31 2019-08-13 中国船舶重工集团公司第七0九研究所 The initiated configuration method and system of processor microprogram

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01232447A (en) * 1988-03-11 1989-09-18 Mitsubishi Electric Corp Single chip microcomputer
US5357627A (en) * 1989-03-28 1994-10-18 Olympus Optical Co., Ltd. Microcomputer having a program correction function
JPH08166877A (en) * 1994-12-13 1996-06-25 Olympus Optical Co Ltd One-chip microcomputer that can execute correction program and microcomputer that can correct rom
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems

Also Published As

Publication number Publication date
AU7495300A (en) 2001-04-17
EP1221096A1 (en) 2002-07-10
CN1373872A (en) 2002-10-09
JP2003509769A (en) 2003-03-11
WO2001020453A1 (en) 2001-03-22

Similar Documents

Publication Publication Date Title
US7613937B2 (en) Method and apparatus for utilizing a microcontroller to provide an automatic order and timing power and reset sequencer
EP0554917B1 (en) Digital signal processing system having two instruction memories accessed by a processor under control of host
US4831517A (en) Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
US7752427B2 (en) Stack underflow debug with sticky base
US9348730B2 (en) Firmware ROM patch method
US9733950B2 (en) Boot sequencing for multi boot devices
EP0092646A1 (en) Method and apparatus of program patching in a data processing system
US5938774A (en) Apparatus for repairing faulty program segments in embedded microprocessor systems
US5581776A (en) Branch control system for rom-programmed processor
US7546596B2 (en) Non-disruptive method, system and program product for overlaying a first software module with a second software module
JP3563768B2 (en) ROM program change device
US5600807A (en) Programmable controller capable of updating a user program during operation by switching between user program memories
US6925522B2 (en) Device and method capable of changing codes of micro-controller
US3940744A (en) Self contained program loading apparatus
KR19980079596A (en) Method and apparatus for implementing processor quiescent state in multiprocessor system
KR20020029921A (en) Method and apparatus for modifying microinstructions in a static memory device
CN114047952B (en) Processor and method for single chip microcomputer, single chip microcomputer and storage medium
GB2292470A (en) Rom patching
US20030084272A1 (en) Handling problematic events in a data processing apparatus
US20030110367A1 (en) External microcode
JP3055999B2 (en) Microprogram control device group
US20080133838A1 (en) Data processing device
KR100505700B1 (en) Retargetable emulation apparatus providing for target system verifying using micro-control unit, micro-computer development system having it, and method thereof
US20010052114A1 (en) Data processing apparatus
JPH1011315A (en) In-circuit emulator device and in-circuit emulation method

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination