KR20200139294A - Delayed Reset for Code Execution from memory Device - Google Patents
Delayed Reset for Code Execution from memory Device Download PDFInfo
- Publication number
- KR20200139294A KR20200139294A KR1020190065292A KR20190065292A KR20200139294A KR 20200139294 A KR20200139294 A KR 20200139294A KR 1020190065292 A KR1020190065292 A KR 1020190065292A KR 20190065292 A KR20190065292 A KR 20190065292A KR 20200139294 A KR20200139294 A KR 20200139294A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- nvm
- code
- initialization
- boot
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 230000003111 delayed effect Effects 0.000 title description 5
- 230000015654 memory Effects 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 28
- 238000010586 diagram Methods 0.000 description 24
- 230000000694 effects Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/20—Initialising; Data preset; Chip identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/1097—Boot, Start, Initialise, Power
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)
- Stored Programmes (AREA)
Abstract
메모리 장치는 비휘발성 메모리(NVM) 및 회로를 포함한다. 이 회로는 프로세서에 대한 메모리 액세스 동작을 실행하기 위해 NVM을 준비하고 초기화하고, NVM의 준비 및 초기화의 적어도 일부 동안 프로세서가 부트스트랩 되는 것을 방지함으로써, NVM이 준비되기 전에 프로세서로부터 메모리 액세스 동작이 수신되지 않는 것을 확실히 하도록 구성된다.The memory device includes nonvolatile memory (NVM) and circuitry. This circuit prepares and initializes the NVM to perform memory access operations for the processor, and prevents the processor from bootstrapping during at least part of the preparation and initialization of the NVM, so that memory access operations are received from the processor before the NVM is ready. It is structured to ensure that it doesn't work.
Description
본 발명은 일반적인 디지털 시스템에 관한 것으로, 특히 마이크로 컨트롤러와 비휘발 메모리를 포함하는 리셋 시스템을 위한 장치 및 방법에 관한 것이다.The present invention relates to a general digital system, and more particularly to an apparatus and method for a reset system comprising a microcontroller and a non-volatile memory.
디지털 시스템은 통상적으로 하나 이상의 프로세서(예를 들어, CPU, MCU, GPU, DSP 및 기타)를 포함하고, 소프트웨어 또는 펌웨어 코드뿐만 아니라 데이터를 저장하기 위한 비휘발 메모리(예를 들어, 플래시 메모리 장치)를 사용한다.Digital systems typically include one or more processors (e.g., CPU, MCU, GPU, DSP, and others), and non-volatile memory (e.g., flash memory devices) for storing software or firmware code as well as data. Use.
프로세서 및 그 주변 장치의 리셋 및 초기화하는, 예를 들어 파워-업(power-up)시에, 다양한 기술이 당 업계에 공지되어 있다. 예를 들어, Le 등은 " 브라운 아웃 검출 능력을 가진 긴 리셋 타임 파워-온 리셋 회로(A Long Reset-Time Power-On Reset Circuit with Brown-Out Detection Capability),"(A Long Reset-Time Power-On Reset Circuit with Brown-Out Detection Capability)에서 파워-온-리셋(power-on-reset)(POR) 회로를 기술한다.Various techniques are known in the art for resetting and initializing the processor and its peripherals, for example at power-up. For example, Le et al., "A Long Reset-Time Power-On Reset Circuit with Brown-Out Detection Capability," (A Long Reset-Time Power- On Reset Circuit with Brown-Out Detection Capability), describe the power-on-reset (POR) circuit.
다른 POR 회로는 Tanzawa에 의해 "밴드 갭 전압보다 높은 유연한 검출 레벨을 갖는 프로세스 및 온도 허용 전원-온 리셋 회로(A process and temperature-tolerant power-on reset circuit with a flexible detection level higher than the bandgap voltage)"(IEEE International Symposium on Circuits and Systems(ISCAS), June, 2008)에서 발표되었다. 이 논문은 밴드 갭 기준 전압에 기반한 파워-온-리셋 회로의 동작 원리를 설명하며, 1.25V의 밴드 갭 전압보다 높은 설계 출력 전압을 구현할 수 있다.Another POR circuit is described by Tanzawa as "A process and temperature-tolerant power-on reset circuit with a flexible detection level higher than the bandgap voltage." "(IEEE International Symposium on Circuits and Systems (ISCAS), June, 2008). This paper describes the operating principle of a power-on-reset circuit based on a bandgap reference voltage, and a design output voltage higher than a bandgap voltage of 1.25V can be implemented.
본 명세서에서 설명되는 본 발명의 실시예는 비휘발성 메모리(non-volatile memory)(NVM) 및 회로(circuitry)를 포함하는 메모리 장치(memory device)를 제공한다. 상기 회로는 프로세서(processor)에 대한 메모리 액세스 동작을 실행하기 위해 NVM을 준비하고 초기화하고; 및 NVM의 준비 및 초기화의 적어도 일부 동안 프로세서가 부트스트랩(bootstrapping) 되는 것을 방지함으로써, NVM이 준비되기 전에 프로세서로부터 메모리 액세스 동작이 수신되지 않는 것을 확실히 하도록 구성된다.Embodiments of the present invention described herein provide a memory device including a non-volatile memory (NVM) and circuitry. The circuitry prepares and initializes the NVM to perform a memory access operation for a processor; And preventing the processor from bootstrapping during at least part of the preparation and initialization of the NVM, thereby ensuring that no memory access operations are received from the processor before the NVM is ready.
일부 실시예에서, 상기 회로는 상기 NVM의 초기화(initialization) 및 준비(preparation) 중 적어도 일부 동안, 상기 프로세서를 리셋 상태(reset state)로 유지함으로써 상기 프로세서가 부트스트랩 되는 것을 방지하도록 구성된다. 일 실시예서, 상기 NVM은 상기 프로세서의 부트-코드를 저장하도록 구성되며, 상기 회로는 상기 NVM의 초기화 및 준비 중 적어도 일부 이후에 상기 프로세서를 상기 리셋 상태로부터 해제하도록 구성되고, 후속하여 부트-코드(boot code)를 프로세서에 제공한다.In some embodiments, the circuit is configured to prevent the processor from bootstrapping by holding the processor in a reset state during at least some of the initialization and preparation of the NVM. In one embodiment, the NVM is configured to store a boot-code of the processor, and the circuit is configured to release the processor from the reset state after at least part of the initialization and preparation of the NVM, and subsequently boot-code (boot code) is provided to the processor.
다른 실시예에서, 상기 NVM은 상기 프로세서의 부트-코드를 저장하도록 구성되며, (i) 상기 NVM의 초기화 및 준비 중 적어도 일부 동안, 상기 프로세서가 부트스트랩 되는 것을 방지하는 대체 코드(alternative code)를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 요청에 응답하고; 및 (ii) 상기 NVM의 초기화 및 준비 중 적어도 일부 이후에, 상기 부트-코드를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 후속하는 요청에 응답함으로써, 상기 회로는 부트스트랩으로부터 상기 프로세서를 방지하도록 구성된다.In another embodiment, the NVM is configured to store the boot-code of the processor, and (i) an alternative code that prevents the processor from being bootstrapped during at least part of initialization and preparation of the NVM Respond to a request from the processor for the boot-code by providing; And (ii) after at least some of the initialization and preparation of the NVM, by responding to a subsequent request from the processor for the boot-code by providing the boot-code, the circuit prevents the processor from bootstrap. Is configured to
일 실시예에서, 상기 대체 코드는 상기 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 상기 프로세서로 하여금 반복하도록 한다. 다른 실시예에서, 상기 대체 코드는 한번 실행되는 제1 파트(first part), 및 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 반복적으로 실행되는 제2 파트(second part)를 포함한다. 다른 실시예에서, 상기 제1 파트는 상기 프로세서의 레지스터를 로드 하는 명령을 포함한다.In one embodiment, the replacement code causes the processor to iterate until at least part of the initialization and preparation of the NVM is complete. In another embodiment, the replacement code includes a first part that is executed once, and a second part that is repeatedly executed until at least part of the initialization and preparation of the NVM is completed. In another embodiment, the first part includes an instruction to load a register of the processor.
일부 실시예에서, 상기 NVM 및 상기 회로는 동일한 집적 회로(IC) 패키지에 패키지 된다.In some embodiments, the NVM and the circuit are packaged in the same integrated circuit (IC) package.
본 발명의 실시예와 함께 메모리 장치의 방법이 추가적으로 제공된다. 상기 방법은 상기 메모리 장치 내의 회로를 이용하는 단계, 프로세서에 대한 메모리 액세스 동작을 실행하기 위해 상기 메모리 장치 내의 비휘발성 메모리(non-volatile memory)(NVM)의 초기화 및 준비하는 단계, 및 NVM의 준비 및 초기화의 적어도 일부 동안 프로세서가 부트스트랩 되는 것을 방지함으로써, 상기 메모리 장치의 회로에 의해 상기 NVM이 준비되기 전에 상기 프로세서로부터 어떠한 메모리 액세스 동작도 수신되지 않음을 확실히 하는 단계를 포함한다.A method of a memory device is additionally provided with an embodiment of the present invention. The method includes the steps of using a circuit in the memory device, initializing and preparing a non-volatile memory (NVM) in the memory device to perform a memory access operation for a processor, and preparing an NVM, and Preventing the processor from bootstrapping during at least part of the initialization, thereby ensuring that no memory access operation is received from the processor before the NVM is ready by the circuit of the memory device.
본 발명은 그 실시예에 대한 다음의 상세한 설명으로부터 도면과 함께 보다 잘 이해될 것이다:The invention will be better understood in conjunction with the drawings from the following detailed description of its embodiments:
도 1은 본 발명의 실시예에 따라, 시스템-리셋 입력(system-reset input)을 갖는 플래시 장치에 의해 생성된 프로세서-리셋(processor-reset)을 갖는 컴퓨터 시스템을 개략적으로 도시하는 블록도이다.
도 2는 본 발명의 다른 실시예에 따라, 내부 POR 회로를 갖는 플래시 장치에 의해 생성된 프로세서-리셋 출력을 갖는 컴퓨터 시스템을 개략적으로 도시하는 블록도이다.
도 3은 본 발명의 실시예에 따라 플래시 장치(Flash-device)에 의해 생성된 프로세서-리셋을 갖는 컴퓨터 시스템의 부트 시퀀스를 개략적으로 도시한 타이밍도이다.
도 4는 본 발명의 일 실시예에 따라, 플래시 장치에 의해 생성된 수정된 부트 명령(modified boot instruction)을 갖는 컴퓨터 시스템을 개략적으로 도시하는 블록도이다.
도 5는 본 발명의 또 다른 실시예에 따라, 플래시 장치에 의해 생성된 수정된 부트 시퀀스를 갖는 컴퓨터 시스템을 개략적으로 도시하는 블록도이다. 및
도 6은 본 발명의 일부 실시예에 따라 프로세서-정지(processor-stall)를 갖는 컴퓨터 시스템의 부트 시퀀스를 개략적으로 도시한 타이밍도이다.1 is a block diagram schematically showing a computer system with a processor-reset generated by a flash device having a system-reset input, according to an embodiment of the present invention.
2 is a block diagram schematically showing a computer system having a processor-reset output generated by a flash device having an internal POR circuit, according to another embodiment of the present invention.
3 is a timing diagram schematically showing a boot sequence of a computer system having a processor-reset generated by a flash-device according to an embodiment of the present invention.
4 is a block diagram schematically showing a computer system having a modified boot instruction generated by a flash device, according to an embodiment of the present invention.
5 is a block diagram schematically showing a computer system having a modified boot sequence generated by a flash device, according to another embodiment of the present invention. And
6 is a timing diagram schematically illustrating a boot sequence of a computer system having a processor-stall in accordance with some embodiments of the present invention.
프로세서(예를 들어, 중앙 처리 장치(CPU)) 및 메모리 장치를 포함하는 컴퓨터 시스템에서, 메모리 장치의 초기화 시간은 프로세서의 초기화 시간보다 길 수 있다. 이러한 경우, 리셋 또는 파워-업 후에, 메모리 장치가 필요한 코드 또는 데이터를 제공할 준비가 되기 전에 프로세서가 실행을 위해 준비가 되어, 컴퓨터 시스템의 성공적인 부팅을 방해할 수 있다.In a computer system including a processor (eg, a central processing unit (CPU)) and a memory device, the initialization time of the memory device may be longer than the initialization time of the processor. In this case, after a reset or power-up, the processor is ready for execution before the memory device is ready to provide the necessary code or data, which can prevent successful booting of the computer system.
특히, 이 시나리오는 프로세서의 부트-코드가 플래시 장치 - 플래시 장치는 일부 아날로그 작업을 완료하는데 필요한 시간, BIST(Built-In-Self-Test) 실행 시간 및/또는 보안 관련 작업을 수행하는데 필요한 시간을 포함하여 준비하는데 오랜 시간이 걸릴 수 있는 - 에 저장될 때 일반적이다.Specifically, in this scenario, the boot-code of the processor is a flash device-the flash device determines the time required to complete some analog tasks, the built-in-self-test (BIST) execution time, and/or the time required to perform security-related tasks. It is common when stored in-which can take a long time to prepare, including.
따라서, 플래시 장치에 저장된 코드로 부팅하는 컴퓨터 시스템에서, 프로세서가 플래시 장치가 준비되었을 때만 부팅을 시도하도록 지연된 리셋을 갖는 프로세서를 제공할 필요가 있을 수 있다.Thus, in a computer system that boots with code stored in a flash device, it may be necessary to provide a processor with a delayed reset such that the processor attempts to boot only when the flash device is ready.
프로세서에 대해 적절히 지연된 리셋을 생성하는 한 가지 방법은 플래시 장치가 준비해야 할 최대 예상 시간보다 긴 시간 지연을 갖는 리셋 회로를 사용하는 것이다. 그러나, 이것은 특수 회로의 추가가 필요하고; 플래시 장치가 준비되는데 필요한 시간의 변동 및 불확실성으로 인해 필요 이상으로 오래 걸려 컴퓨터 시스템의 시작이 더 지연될 수 있다.One way to create a properly delayed reset for the processor is to use a reset circuit with a time delay that is longer than the maximum expected time the flash device should prepare. However, this requires the addition of special circuitry; The fluctuations and uncertainties in the time required for the flash device to be ready can take longer than necessary to further delay the startup of the computer system.
본 명세서에 설명된 본 발명의 실시예는 프로세서가 메모리 장치가 준비된 직후(그리고 전에는 결코 불가능한)에 부트 시퀀스를 시작하도록 하는 개선된 방법 및 장치를 제공한다. 다음의 설명은 예로서, 주로 CPU 및 플래시 장치를 언급하지만, 개시된 기술은 다른 적합한 유형의 프로세서 및 메모리/저장 장치에 적용 가능하다.Embodiments of the invention described herein provide an improved method and apparatus for allowing a processor to initiate a boot sequence immediately after (and never before) a memory device is ready. The following description mainly refers to a CPU and a flash device by way of example, but the disclosed technology is applicable to other suitable types of processors and memory/storage devices.
일부 실시예에서, 메모리 장치(예를 들어, 플래시 장치)는 동일한 집적 회로(IC) 패키지 내에 함께 패키지 된 비휘발성 메모리(NVM) 어레이 및 회로 모두를 포함한다. 다른 태스크 중에서, 회로는 프로세서(예를 들어, CPU)에 대한 메모리 액세스 동작을 실행하기 위해 NVM을 초기화 및 준비하고, NVM이 준비되기 전에 프로세서로부터 어떠한 메모리 액세스 동작도 수신되지 않았음을 확인하도록 구성된다. 상기 회로는 상기 NVM의 초기화 및 준비의 적어도 일부 동안 상기 프로세서가 부트스트랩 되는 것을 방지함으로써 상기 조건을 확실히 한다.In some embodiments, a memory device (eg, a flash device) includes both a nonvolatile memory (NVM) array and circuitry packaged together within the same integrated circuit (IC) package. Among other tasks, the circuit is configured to initialize and prepare the NVM to execute a memory access operation for the processor (e.g., CPU), and to ensure that no memory access operation has been received from the processor before the NVM is ready. do. The circuit ensures the condition by preventing the processor from bootstrapped during at least part of the initialization and preparation of the NVM.
메모리 장치의 회로는 NVM이 준비될 때까지 프로세서가 부트스트랩 되는 것을 방지하기 위해 다양한 기술을 사용할 수 있다. 몇 가지 예가 아래에 자세히 설명되어 있다. 여기에 기술된 기술은 순수하게 예로서 제공되며, 임의의 다른 적절한 기술이 대안적인 실시예에서 사용될 수 있다.The circuitry of the memory device can use a variety of techniques to prevent the processor from bootstrapping until the NVM is ready. Some examples are detailed below. The techniques described herein are provided purely by way of example, and any other suitable technique may be used in alternative embodiments.
일례에서, 회로는 NVM이 준비될 때까지 프로세서를 리셋 상태로 유지하고, 그 후 리셋 상태로부터 프로세서를 해제한다. 다른 예에서, 프로세서의 부트-코드(boot code)는 NVM에 저장된다. 회로는 NVM의 준비 여부에 따라 부트-코드에 대한 프로세서의 요청에 다르게 응답한다. NVM이 준비되면 회로는 프로세서에 요청된 부트-코드를 제공한다. NVM이 준비되지 않은 경우, 회로는 NVM이 준비될 때까지 프로세서가 부트스트랩 되지 못하게 하는 대체 코드(alternative code)를 프로세서에 제공한다.In one example, the circuit keeps the processor in a reset state until the NVM is ready, and then releases the processor from the reset state. In another example, the processor's boot code is stored in the NVM. The circuit responds differently to the processor's request for boot-code depending on whether the NVM is ready. When the NVM is ready, the circuit provides the requested boot-code to the processor. If the NVM is not ready, the circuit provides the processor with alternative code that prevents the processor from bootstrapping until the NVM is ready.
일 실시예에서, 메모리 장치는 프로세서의 리셋 입력에 연결된 프로세서-리셋 출력 핀(processor-reset output pin)을 포함한다. 메모리 장치는 메모리 장치가 준비된 후에 만 프로세서의 리셋 입력을 해제하는 프로세서-리셋 회로를 더 포함한다. 대안적으로, 프로세서가 리셋을 해제하고 부팅 프로세스를 시작하는데 필요한 시간을 고려하여 메모리가 준비되기 약간 전에 프로세서로의 리셋 입력이 해제될 수 있다.In one embodiment, the memory device includes a processor-reset output pin coupled to the reset input of the processor. The memory device further includes a processor-reset circuit for releasing a reset input of the processor only after the memory device is prepared. Alternatively, the reset input to the processor may be released slightly before the memory is ready, taking into account the time required for the processor to release the reset and start the boot process.
본 발명의 다른 실시예에서, 메모리 장치는 여분의 리셋-아웃 핀(reset-out pin)을 포함하지 않으며, 프로세서는 메모리 장치가 준비되기 전에 부팅을 위해 메모리 장치에 액세스 할 수 있다(예를 들어, 프로세서와 메모리 장치는 동일한 리셋 입력을 공유할 수 있다). 그러나, 메모리 장치가 아직 준비되지 않은 상태에서 프로세서가 메모리 장치에 액세스 하면, 메모리 장치는 요청된 부트-코드를 제공하는 대신에 프로세서를 멈추도록 할 명령 또는 명령 시퀀스를 프로세서로 제시할 것이다. 예를 들어, 프로세서는 자체-분기 명령(branch-to-self instruction)을 반복적으로 얻을 수 있다. 메모리 장치가 준비되었을 때만 프로세서는 메모리 장치에 저장된 실제 부트-코드를 얻는다.In another embodiment of the present invention, the memory device does not include an extra reset-out pin, and the processor can access the memory device for booting before the memory device is ready (e.g. , The processor and the memory device can share the same reset input). However, if the processor accesses the memory device while the memory device is not yet ready, the memory device will present an instruction or sequence of instructions to the processor that will cause the processor to stop instead of providing the requested boot-code. For example, a processor can repeatedly obtain a branch-to-self instruction. Only when the memory device is ready the processor gets the actual boot-code stored in the memory device.
따라서, 본 발명에 따른 실시예에서, 메모리 장치가 준비될 때까지 프로세서에 적절한 시간 리셋을 적용하거나 정지 명령 또는 정지 명령 시퀀스를 사용하여 프로세서를 정지시킴으로써, 메모리 장치는 메모리 장치가 준비되기 전에 프로세서의 부트 시퀀스가 시작되지 않도록 보장한다. 추가 리셋 회로가 필요하지 않으며 부팅 지연 시간이 짧다.Thus, in an embodiment according to the present invention, by applying an appropriate time reset to the processor until the memory device is ready, or by stopping the processor using a stop command or a stop command sequence, the memory device Ensures that the boot sequence does not start. No additional reset circuit is required and the boot delay time is short.
시스템 설명(SYSTEM DESCRIPTION)SYSTEM DESCRIPTION
본 발명의 실시예에 따른 컴퓨터 시스템에서, CPU의 부트-코드는 비휘발성 메모리에 저장될 수 있다. 이하의 설명에서, 비휘발성 메모리를 플래시로서 지칭할 것이다. 플래시는 컴퓨터 시스템의 부트-코드를 저장할 수 있는 기술 중 하나이지만, 공개된 기술은 플래시에 국한되지 않는다. 본 발명에 따른 실시예는 임의의 다른 유형의 비휘발성 메모리를 포함할 수 있다.In the computer system according to the embodiment of the present invention, the boot-code of the CPU may be stored in a nonvolatile memory. In the following description, the nonvolatile memory will be referred to as flash. Flash is one of the technologies that can store the boot-code of a computer system, but the disclosed technology is not limited to flash. Embodiments in accordance with the present invention may include any other type of non-volatile memory.
플래시 장치와 같은 컴퓨터 시스템의 다양한 요소는 리셋에서 벗어나는데 상이한 시간이 소요될 수 있으며(예를 들어, 전원이 시스템에 적용될 때), 플래시 메모리가 준비되기 전에 CPU가 부트 시퀀스를 시작하지 않도록 주의해야 한다. 예를 들어, 플래시 메모리는 일반적으로 리셋을 종료할 때 초기화 시퀀스(예를 들어, BIST(built-in-self-test) 또는 보안 정책 시행)를 실행하고; 그리고 CPU가 플래시에 액세스 할 준비를 끝낸 충분한 시간후에 CPU가 액세스 할 준비가 될 수 있다. 따라서, 플래시가 준비된 후에 CPU가 부트 시퀀스를 시작해야만 할 것이고; 따라서 CPU와 플래시의 리셋 소스는 일반적으로 별개이다.Various elements of a computer system, such as flash devices, may take different times to escape from reset (for example, when power is applied to the system), and care must be taken to ensure that the CPU does not start the boot sequence before the flash memory is ready. . For example, a flash memory typically executes an initialization sequence (eg, built-in-self-test (BIST) or security policy enforcement) when terminating a reset; And after enough time the CPU is ready to access the flash, the CPU can be ready to access it. Thus, the CPU will have to start the boot sequence after the flash is ready; Therefore, the CPU and flash reset sources are usually separate.
플래시 장치 기반 프로세서-리셋(Flash-Device-Driven Processor Reset)Flash-Device-Driven Processor Reset
도 1 및 도 2에 예시된 실시예에서, 아래의 도 1 및 도 2에서, 플래시 장치는 CPU 리셋 입력에 결합된 프로세서-리셋 출력 신호를 포함한다. 플래시 장치는 플래시가 액세스 준비가 되지 않았을 때 프로세서-리셋을 활성화하여 플래시가 준비되었을 때만 CPU가 플래시로부터 부팅 되도록 한다.In the embodiment illustrated in Figures 1 and 2, in Figures 1 and 2 below, the flash device includes a processor-reset output signal coupled to a CPU reset input. The flash device activates the processor-reset when the flash is not ready for access, so that the CPU only boots from the flash when the flash is ready.
도 1은 본 발명의 일 실시예에 따른, 시스템-리셋 입력을 갖는 플래시 장치에 의해 생성된 프로세서-리셋을 갖는 컴퓨터 시스템(100)을 개략적으로 도시하는 블록도이다.1 is a block diagram schematically showing a
이 시스템은 CPU(102), RAM(104), 주변 장치(106) 및 플래시 장치(108)를 포함한다. CPU(102)는 버스(110)를 통해 RAM(104), 주변 장치(Peripherals)(106) 및 플래시(Flash)(108)와 통신한다(버스(110)는, 예를 들어 최신 마이크로 프로세서 버스 구조(Advanced Microprocessor Bus Architecture); 일부 실시예에서 버스(110)는 AMBA 및 AMBA 버스와 플래시 장치 사이를 인터페이스 하는 직렬-프로세서-인터페이스(Serial-Processor-Interface)(SPI) 또는 상호-집적회로-버스(Inter-Integrated-Circuit-Bus)(I2C)와 같은 인터페이스 모듈을 포함하며; 다른 실시예에서는 다른 버스가 사용될 수도 있음).This system includes a
플래시 장치(flash device)(108)는 데이터/코드(예를 들어, 부트-코드)를 저장하고 플래시 장치에 전원이 공급되지 않을 때 저장된 데이터/코드를 유지하도록 구성된 비휘발성 저장 어레이(non-volatile storage-array)(112), 초기화 회로(initialization circuit)(114) 및 프로세서-리셋 회로(processor-reset circuit)(116)을 포함한다. 어레이(array)(112) 및 회로(circuit)(114 및 116)는 전형적으로 동일한 집적 회로(IC) 패키지 내에 함께 패키지 된다.The
컴퓨터 시스템(Computer system)(100)은 플래시 장치에 연결된 외부 리셋 소스(External Reset source)(118)를 추가로 포함한다. 일부 실시예에서, 외부 리셋 소스는 시스템에 인가된 전원이 사전에 설정된 레벨 아래에 있을 때(그리고, 일부 실시예에서, 전원이 사전에 설정된 레벨에 도달한 이후 사전에 설정된 시간 동안) 리셋 출력을 활성화시키는 파워-온 리셋 사전에 설정 수준에 도달), 리셋 출력을 활성화시키는 전원-온-리셋(power-on reset)(POR)을 포함한다.
도 1의 예시적인 실시예에서, 외부 리셋 소스(118)가 자신의 리셋 출력을 비활성화할 때, 초기화 회로(initialization circuit)(114)는 플래시 초기화 시퀀스(Flash initialization sequence)(예를 들어, BIST)를 시작한다. 초기화 시퀀스가 완료되면, 초기화 회로는 플래시 장치가 준비되었음을 프로세서-리셋 회로(Processor-Reset Circuit)(116)에 신호한다. In the exemplary embodiment of FIG. 1, when the
프로세서-리셋 회로(116)는 외부 리셋 신호가 활성화되지 않을 때 및 초기화 회로(114)에 의해 생성된 준비 입력(Ready input)이 활성화될 때만 플래시 장치의 프로세서-리셋 출력(processor-reset output)을 비활성화 하도록 구성된다.The processor-
본 발명의 일부 실시예에서, 외부 리셋 소스는 없고, 플래시 장치는 파워-온 리셋 회로(Power-On reset circuit)를 포함한다.In some embodiments of the invention, there is no external reset source, and the flash device includes a Power-On reset circuit.
도 2는 본 발명의 실시예에 따라, 내부 POR 회로를 갖는 플래시 장치에 의해 생성된 프로세서-리셋 출력을 갖는 컴퓨터 시스템(200)을 개략적으로 도시하는 블록도이다. 시스템(100)(도 1)과 마찬가지로, 시스템(200)은 CPU(102), RAM(104), 주변 장치(106) 및 버스(110)를 포함한다. 그러나, 시스템(100)과 달리, 시스템(200)은 외부 리셋 소스를 포함하지 않는다. 그 대신에, 플래시 장치(208)는 POR(Power-On-Reset) 회로(202)(플래시(208)는 도 1의 플래시(108)와 동일함)를 포함한다.2 is a block diagram schematically showing a
POR 회로(202)는 플래시의 공급 전압이 사전에 설정된 레벨에 도달할 때 리셋 출력을 비활성화하도록 구성된다. POR 회로(202)의 리셋 출력은 외부 리셋 소스(118)(도 1)로부터의 리셋 출력 대신에 플래시 장치(208)를 리셋 하는데 사용된다. 다른 모든 측면에서, 플래시(208)는 플래시(108)와 동일하다: POR 회로(202)가 자신의 리셋 출력을 비활성화 할 때, 초기화 회로(114)는 플래시 초기화 시퀀스를 시작한다; 초기화 시퀀스가 완료되면 초기화 회로는 플래시 장치가 준비되었음을 알린다. 프로세서-리셋 회로(116)는 플래시 장치의 프로세서-리셋 출력을 비활성화하여, CPU(102)가 부팅 프로세스를 시작할 수 있게 한다.The
따라서, 도 1 및 도 2의 예시적인 실시예에 따르면, CPU는 플래시가 준비되었을 때만 플래시에 액세스 하며 CPU가 실행하는 부트-코드는 손상되지 않는다. CPU의 리셋 입력을 플래시에 연결함으로써 CPU의 부트 시퀀스를 정확하게 맞출 수 있다. 플래시가 준비되기 전에 부팅이 시작되지 않으며 불필요하게 지연되지 않는다.Thus, according to the exemplary embodiment of Figs. 1 and 2, the CPU accesses the flash only when the flash is ready, and the boot-code executed by the CPU is not damaged. By connecting the CPU's reset input to the flash, you can accurately match the CPU's boot sequence. Booting does not start before the flash is ready and there is no needless delay.
컴퓨터 시스템(100 및 200), 및 플래시 장치(108 및 208)의 구성은 개념적 순수하게 명확성을 위해 도시된 구성의 예이다. 임의의 다른 적절한 구성이 다른 실시예에서 사용될 수 있다. 예를 들어, 플래시 메모리(108, 208)는 EEPROM(Electrically Erasable Programmable Read-Only Memory) 또는 ROM(Read-Only Memory) 및 하드 디스크와 같은 임의의 다른 유형의 비휘발성 메모리 또는 저장 장치로 대체될 수 있다. CPU(102)는 동일하거나 다양한 형태의 복수의 CPU 유닛을 포함할 수 있다. 시스템에 하나 이상의 플래시 메모리와 하나 이상의 버스가 있을 수 있다.The configurations of
CPU가 리셋을 종료하는데 약간의 시간이 걸릴 수 있기 때문에, 일부 실시예에서 프로세서-리셋 출력은 초기화 회로(114)가 초기화를 완료하기 전에 사전에 설정된 시간 동안 비활성화 되어 부팅이 불필요하게 지연되지 않는다. 일부 실시예에서, 프로세서-리셋 출력 비활성화는 플래시가 준비된 후 사전에 설정된 시간만큼 지연될 수 있고, 또 다른 실시예에서는 플래시(108)(또는 208)가 복수의 프로세서-리셋 출력을 포함할 수 있으며, 이는 다수의 프로세서 및 다른 시스템 컴포넌트에 결합될 수 있으며, 외부 리셋 입력(또는 POR 리셋) 및 플래시가 준비되는 시간에 대한 각각의 출력의 리셋-비활성화(reset-deactivation)가 개별적으로 구성될 수 있다.Because it may take some time for the CPU to complete the reset, in some embodiments the processor-reset output is disabled for a predetermined amount of time before the
본 명세서에서, 초기화 회로(114), 프로세서-리셋 회로(116) 및 POR 회로(POR circuit)(202)(사용되는 경우)는 전체적으로 플래시 장치의 "회로(circuitry)"로 지칭된다. 다른 실시예에서, 임의의 다른 적절한 회로 구성이 사용될 수 있다.In this specification, the
도 3은 플래시 장치로 생성된 프로세서-리셋을 갖는 컴퓨터 시스템의 부트 시퀀스를 개략적으로 설명하는 타이밍 도, 예를 들어 본 발명의 실시예에 따른 도 1 및 도 2의 시스템이다. 이 도면은 시간축(302)에 따른 그래프의 형태로 동작(activity)을 설명한다: 공급 전압 그래프(supply voltage graph)(304), 파워-온 리셋 그래프(power-on reset graph)(306), 플래시 동작 그래프(Flash Activity graph)(308), CPU 리셋 그래프(CPU Reset graph)(310) 및 CPU 동작 그래프(CPU Activity graph)(312). 다섯 개의 중요한 타임 이벤트는 T0 ~ T4의 시간축을 따라 표시된다.3 is a timing diagram schematically illustrating a boot sequence of a computer system with a processor-reset generated by a flash device, for example the system of FIGS. 1 and 2 according to an embodiment of the present invention. This figure describes the activity in the form of a graph along the time axis 302: a
시간축은 시간-이벤트 T0(314)에서 시작한다. 전원 전압 레벨이 0V이고 시스템이 비활성 상태이다. 시간-이벤트 T1(316)에서, 전원 전압이 램핑을 시작하고, 시스템에 전원을 공급하고; 시간-이벤트 T2(318)에서, 공급 전압은 사전에 설정된 레벨(도 3에 예시된 실시예에서 VCC의 90 %)에 도달한다. POR 유닛은 시간-이벤트(Time-Event) T2(318)까지 리셋(Reset) 상태를 유지한다. 상기 POR이 리셋에서 벗어날 때 플래시 초기화가 시작되고 시간-이벤트 T3(320)에서 종료된다.The time axis starts at time-
CPU 리셋(Reset)(그래프 310)은 T0에서 T3까지(플래시 장치에 의해) 유지된다. T3에서 플래시 장치는 CPU 리셋을 해제한다. 잠시 후, 시간-이벤트 T4(322)에서 CPU는 플래시 시퀀스를 실행하기 위해 플래시 장치에 액세스 한다(CPU에 의한 일부 사후-리셋 사전-부트 작업에 의해 T3에서 T4까지의 시간이 필요할 수 있음).The CPU Reset (graph 310) is held from T0 to T3 (by flash unit). At T3, the flash device releases the CPU reset. After a while, at time-
따라서, 도 3에 도시된 타이밍도에 따르면, CPU는 플래시 장치가 준비될 때만 짧은 지연으로 플래시에 액세스 할 것이다.Thus, according to the timing diagram shown in Fig. 3, the CPU will access the flash with a short delay only when the flash device is ready.
도 3에 도시된 타이밍도(300)는 일정한 비율로 그려지지 않고, 더 긴 수평 거리가 반드시 더 긴 시간 기간을 의미하는 것은 아니다. 또한, 타이밍도(300)는 단지 개념적 명확성을 위해 도시된 예시적인 도다. 임의의 다른 적절한 타이밍도가 본 발명의 다른 실시예에서 사용될 수 있다. 예를 들어, 일부 실시예에서, CPU 리셋(310)이, 플래시 초기화가 T4(322)에서 완료되는 시간으로부터 지연을 단축하기 위해, 플래시 초기화가 완료되기 약간 전에 종료될 수 있다.The timing diagram 300 illustrated in FIG. 3 is not drawn at a constant ratio, and a longer horizontal distance does not necessarily mean a longer time period. Further, the timing diagram 300 is an exemplary diagram shown for conceptual clarity only. Any other suitable timing diagram may be used in other embodiments of the present invention. For example, in some embodiments, CPU reset 310 may be terminated just before flash initialization is complete to shorten the delay from the time flash initialization completes at
부트-코드 조작(Boot-Code Manipulation)Boot-Code Manipulation
일부 응용 프로그램에서는 플래시 장치에 프로세서-리셋 핀을 추가하는 것이 바람직하지 않거나 실행 불가능할 수 있다. 예를 들어, 플래시의 핀이 핀아웃 표준을 준수하거나 플래시가 다른 플래시 장치와 핀 호환이 가능해야 한다. 본 명세서에 제시된 본 발명의 실시예에 따르면, CPU는 플래시가 준비되기 전에 부팅 프로세스를 시작할 수 있지만, 플래시 장치는 CPU가 판독하는 부트-코드를 수정하여 플래시가 준비될 때까지 CPU를 효과적으로 대기시킨다.In some applications, adding a processor-reset pin to a flash device may be undesirable or impractical. For example, the pins of the flash must conform to the pinout standard, or the flash must be pin compatible with other flash devices. According to the embodiments of the present invention presented herein, the CPU may start the boot process before the flash is ready, but the flash device effectively waits until the flash is ready by modifying the boot-code read by the CPU. .
도 4는 본 발명의 일 실시예에 따라 플래시 장치에 의해 생성된 수정된 부트 명령(boot instruction)을 갖는 컴퓨터 시스템(400)을 개략적으로 도시하는 블록도이다. 시스템은 시스템(100)의 각 유닛(도 1)과 모두 동일할 수 있는 CPU(102), RAM(104), 주변 장치(Peripherals)(106), 버스(110) 및 외부 리셋 소스(External Reset Source)(118)를 포함한다.4 is a block diagram schematically illustrating a
플래시 장치(408)는 저장 어레이(112) 및 초기화 회로(114)를 포함하고; 이들은 시스템(100)의 대응하는 유닛과 동일할 수 있다. 또한, 플래시(408)는 정지-코드 유닛(Stall-code unit)(402) 및 멀티플렉서(MUX)(404)를 포함한다.The
정지-코드 유닛(402)은 CPU가 정지하게 하는 컴퓨터 명령을 출력하도록 구성된다. 예를 들어, 명령은 CPU가 동일 위치에서 무한히 명령을 판독하게 하는 자체-분기(branch-to-self)("b") 명령일 수 있다. 정지 명령의 코드는 하드 와이어(hard-wired) 되거나 플래시(408)의 비휘발성 셀에 저장될 수 있다.The stop-
초기화 회로(114)는, 초기화 회로가 플래쉬가 준비되지 않았음을 나타낼 때 정지-코드(402)가 출력하는 데이터를 버스(110) 또는 초기화 회로가 플래시가 준비되었음을 나타낼 때 저장 어레이(112)가 출력하는 데이터를 라우트 되도록 구성되는 멀티플렉서(404)와 결합된다.The
따라서, 도 4에 도시된 예시적인 구성에 따르면, CPU는 플래시가 준비되지 않았을 때 부트 시퀀스를 시작할 수 있지만, CPU가 판독할 명령은 CPU를 정지시킨다. 플래시가 준비되면, 초기화 회로(114)에 의해 표시된 바와 같이, CPU는 저장 어레이(storage-array)(112)로부터 올바른 부트 시퀀스를 판독할 것이다.Thus, according to the exemplary configuration shown in Fig. 4, the CPU can start the boot sequence when the flash is not ready, but an instruction to be read by the CPU stops the CPU. When the flash is ready, as indicated by the
도 5는 본 발명의 실시예에 따라, 플래시 장치에 의해 생성된 수정된 부트 시퀀스를 갖는 컴퓨터 시스템(500)을 개략적으로 도시한 블록도이다. 시스템(500)은 도 4의 시스템(400)과 동일하고, 플래시(508)는 플래시(408)의 정지 명령 유닛(Stall Instruction unit)(402) 대신에 정지 시퀀스 유닛(Stall Sequence unit)(502)을 포함하는 것을 제외하고는 플래시(408)와 동일하다.5 is a block diagram schematically illustrating a
정지 시퀀스 유닛(Stall Sequence unit)(508)은 플래시가 준비되지 않을 때 CPU가 실행하는 명령의 시퀀스를 포함한다(ARM 프로세서의 명령 세트에 관한 상세한 예가 아래에서 설명될 것이다). 정지 시퀀스 유닛은 CPU에 의해 수행된 액세스를 추적하고 멀티플렉서(404)에 대응하는 데이터를 전송한다(대안적인 실시예에서, 버스(110)의 어드레스 파트는 정지 시퀀스 유닛(502)에 입력되고 정지 시퀀스 유닛은 데이터를 해당 입력 주소에 보낸다).The
명령의 시퀀스에 대한 코드는 하드-와이어(hard-wired) 될 수 있거나, 플래시(508)의 비휘발성 셀에 저장될 수 있다(일부 실시예에서, 명령 시퀀스에 대한 코드는 부트-코드와 다른 플래시 뱅크에 저장되고, 다른 실시예에서는 명령 시퀀스가 플래시 셀로부터 휘발성 메모리(예를 들어, 플립 플롭 또는 SRAM 메모리)로 리셋 후 곧바로 전달되고 그 이후 휘발성 메모리에서 판독). 멀티플렉서는 플래쉬가 준비되지 않았을 때(초기화 회로(114)로 표시됨) 정지 시퀀스 유닛(503)으로부터, 그리고 플래시가 준비될 때 저장 어레이(112)로부터 데이터를 전송한다.The code for the sequence of commands may be hard-wired, or may be stored in a non-volatile cell of flash 508 (in some embodiments, the code for the sequence of commands is different from the boot-code. It is stored in a bank, and in other embodiments the sequence of commands is transferred from the flash cell to the volatile memory (e.g., flip flop or SRAM memory) immediately after reset and then read from the volatile memory). The multiplexer transfers data from the stop sequence unit 503 when the flash is not ready (indicated by the initialization circuit 114), and from the
따라서, 도 5의 예시적인 구성에 따르면, CPU는 플래시가 준비되지 않았을 때 사전에 설정된 명령 시퀀스를 실행하고, 플래시가 준비될 때 저장 어레이(112)에 저장된 부트 시퀀스를 실행할 수 있다.Accordingly, according to the exemplary configuration of FIG. 5, the CPU may execute a preset command sequence when the flash is not ready, and execute the boot sequence stored in the
일부 실시예에서, 정지 시퀀스의 실행으로부터 부트 시퀀스의 실행으로의 스위칭은 일관성을 보장하기 위해 알려진 CPU 상태(명령 시퀀스의 임의의 명령에서가 아니라)에서 수행되어야 한다. 플래시(508)는 시퀀스가 사전에 설정된 스테이지(예를 들어, 사전에 설정된 어드레스가 버스(110)로부터 입력된)에 도달할 때까지 준비 표시(ready indication)를 지연시키도록 구성된 회로를 포함할 수 있으며, 정지 시퀀스에서 부트 시퀀스로의 전환이 올바른 CPU 상태에서 수행되도록 보장한다.In some embodiments, the switching from execution of the stop sequence to execution of the boot sequence must be performed in a known CPU state (not in any instruction in the instruction sequence) to ensure consistency.
알 수 있는 바와 같이, 도 4 및 도 5에 도시된 플래시(408 및 508), 멀티플렉서(mux)(404), 초기화 회로(114) 및 저장 어레이(112)의 구성은 단지 개념적 명료성을 위해 도시된 구성 예이다. 임의의 다른 적절한 구성이 다른 실시예에서 사용될 수 있다. 예를 들어, 멀티플렉서(404)는 플래시 어레이의 뱅크-선택 로직에 내장될 수 있다. 다른 실시예에 있어서, 일부 실시예에서, 버스(110)의 어드레스 와이어의 서브 세트는 정지 시퀀스 유닛에 입력된다.As can be seen, the configurations of the
본 명세서에서, 초기화 회로(114), 정지-코드 유닛(402 또는 502), 및 MUX(404)는 전체적으로 플래시 장치의 "회로"로 지칭된다. 다른 실시예에서, 임의의 다른 적절한 회로 구성이 사용될 수 있다.In this specification, the
도 6은 본 발명의 일부 실시예에 따라 프로세서-정지를 갖는 컴퓨터 시스템의 부트 시퀀스를 개략적으로 도시한 타이밍도(600)이다. 이 다이어그램은 시간축(602)을 따라 그래프의 형태로 작동을 설명한다: 전원 전압 리셋 그래프(supply voltage graph)(604), 전원-온 리셋 그래프(power-on reset graph)(606), 플래시 동작 그래프(Flash Activity graph)(608), CPU 리셋 그래프(Reset graph)(610) 및 CPU 동작 그래프(CPU Activity graph)(612)(그래프 604, 606 및 608은 도 3에 도시된 타이밍도(300)의 그래프 304, 306 및 308과 각각 동일).6 is a timing diagram 600 schematically illustrating the boot sequence of a computer system with a processor-stop in accordance with some embodiments of the present invention. This diagram describes the operation in the form of a graph along the time axis 602: a
네 개의 중요한 시간-이벤트(Time-Event)가 시간축(T0~T3)을 따라 표시된다.Four important time-events are displayed along the time axis (T0-T3).
시간축은 시간-이벤트 T0에서 시작한다(614). 전원 전압 레벨이 0V이고 시스템이 비활성 상태이다. 시간-이벤트 T1(616)에서, 전원 전압이 램핑을 시작하고 시스템 전원을 켜기 시작한다. 시간-이벤트 T2(618)에서, 공급 전압은 사전에 설정된 레벨(예를 들어, 도 3에 예시된 실시예에서 VCC의 90 %)에 도달한다. POR 유닛은 시간-이벤트(Time-Event) T2(618)까지 리셋(Reset) 상태를 유지한다. POR이 리셋에 존재할 때 플래시 초기화가 시작되고, 시간-이벤트 T3(620)에서 종료된다.The time axis starts at time-event T0 (614). The supply voltage level is 0V and the system is inactive. At time-
T2(618)에서 CPU Reset(그래프 610)이 해제되고 CPU는 플래시 장치에서 데이터를 판독하면서 부팅을 시도한다. 그러나 플래시 장치가(T2에서 T3로) 초기화 되는 동안 CPU는 플래시에서 정지-코드를 판독한다. 플래시 초기화가 완료될 때만 CPU가 플래시에서 실제 부팅 데이터를 판독하고 부트 시퀀스를 실행한다.At
따라서, 도 6에 도시된 타이밍도(600)에 따르면, CPU는 플래시가 초기화 될 때 리셋으로부터 해제되지만, 초기화가 완료될 때까지 플래시로부터 정지-코드를 판독할 것이다. CPU는 플래시가 준비되었을 때만 플래시에서 실제 부트-코드를 판독한다.Thus, according to the timing diagram 600 shown in Fig. 6, the CPU is released from reset when the flash is initialized, but will read a stop-code from the flash until the initialization is complete. The CPU reads the actual boot-code from flash only when the flash is ready.
도 6에 도시된 타이밍도(600)는 일정한 비율로 그려지지 않고, 더 긴 수평 거리가 반드시 더 길게 각각의 시간 기간을 의미하는 것은 아니다. 또한, 타이밍도(600)는 단지 개념적 명확성을 위해 도시된 예시적인 도이다. 임의의 다른 적절한 타이밍도가 본 발명의 다른 실시예에서 사용될 수 있다.The timing diagram 600 shown in FIG. 6 is not drawn at a constant rate, and a longer horizontal distance does not necessarily mean longer each time period. Further, timing diagram 600 is an exemplary diagram shown for conceptual clarity only. Any other suitable timing diagram may be used in other embodiments of the present invention.
정지 명령 예(Stall-Instruction Example)Stall-Instruction Example
일부 프로세서 아키텍처에서 프로세서 부트 시퀀스는 0x00000000 주소에서 부트-코드를 판독할 수 있다.In some processor architectures, the processor boot sequence can read the boot-code at address 0x00000000.
플래시 장치가 준비되지 않은 경우, 정지-명령 유닛(402)(도 4)은 CPU에 "자체-분기(branch-to-self)" 명령('b .')의 루프를 전송할 것이다.If the flash device is not ready, the stop-instruction unit 402 (Figure 4) will send a loop of "branch-to-self" instructions ('b.') to the CPU.
CPU가 실행할 정지 시퀀스는 다음과 같다.The stop sequence to be executed by the CPU is as follows.
● 'b .' // 분기 자체 명령어● 'b .' // branch instruction
● 'b .' // 분기 자체 명령어● 'b .' // branch instruction
● 'b .' // 분기 자체 명령어● 'b .' // branch instruction
● ....● ....
● 'b .' // 분기 자체 명령어● 'b .' // branch instruction
부트-코드는 어드레스 0x0000에서 시작하여 저장 어레이(storage array)(112)에 저장된다.The boot-code is stored in a
정지 시퀀스 예(Stall Sequence Example)Stall Sequence Example
일부 프로세서 아키텍처에서, 프로세서 부트 시퀀스는 먼저 메모리 장치(예를 들어, 명령 포인터, 스택 포인터 등)로부터 일부 데이터 또는 구성을 로드 한 다음 메인 부트-코드의 실행을 시작한다.In some processor architectures, the processor boot sequence first loads some data or configuration from a memory device (eg, instruction pointer, stack pointer, etc.) and then begins executing the main boot-code.
부트 시퀀스는 예를 들어 다음 시퀀스를 포함할 수 있다.The boot sequence may include the following sequence, for example.
1. 주소 0에서 스택 포인터(SP) 레지스터에 워드를 로드 한다;1. Load a word into the stack pointer (SP) register at address 0;
2. 주소 4에서 프로그램 카운터(PC) 레지스터에 워드를 로드 한다2. Load a word into the program counter (PC) register at address 4
3. PC가 가리키는 주소에서 코드 실행을 시작한다.3. Start code execution at the address pointed to by the PC.
메모리 장치가 내부 리셋 시퀀스를 완료하게 하기 위해, 정지 시퀀스 유닛(stall sequence unit)(502)은 어드레스 0 또는 4가 액세스 될 때 PC 및 SP에 대한 값을 리턴 하고, 어드레스 0 또는 4가 액세스 될 때 어드레스 위치 0에 저장된다. CPU는 주소 0과 4를 한 번만 판독한 다음 플래시 장치가 준비될 때까지 자체-분기(branch-to-self) 명령을 계속 판독한다.In order for the memory device to complete the internal reset sequence, the
예를 들어, 부트 벡터가 다음을 포함하는 경우:For example, if the boot vector contains:
0x000: 0x20001000 // SP 값0x000: 0x20001000 // SP value
0x004: 0x00000100 // PC 값0x004: 0x00000100 // PC value
......
0x100: [여기에서 부트-코드가 시작된다]0x100: [boot-code starts here]
플래시 장치는 준비되지 않은 경우 CPU에 다음 시퀀스를 보낸다.When the flash device is not ready, it sends the next sequence to the CPU.
최초 액세스시 - 0x20001000 // SP 초기화First access-0x20001000 // SP initialization
두 번째 액세스시 - 0x00000100 // PC 초기화On second access-0x00000100 // PC initialization
추가 액세스시 - "b."// 자체 코드로 분기On further access-"b." // branch to own code
컴퓨터 시스템(100, 200, 400, 500)의 구성; 플래시 장치(108, 208, 408 및 508)의 구성; 및 도 1 및 도 2와 관련하여 전술한 다른 유닛의 구성을 도시한다. 도 1, 도 2, 도 4 및 도 5는 순수하게 개념적 명료함을 위해 도시된 구성 예이다.The configuration of
예를 들어, 복수의 플래시 장치 및/또는 복수의 CPU 유닛을 갖는 시스템 구성을 포함하는 다른 실시예에서, 임의의 다른 적절한 구성이 사용될 수 있으며, 이들 중 일부 또는 전부는 별개의 리셋 입력을 갖는다.For example, in other embodiments including a system configuration having a plurality of flash devices and/or a plurality of CPU units, any other suitable configuration may be used, some or all of which have separate reset inputs.
도 2 및 도 3에서 설명된 요소 중 일부는, 도 1, 2, 4 및 5는 소프트웨어를 사용하거나, 하드웨어를 사용하거나 또는 하드웨어와 소프트웨어 요소의 조합을 사용하는 ASIC(Application-Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)와 같은 적절한 하드웨어를 사용하여 구현될 수 있다.Some of the elements described in FIGS. 2 and 3 may include an Application-Specific Integrated Circuit (ASIC) using software, hardware, or a combination of hardware and software elements, or It can be implemented using suitable hardware, such as a Field-Programmable Gate Array (FPGA).
본 명세서에 설명된 실시예는 주로 비휘발성 메모리가 내장된 컴퓨터 시스템을 다루지만 여기에 기술된 방법 및 시스템은 하드 디스크와 같은 다른 저장 장치를 갖는 컴퓨터 시스템과 같은 다른 애플리케이션에도 사용될 수 있다. 따라서, 전술한 실시예는 예시로서 인용되었고, 본 발명은 상기에 특별히 도시되고 설명된 것에 한정되지 않는다는 것을 알 것이다. 오히려, 본 발명의 범위는 전술한 다양한 특징의 조합 및 서브 조합뿐만 아니라 전술한 설명을 읽었을 때 당업자에게 발생할 수 있고 종래 기술에 개시되지 않은 변형 및 수정을 포함한다. 본 특허 출원에 참고 문헌으로 포함된 문헌은 본 명세서에서 명시적으로 또는 암시적으로 행해지는 정의와 상충되는 방식으로 이들 통합된 문서에서 임의의 용어가 정의되는 경우를 제외하고는, 본 명세서의 정의만을 고려해야 한다.Although the embodiments described herein primarily deal with computer systems incorporating non-volatile memory, the methods and systems described herein can also be used in other applications, such as computer systems having other storage devices such as hard disks. Accordingly, it will be appreciated that the above-described embodiments have been cited by way of example, and that the invention is not limited to those specifically shown and described above. Rather, the scope of the invention includes combinations and subcombinations of the various features described above, as well as variations and modifications that may occur to those skilled in the art upon reading the foregoing description and are not disclosed in the prior art. Documents incorporated by reference in this patent application are the definitions of the present specification, except where any term is defined in these consolidated documents in a manner contrary to the definitions made expressly or implicitly herein. Only to be considered.
Claims (16)
비휘발성 메모리(NVM); 및
회로를 포함하고,
프로세서에 대한 메모리 액세스 동작을 실행하기 위해 NVM을 준비하고 초기화하고; 및
NVM의 준비 및 초기화의 적어도 일부 동안 프로세서가 부트스트랩 되는 것을 방지함으로써,
NVM이 준비되기 전에 프로세서로부터 메모리 액세스 동작이 수신되지 않는 것을
확실히 하도록 구성되는
장치.
In the memory device,
Nonvolatile memory (NVM); And
Circuit,
Prepare and initialize the NVM to perform a memory access operation for the processor; And
By preventing the processor from bootstrapping during at least part of the NVM's preparation and initialization,
The memory access operation is not received from the processor before the NVM is ready.
Configured to make sure
Device.
상기 회로는,
상기 NVM의 초기화 및 준비 중 적어도 일부 동안,
상기 프로세서를 리셋 상태로 유지함으로써 상기 프로세서가 부트스트랩 되는 것을
방지하도록 구성되는
장치.
The method of claim 1,
The circuit,
During at least some of the initialization and preparation of the NVM,
Keeping the processor in a reset state prevents the processor from being bootstrapped.
Configured to prevent
Device.
상기 NVM은 상기 프로세서의 부트-코드를 저장하도록 구성되며,
상기 회로는 상기 NVM의 초기화 및 준비 중 적어도 일부 이후에 상기 프로세서를 상기 리셋 상태로부터 해제하도록 구성되고,
후속하여 부트-코드를 프로세서에 제공하는
장치.
The method of claim 2,
The NVM is configured to store the boot-code of the processor,
The circuit is configured to release the processor from the reset state after at least some of the initialization and preparation of the NVM,
Subsequently providing the boot-code to the processor
Device.
상기 NVM은 상기 프로세서의 부트-코드를 저장하도록 구성되며,
상기 NVM의 초기화 및 준비 중 적어도 일부 동안, 상기 프로세서가 부트스트랩 되는 것을 방지하는 대체 코드를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 요청에 응답하고; 및 상기 NVM의 초기화 및 준비 중 적어도 일부 이후에, 상기 부트-코드를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 후속하는 요청에 응답함으로써,
상기 회로는 부트스트랩으로부터 상기 프로세서를 방지하도록 구성되는
장치.
The method of claim 1,
The NVM is configured to store the boot-code of the processor,
Responding to a request from the processor for the boot-code by providing replacement code that prevents the processor from being bootstrapped during at least some of the initialization and preparation of the NVM; And after at least some of the initialization and preparation of the NVM, by responding to a subsequent request from the processor for the boot-code by providing the boot-code,
The circuit is configured to prevent the processor from bootstrap
Device.
상기 대체 코드는,
상기 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 상기 프로세서로 하여금 반복하도록 하는
장치.
The method of claim 4,
The replacement code,
Causing the processor to repeat until at least part of the initialization and preparation of the NVM is completed.
Device.
상기 대체 코드는,
한번 실행되는 제1 파트, 및 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 반복적으로 실행되는 제2 파트
를 포함하는
장치.
The method of claim 4,
The replacement code,
The first part executed once, and the second part repeatedly executed until at least part of the initialization and preparation of the NVM is completed.
Including
Device.
상기 제1 파트는,
상기 프로세서의 레지스터를 로드 하는 명령
을 포함하는
장치.
The method of claim 6,
The first part,
Instruction to load the register of the processor
Containing
Device.
상기 NVM 및 상기 회로는,
동일한 집적 회로(IC) 패키지에 패키지 되는
장치.
The method of claim 1,
The NVM and the circuit,
Packaged in the same integrated circuit (IC) package
Device.
상기 메모리 장치 내의 회로를 이용하는 단계,
프로세서에 대한 메모리 액세스 동작을 실행하기 위해 상기 메모리 장치 내의 비휘발성 메모리(NVM)의 초기화 및 준비하는 단계; 및
NVM의 준비 및 초기화의 적어도 일부 동안 프로세서가 부트스트랩 되는 것을 방지함으로써, 상기 메모리 장치의 회로에 의해 상기 NVM이 준비되기 전에 상기 프로세서로부터 어떠한 메모리 액세스 동작도 수신되지 않음을 확실히 하는 단계
를 포함하는
방법.
In the method of a memory device,
Using a circuit in the memory device,
Initializing and preparing a nonvolatile memory (NVM) in the memory device to perform a memory access operation for a processor; And
Preventing the processor from bootstrap during at least part of the preparation and initialization of the NVM, thereby ensuring that no memory access operation is received from the processor before the NVM is ready by the circuit of the memory device.
Including
Way.
상기 프로세서가 부트스트랩 되는 것을 방지하는 단계는,
상기 NVM의 초기화 및 준비 중 적어도 일부 동안 상기 프로세서를 리셋 상태로 유지하는 단계
를 포함하는
방법.
The method of claim 9,
Preventing the processor from being bootstrapped,
Maintaining the processor in a reset state during at least some of the initialization and preparation of the NVM
Including
Way.
상기 프로세서의 부트-코드를 상기 NVM에 저장하는 단계,
상기 NVM의 초기화 및 준비 중 적어도 일부 이후에 상기 프로세서를 상기 리셋 상태로부터 해제하는 단계, 및
이어서 상기 부트-코드를 상기 프로세서에 제공하는 단계
를 포함하는
방법.
The method of claim 10,
Storing the boot-code of the processor in the NVM,
Releasing the processor from the reset state after at least part of the initialization and preparation of the NVM, and
Then providing the boot-code to the processor
Including
Way.
상기 프로세서의 부트-코드를 상기 NVM에 저장하는 단계를 포함하고,
상기 프로세서가 부트스트랩 되는 것을 방지하는 단계는,
상기 NVM의 초기화 및 준비 중 적어도 일부 동안, 상기 프로세서가 부트스트랩 되는 것을 방지하는 대체 코드를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 요청에 응답하는 단계; 및
상기 NVM의 초기화 및 준비 중 적어도 일부 이후에, 상기 부트-코드를 제공함으로써 상기 부트-코드에 대한 상기 프로세서로부터의 후속 요청에 응답하는 단계
를 더 포함하는
방법.
The method of claim 9,
Including the step of storing the boot-code of the processor in the NVM,
Preventing the processor from being bootstrapped,
Responding to a request from the processor for the boot-code by providing replacement code that prevents the processor from being bootstrapped during at least some of the initialization and preparation of the NVM; And
After at least part of the initialization and preparation of the NVM, responding to a subsequent request from the processor for the boot-code by providing the boot-code
Further comprising
Way.
상기 대체 코드는,
상기 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 상기 프로세서로 하여금 반복하도록 하는
방법.
The method of claim 12,
The replacement code,
Causing the processor to repeat until at least part of the initialization and preparation of the NVM is completed.
Way.
대체 코드는,
한번 실행되는 제1 파트, 및 NVM의 초기화 및 준비의 적어도 일부가 완료될 때까지 반복적으로 실행되는 제2 파트
를 포함하는
방법.
The method of claim 12,
The replacement code is,
The first part executed once, and the second part repeatedly executed until at least part of the initialization and preparation of the NVM is completed.
Including
Way.
상기 제 1 파트는,
상기 프로세서의 레지스터를 로드 하는 명령
을 포함하는
방법.
The method of claim 14,
The first part,
Instruction to load the register of the processor
Containing
Way.
상기 NVM 및 상기 회로는,
동일한 집적 회로(IC) 패키지에 패키지 되는
방법.
The method of claim 9,
The NVM and the circuit,
Packaged in the same integrated circuit (IC) package
Way.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190065292A KR102300822B1 (en) | 2019-06-03 | 2019-06-03 | Delayed Reset for Code Execution from memory Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190065292A KR102300822B1 (en) | 2019-06-03 | 2019-06-03 | Delayed Reset for Code Execution from memory Device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200139294A true KR20200139294A (en) | 2020-12-14 |
KR102300822B1 KR102300822B1 (en) | 2021-09-10 |
Family
ID=73780062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190065292A Active KR102300822B1 (en) | 2019-06-03 | 2019-06-03 | Delayed Reset for Code Execution from memory Device |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102300822B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293610A (en) * | 1989-08-04 | 1994-03-08 | Motorola, Inc. | Memory system having two-level security system for enhanced protection against unauthorized access |
US20050283598A1 (en) * | 2004-06-22 | 2005-12-22 | International Business Machines Corporation | Method and system for loading processor boot code from serial flash memory |
JP2010282499A (en) * | 2009-06-05 | 2010-12-16 | Renesas Electronics Corp | Computer system, information protection method and program |
JP2012073755A (en) * | 2010-09-28 | 2012-04-12 | Renesas Electronics Corp | Semiconductor device |
-
2019
- 2019-06-03 KR KR1020190065292A patent/KR102300822B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293610A (en) * | 1989-08-04 | 1994-03-08 | Motorola, Inc. | Memory system having two-level security system for enhanced protection against unauthorized access |
US20050283598A1 (en) * | 2004-06-22 | 2005-12-22 | International Business Machines Corporation | Method and system for loading processor boot code from serial flash memory |
JP2010282499A (en) * | 2009-06-05 | 2010-12-16 | Renesas Electronics Corp | Computer system, information protection method and program |
JP2012073755A (en) * | 2010-09-28 | 2012-04-12 | Renesas Electronics Corp | Semiconductor device |
Also Published As
Publication number | Publication date |
---|---|
KR102300822B1 (en) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7234052B2 (en) | System boot using NAND flash memory and method thereof | |
US9858084B2 (en) | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory | |
US11972243B2 (en) | Memory device firmware update and activation without memory access quiescence | |
US6601167B1 (en) | Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program | |
KR100239585B1 (en) | How to operate a computer system with recoverable basic firmware | |
US7908466B2 (en) | Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface | |
US7296143B2 (en) | Method and system for loading processor boot code from serial flash memory | |
CN1307532C (en) | Guide system utilizing non-flash memory and its method | |
BR112014014815B1 (en) | COMPUTING DEVICE, METHOD AND STORAGE MEANS FOR PERFORMING FIRMWARE BACKUP COPY | |
TW201224918A (en) | Providing platform independent memory logic | |
EP3289442B1 (en) | Central processing unit with enhanced instruction set | |
KR100604877B1 (en) | Apparatus and method for controlling the mapping of memory addresses in embedded systems | |
EP3699913B1 (en) | Delayed reset for code execution from memory device | |
US9934045B1 (en) | Embedded system boot from a storage device | |
KR102300822B1 (en) | Delayed Reset for Code Execution from memory Device | |
US11614949B2 (en) | Method and device for managing operation of a computing unit capable of operating with instructions of different sizes | |
CN115374051A (en) | SoC (system on chip) on-chip SRAM (static random Access memory) multiplexing method, electronic equipment and SoC | |
CN119201155A (en) | Firmware update by logical address remapping | |
KR20060118715A (en) | Operation processing unit and memory interface device and method | |
JPS60230261A (en) | Initializing control system in multi-processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20190603 |
|
PA0201 | Request for examination | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20200629 Patent event code: PE09021S01D |
|
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20210226 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20210815 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20210906 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20210906 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
PR1001 | Payment of annual fee |
Payment date: 20240827 Start annual number: 4 End annual number: 4 |