WO2018217899A1 - Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution - Google Patents

Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution Download PDF

Info

Publication number
WO2018217899A1
WO2018217899A1 PCT/US2018/034142 US2018034142W WO2018217899A1 WO 2018217899 A1 WO2018217899 A1 WO 2018217899A1 US 2018034142 W US2018034142 W US 2018034142W WO 2018217899 A1 WO2018217899 A1 WO 2018217899A1
Authority
WO
WIPO (PCT)
Prior art keywords
volatile memory
page table
processor
binary section
memory
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.)
Ceased
Application number
PCT/US2018/034142
Other languages
French (fr)
Inventor
Venkateswara Rao MANDELA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Japan Ltd
Texas Instruments Inc
Original Assignee
Texas Instruments Japan Ltd
Texas Instruments Inc
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 Texas Instruments Japan Ltd, Texas Instruments Inc filed Critical Texas Instruments Japan Ltd
Publication of WO2018217899A1 publication Critical patent/WO2018217899A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]

Definitions

  • This relates generally to executing code in computing systems, and more particularly to execute-in-place (XIP) execution in a computing system.
  • XIP execute-in-place
  • devices connected to the network need a certain amount of time to go from a powered-off state to a communicative state.
  • vehicles often employ controller area networks (CANs). When the vehicle is off, almost all devices connected to the CAN do not have power. When the vehicle starts, these devices receive power. Vehicle manufacturers often specify that devices connected to the CAN must be able to answer a message on the CAN within a specified start-up period, which creates challenges for device designers.
  • CANs controller area networks
  • An example system includes a non-volatile memory including a binary section, a first page table and a second page table.
  • the system also includes a volatile memory and a processor coupled to the non-volatile memory and the volatile memory.
  • the processor is operable to use the first page table when the processor is initialized.
  • the first page table includes a first pointer to the binary section.
  • the processor is operable to cause copying of the binary section of the non-volatile memory to the volatile memory to create a copied binary section in the volatile memory.
  • the processor is operable to use the second page table when the copying is complete.
  • the second page table includes a second pointer to the copied binary section.
  • FIG. 1 is a timing diagram.
  • FIG. 2 is a block diagram of an example processing circuit.
  • FIG. 3 is a block diagram of an example processing circuit.
  • FIG. 4 is a block diagram of an example processing circuit.
  • FIGS. 5A, 5B and 5C are block diagrams illustrating an example operation of an example processor circuit.
  • FIGS. 6A-6D are block diagrams of an example processor circuit.
  • FIG. 7 is a graphical representation of the operation of the example of FIG. 6.
  • FIG. 8 is a flow diagram for an example method.
  • Coupled may include connections made with intervening elements, and additional elements and various connections may exist between any elements that are “coupled.”
  • Non-volatile memory for example a read-only memory (ROM), such as an electrically erasable programmable read-only memory (EEPROM), because volatile memory loses its data when it loses power.
  • ROM read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • the processor can run the program in two ways: directly from the ROM (non-volatile memory) or from random access memory (RAM) (volatile memory) with the program read from the ROM to the RAM.
  • Running the program directly from the ROM may be referred to herein as execute-in-place (XIP), which allows for quick start up.
  • XIP execute-in-place
  • Operation from RAM is much faster than operating from ROM.
  • operating from RAM requires copying the binary from ROM to RAM.
  • the copying process may take much longer than the 20 ms available start up time. Therefore, this option may not be feasible with tighter time constraints.
  • One way to address this problem is to use a separate processor dedicated to communication with the CAN (e.g., a separate communication processor).
  • a separate processor dedicated to communication may not be cost effective in many situations.
  • FIG. 1 is a timing diagram 100.
  • Period 102 shows an example 50 ms requirement for response to messages from a CAN.
  • Period 104 shows the time required for start of the power management integrated circuit (PMIC), execution of the boot ROM and the initial reading of the boot loader.
  • PMIC power management integrated circuit
  • a separate PMIC isolates processing devices from noisy power sources. Therefore, processing cannot begin until 30 ms after power-up. For example, no processing occurs during period 106 and a device on the CAN must be ready to receive and respond to messages on the CAN at the end of period 108 or during the 20 ms after the end of period 106.
  • FIG. 2 is a block diagram of an example processing circuit 200.
  • Processor 202 is coupled to non-volatile memory 204 and volatile memory 208.
  • Examples of non-volatile memory 204 are read-only memory (ROM), erasable programmable read-only memory (EPROM) and flash memory.
  • Non-volatile memory 204 stores binary section 206.
  • Binary section 206 includes instructions for the operation of processor 202. Because non-volatile memory 204 is non-volatile, non-volatile memory 204 maintains binary section 206 even when power is off.
  • Volatile memory 208 loses data stored in volatile memory 208 when the power is off.
  • volatile memory 208 is double data rate (DDR) random access memory (RAM), and thus processor 202 can read from and write to volatile memory 208 very quickly.
  • DDR double data rate
  • FIG. 3 is a block diagram of an example processing circuit 300.
  • Processor 302 is coupled to non-volatile memory 304 and volatile memory 308.
  • Non-volatile memory 304 stores binary section 306.
  • Binary section 306 includes instructions for the operation of processor 302.
  • processor 302 reads the instructions directly from the binary section 306. This allows processor 302 to quickly begin operation and meet the timing requirements illustrated in FIG. 1. However, because the access time for non-volatile memory 304 is slow, the ongoing operation of processor 302 has low performance.
  • FIG. 4 is a block diagram of an example processing circuit 400.
  • Processor 402 is coupled to non-volatile memory 404 and volatile memory 408.
  • Non-volatile memory 404 stores binary section 406.
  • Binary section 406 includes instructions for the operation of processor 402.
  • processor 402 first makes a copy of binary section 406 in volatile memory 408.
  • FIG. 4 shows this as copied binary section 410.
  • Processor 402 then reads the instructions from the copied binary section 410 after the copy is complete.
  • the time necessary to copy binary section 406 to volatile memory 408 is too long to enable processor 402 to meet the timing requirements of FIG. 1.
  • FIGS. 5A, 5B and 5C are block diagrams illustrating an example operation of processor circuit 500.
  • processor 502 is coupled to non-volatile memory 504 and volatile memory 508.
  • Non-volatile memory 504 stores binary section 506.
  • Binary section 506 includes instructions for the operation of processor 502.
  • processor 502 reads the instructions from the binary section 506. This allows processor 502 to quickly begin operation and meet the timing requirements illustrated in FIG. 1.
  • FIG. 5B shows this as copied binary section 510.
  • FIG. 5B shows this as copied binary section 510.
  • FIG. 5C shows that, when copied binary section 510 is complete (e.g., when the copying is complete), processor 502 executes copied binary section 510 rather than binary section 506. Therefore, processor circuit 500 meets the timing constraints of FIG. 1 while providing the improved performance of executing copied binary section 510 from volatile memory 508.
  • FIGS. 6A-6D hereinbelow show further details of the handover of execution from binary section 506 to copied binary section 510.
  • FIGS. 6A-6D are block diagrams illustrating an example processor circuit 600.
  • Processor circuit 600 includes two processing cores 602 and 604 in this example.
  • Core 602 in an example, is an A15 core according to a design by ARM, Ltd.
  • core 602 is the more powerful A15 core for fast start-up, while the M4 is more cost, space and power efficient for normal operation.
  • processor circuit 600 includes additional processing cores.
  • core 602 is a managing core that begins processing after a reset to processor circuit 600 due to power loss, application failure, etc.
  • Core 604 handles communication, such as with a CAN, among other functions.
  • Core 602 and core 604 couple to memory management unit (MMU) 620 and direct memory access controller (DMA) 618.
  • MMU 620 manages access to all memory.
  • DMA 618 handles memory transfers without processor or MMU control, other than instructions to initialize the transfer.
  • DMA 618 and MMU 620 couple to non-volatile memory 606 and volatile memory 616.
  • FIG. 6A includes lines showing the coupling between core 602, core 604, DMA 618, MMU 620, non-volatile memory 606 and volatile memory 616 by, in this example, a system of buses.
  • FIGS. 6B-6D omit these coupling lines for clarity.
  • Non-volatile memory 606 are electrically erasable programmable read-only memory (EEPROM), flash memory (e.g., non-volatile read/write memory) or other types of read-only memory.
  • Non-volatile memory 606 includes read-only (RO) sections 614.
  • RO sections 614 include a communications application in compiled, binary format in a binary section 615.
  • RO sections 614 also include constants and other invariable information necessary to execute the program.
  • Non-volatile memory 606 also includes read/write (RW) sections 608.
  • RW sections 608 include formatting and other structural elements for (non-constant) variables of the application.
  • Non-volatile memory 606 also includes page table XIP 610 and page table final 612 (also referred to as XIP page table and final page table, respectively).
  • the page tables are tables of pointers used by MMU 620 to point to the appropriate memory element at the appropriate time, as further explained hereinbelow.
  • core 604 addresses the binaries stored in binary section 615 using virtual addresses.
  • MMU 620 uses page table XIP 610 to convert the virtual addresses to physical addresses in non-volatile memory 606. After RO sections 614 is copied to volatile memory 616, MMU switches to using page table final 612 (as copied to volatile memory 616, as further explained hereinbelow). Then MMU 620 uses page table final 612 to convert the virtual addresses to physical addresses in volatile memory 616.
  • FIG. 6B is a block diagram showing the initial steps of preparing the memory for execution of the binary stored in RO sections 614 by core 604.
  • Core 602 begins initial execution on reset when processor circuit 600 initializes, such as due to a loss of power.
  • Core 602 causes DMA 618 to copy RW sections 608 and page table XIP 610 to volatile memory 616 as copied RW sections 624 and copied page table XIP 622, respectively.
  • These memory elements may be small and copy quickly (for example, in microseconds).
  • Core 602 then triggers core 604 to begin processing. These memory elements allow core 604 to begin executing the binary stored in RO sections 614.
  • MMU 620 uses copied page table XIP 622 to point to memory locations to allow core 604 to begin execution in execute-in-place (XIP) mode. For example, for read-only sections, page table XIP 622 points to RO sections 614 in non-volatile memory 606. For read/write sections, page table XIP 622 points to RW sections 624 in volatile memory 616. Core 604 will also cause MMU 620 to create basic support section (BSS) 630 (FIG. 6C). BSS 630 provides basic variables for operation of core 604 apart from the specifically defined variables in RW section 624.
  • BSS basic support section
  • FIG. 6C is a block diagram showing the initial execution of the binary stored in RO sections 614 by core 604.
  • MMU 620 uses copied page table XIP 622 to point core 604 to RO sections 614 for read-only data and to RW sections 624 for read/write data.
  • core 602 instructs DMA 618 to initiate a copy of page table final 612 and RO sections 614 to volatile memory 616 as copied page table final 626 and copied RO sections 628 (including a copied binary section 629), respectively.
  • core 604 instructs DMA 618 to initiate a copy of page table final 612 and RO sections 614 to volatile memory 616 as copied page table final 626 and copied RO sections 628 (including a copied binary section 629), respectively.
  • DMA 618 creates these copies independently of core 604 and avoids using the resources of core 604 to make the copies.
  • the compilation process for the compiled application stored in RO section 614 specifically defines the variables in RW sections 624. Copied page table final 626 and copied RO sections 628 have dashed outlines in FIG. 6C to indicate that copies of copied page table final 626 and copied RO sections 628 are not yet complete.
  • FIG. 6D is a block diagram showing that core 604 operates using volatile memory 616 after the copies of copied page table final 626 and copied RO sections 628 are complete.
  • DMA 618 completes copying copied page table final 626 and copied RO sections 628
  • DMA 618 issues an interrupt to core 602.
  • an interrupt is any indication from the DMA 618 that copying is complete without regard to any specific format.
  • core 602 instructs MMU 620 to use page table final 626.
  • Copied page table final 626 points to copied RW sections 624 and copied RO sections 628 to allow execution of the binary by core 604. Because copied RO sections 628 are read-only, the transfer from RO sections 614 to copied RO sections 628 is seamless.
  • core 604 executes at a much faster rate made possible by using volatile memory 616, which is much faster than non-volatile memory 606.
  • volatile memory 616 which is much faster than non-volatile memory 606.
  • flash memory a type of non-volatile memory
  • DDR synchronous double-data-rate RAM
  • processor circuit 600 is an integrated circuit as a system-on-chip (SoC).
  • SoC system-on-chip
  • some or all components of processor circuit may be separate components and, in some examples, are packages in hybrid modules with the other components of processor circuit 600, and in other examples, are in separate packages.
  • FIG. 6 shows two cores, in some examples, the processor circuit can include only one core or more than two cores.
  • other types of processing modules may be used, such as microprocessors.
  • FIG. 7 is a graphical representation of the operation of the example of FIG. 6.
  • the top portion of chart 700 represents XIP execution 702. When XIP execution 702 begins, start background copy 706 begins. When the background copy is complete, DMA 618 (FIG.
  • Switch 710 is a representation of the function where MMU 620 (FIG. 6) switches from using page table XIP 622 (FIG. 6) to final table final 626 (FIG. 6) in response copy completion notification from DMA 618 (FIG. 6), and thus core 604 operates using the RO sections 628 (FIG. 6).
  • FIG. 8 is a flow diagram of an example method 800.
  • Method 800 is an example method of operating the example of FIG. 6.
  • core 0 602 (FIG. 6) performs steps on the left of the dashed line
  • core 1 604 (FIG. 6) performs steps on the right of the dashed line.
  • Step 802 starts core 0 602 (FIG. 6).
  • Step 804 sets up the XIP interface by copying the page table XIP 610 (FIG. 6) from non-volatile memory 606 to volatile memory 616 (FIG. 6).
  • Step 806 sets up the MMU 620 (FIG. 6) to use copied page table XIP 622 (FIG. 6).
  • Step 808 copies the RW sections 608 (FIG.
  • Step 810 takes core 1 604 (FIG. 6) out of reset mode.
  • Step 812 copies the RO sections 614 (FIG. 6) in response to instructions from core 602 (FIG. 6) from non-volatile memory 606 (FIG. 6) to volatile memory 616 (FIG. 6).
  • Step 814 copies the non-XIP page tables using DMA 618 (FIG. 6), such as page table final 612 from non-volatile memory 606 to volatile memory 616 (FIG. 6).
  • Step 816 switches the page table used by MMU 620 (FIG 6.) to begin using copied page table final 626 (FIG. 6).
  • step 818 begins execution of the binary by core 1 604 (FIG. 6).
  • Step 820 operates core 1 604 (FIG. 6) in XIP manner using copied page table XIP 622 (FIG. 6).
  • Step 822 is in response to step 816 in that when MMU 620 switches from copied page table XIP 622 to copied page table final 626 (FIG. 6), core 1 604 will run in non-XIP manner.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

An example system (600) includes a non-volatile memory (606) including a binary section (615), a first page table (610) and a second page table (612). The system (600) also has a volatile memory (616) and a processor (604) coupled to the non-volatile memory (606) and the volatile memory (616). The processor (604) is operable to use the first page table (610) when the processor (604) is initialized. The first page table (610) includes a first pointer to the binary section (615). The processor (604) is operable to cause copying of the binary section (615) of the non-volatile memory (606) to the volatile memory (616) to create a copied binary section (629) in the volatile memory (616). Also, the processor (604) is operable to use the second page table (612) when the copying is complete. The second page table (612) includes a second pointer to the copied binary section (629).

Description

INTEGRATED CIRCUIT CAPABLE OF SWITCHING BETWEEN NON- VOLATILE MEMORY-BASED AND VOLATILE MEMORY-BASED PROCESSOR EXECUTION
[0001] This relates generally to executing code in computing systems, and more particularly to execute-in-place (XIP) execution in a computing system.
BACKGROUND
[0002] In certain networks, devices connected to the network need a certain amount of time to go from a powered-off state to a communicative state. For example, vehicles often employ controller area networks (CANs). When the vehicle is off, almost all devices connected to the CAN do not have power. When the vehicle starts, these devices receive power. Vehicle manufacturers often specify that devices connected to the CAN must be able to answer a message on the CAN within a specified start-up period, which creates challenges for device designers.
SUMMARY
[0003] An example system includes a non-volatile memory including a binary section, a first page table and a second page table. The system also includes a volatile memory and a processor coupled to the non-volatile memory and the volatile memory. The processor is operable to use the first page table when the processor is initialized. The first page table includes a first pointer to the binary section. The processor is operable to cause copying of the binary section of the non-volatile memory to the volatile memory to create a copied binary section in the volatile memory. Also, the processor is operable to use the second page table when the copying is complete. The second page table includes a second pointer to the copied binary section.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 is a timing diagram.
[0005] FIG. 2 is a block diagram of an example processing circuit.
[0006] FIG. 3 is a block diagram of an example processing circuit.
[0007] FIG. 4 is a block diagram of an example processing circuit.
[0008] FIGS. 5A, 5B and 5C (collectively "FIG. 5") are block diagrams illustrating an example operation of an example processor circuit. [0009] FIGS. 6A-6D (collectively "FIG. 6") are block diagrams of an example processor circuit.
[0010] FIG. 7 is a graphical representation of the operation of the example of FIG. 6.
[0011] FIG. 8 is a flow diagram for an example method.
DETAILED DESCRIPTION OF EXAMPLE EMB ODFMENT S
[0012] Corresponding numerals and symbols in the drawings generally refer to corresponding parts unless otherwise indicated. The drawings are not necessarily drawn to scale.
[0013] The term "coupled" may include connections made with intervening elements, and additional elements and various connections may exist between any elements that are "coupled."
[0014] Compiled applications (binaries) for devices on controller area networks (CANs), and the boot ROM, may be stored in non-volatile memory, for example a read-only memory (ROM), such as an electrically erasable programmable read-only memory (EEPROM), because volatile memory loses its data when it loses power. Within a 50 ms start-up period, power up and read out from the ROM usually requires about 30 ms. This leaves 20 ms for the processor to begin executing to be ready to receive messages on the CAN. The processor can run the program in two ways: directly from the ROM (non-volatile memory) or from random access memory (RAM) (volatile memory) with the program read from the ROM to the RAM. Running the program directly from the ROM may be referred to herein as execute-in-place (XIP), which allows for quick start up. However, reading from the ROM is much slower than reading from RAM. Therefore, the operational speed of XIP is slow.
[0015] Operation from RAM is much faster than operating from ROM. However, operating from RAM requires copying the binary from ROM to RAM. The copying process may take much longer than the 20 ms available start up time. Therefore, this option may not be feasible with tighter time constraints. One way to address this problem is to use a separate processor dedicated to communication with the CAN (e.g., a separate communication processor). However, using a separate processor dedicated to communication may not be cost effective in many situations.
[0016] FIG. 1 is a timing diagram 100. Period 102 shows an example 50 ms requirement for response to messages from a CAN. Period 104 shows the time required for start of the power management integrated circuit (PMIC), execution of the boot ROM and the initial reading of the boot loader. In high noise environments, such as in vehicles, a separate PMIC isolates processing devices from noisy power sources. Therefore, processing cannot begin until 30 ms after power-up. For example, no processing occurs during period 106 and a device on the CAN must be ready to receive and respond to messages on the CAN at the end of period 108 or during the 20 ms after the end of period 106.
[0017] FIG. 2 is a block diagram of an example processing circuit 200. Processor 202 is coupled to non-volatile memory 204 and volatile memory 208. Examples of non-volatile memory 204 are read-only memory (ROM), erasable programmable read-only memory (EPROM) and flash memory. Non-volatile memory 204 stores binary section 206. Binary section 206 includes instructions for the operation of processor 202. Because non-volatile memory 204 is non-volatile, non-volatile memory 204 maintains binary section 206 even when power is off. Volatile memory 208 loses data stored in volatile memory 208 when the power is off. In this example, volatile memory 208 is double data rate (DDR) random access memory (RAM), and thus processor 202 can read from and write to volatile memory 208 very quickly.
[0018] FIG. 3 is a block diagram of an example processing circuit 300. Processor 302 is coupled to non-volatile memory 304 and volatile memory 308. Non-volatile memory 304 stores binary section 306. Binary section 306 includes instructions for the operation of processor 302. In this example, processor 302 reads the instructions directly from the binary section 306. This allows processor 302 to quickly begin operation and meet the timing requirements illustrated in FIG. 1. However, because the access time for non-volatile memory 304 is slow, the ongoing operation of processor 302 has low performance.
[0019] FIG. 4 is a block diagram of an example processing circuit 400. Processor 402 is coupled to non-volatile memory 404 and volatile memory 408. Non-volatile memory 404 stores binary section 406. Binary section 406 includes instructions for the operation of processor 402. In this example, rather than reading binary section 406 directly from non-volatile memory 404, processor 402 first makes a copy of binary section 406 in volatile memory 408. FIG. 4 shows this as copied binary section 410. Processor 402 then reads the instructions from the copied binary section 410 after the copy is complete. However, the time necessary to copy binary section 406 to volatile memory 408 is too long to enable processor 402 to meet the timing requirements of FIG. 1.
[0020] FIGS. 5A, 5B and 5C (collectively "FIG. 5") are block diagrams illustrating an example operation of processor circuit 500. In FIG. 5A, processor 502 is coupled to non-volatile memory 504 and volatile memory 508. Non-volatile memory 504 stores binary section 506. Binary section 506 includes instructions for the operation of processor 502. In this example, processor 502 reads the instructions from the binary section 506. This allows processor 502 to quickly begin operation and meet the timing requirements illustrated in FIG. 1. As illustrated in FIG. 5B, while processor 502 is executing using binary section 506, processor 502 makes a copy of binary section 506 in volatile memory 508. FIG. 5B shows this as copied binary section 510. FIG. 5C shows that, when copied binary section 510 is complete (e.g., when the copying is complete), processor 502 executes copied binary section 510 rather than binary section 506. Therefore, processor circuit 500 meets the timing constraints of FIG. 1 while providing the improved performance of executing copied binary section 510 from volatile memory 508. FIGS. 6A-6D hereinbelow show further details of the handover of execution from binary section 506 to copied binary section 510.
[0021] FIGS. 6A-6D (collectively "FIG. 6") are block diagrams illustrating an example processor circuit 600. Processor circuit 600 includes two processing cores 602 and 604 in this example. Core 602, in an example, is an A15 core according to a design by ARM, Ltd. Core 604, in an example, is an M4 core that is also according to a design by ARM, Ltd. In this example, core 602 is the more powerful A15 core for fast start-up, while the M4 is more cost, space and power efficient for normal operation. In other examples, processor circuit 600 includes additional processing cores. In this example, core 602 is a managing core that begins processing after a reset to processor circuit 600 due to power loss, application failure, etc. Core 604 handles communication, such as with a CAN, among other functions. Core 602 and core 604 couple to memory management unit (MMU) 620 and direct memory access controller (DMA) 618. MMU 620 manages access to all memory. DMA 618 handles memory transfers without processor or MMU control, other than instructions to initialize the transfer. DMA 618 and MMU 620 couple to non-volatile memory 606 and volatile memory 616. FIG. 6A includes lines showing the coupling between core 602, core 604, DMA 618, MMU 620, non-volatile memory 606 and volatile memory 616 by, in this example, a system of buses. FIGS. 6B-6D omit these coupling lines for clarity.
[0022] Examples of non-volatile memory 606 are electrically erasable programmable read-only memory (EEPROM), flash memory (e.g., non-volatile read/write memory) or other types of read-only memory. Non-volatile memory 606 includes read-only (RO) sections 614. For example, RO sections 614 include a communications application in compiled, binary format in a binary section 615. RO sections 614 also include constants and other invariable information necessary to execute the program. Non-volatile memory 606 also includes read/write (RW) sections 608. RW sections 608 include formatting and other structural elements for (non-constant) variables of the application. Non-volatile memory 606 also includes page table XIP 610 and page table final 612 (also referred to as XIP page table and final page table, respectively). The page tables are tables of pointers used by MMU 620 to point to the appropriate memory element at the appropriate time, as further explained hereinbelow. Briefly, core 604 addresses the binaries stored in binary section 615 using virtual addresses. MMU 620 uses page table XIP 610 to convert the virtual addresses to physical addresses in non-volatile memory 606. After RO sections 614 is copied to volatile memory 616, MMU switches to using page table final 612 (as copied to volatile memory 616, as further explained hereinbelow). Then MMU 620 uses page table final 612 to convert the virtual addresses to physical addresses in volatile memory 616.
[0023] FIG. 6B is a block diagram showing the initial steps of preparing the memory for execution of the binary stored in RO sections 614 by core 604. Core 602 begins initial execution on reset when processor circuit 600 initializes, such as due to a loss of power. Core 602 causes DMA 618 to copy RW sections 608 and page table XIP 610 to volatile memory 616 as copied RW sections 624 and copied page table XIP 622, respectively. These memory elements may be small and copy quickly (for example, in microseconds). Core 602 then triggers core 604 to begin processing. These memory elements allow core 604 to begin executing the binary stored in RO sections 614. Specifically, MMU 620 uses copied page table XIP 622 to point to memory locations to allow core 604 to begin execution in execute-in-place (XIP) mode. For example, for read-only sections, page table XIP 622 points to RO sections 614 in non-volatile memory 606. For read/write sections, page table XIP 622 points to RW sections 624 in volatile memory 616. Core 604 will also cause MMU 620 to create basic support section (BSS) 630 (FIG. 6C). BSS 630 provides basic variables for operation of core 604 apart from the specifically defined variables in RW section 624.
[0024] FIG. 6C is a block diagram showing the initial execution of the binary stored in RO sections 614 by core 604. As shown in FIG. 6C, MMU 620 uses copied page table XIP 622 to point core 604 to RO sections 614 for read-only data and to RW sections 624 for read/write data. Also, core 602 instructs DMA 618 to initiate a copy of page table final 612 and RO sections 614 to volatile memory 616 as copied page table final 626 and copied RO sections 628 (including a copied binary section 629), respectively. In an alternate example, using instructions stored in core 604 or instructions read from RO section 614, core 604 instructs DMA 618 to initiate a copy of page table final 612 and RO sections 614 to volatile memory 616 as copied page table final 626 and copied RO sections 628 (including a copied binary section 629), respectively. DMA 618 creates these copies independently of core 604 and avoids using the resources of core 604 to make the copies. The compilation process for the compiled application stored in RO section 614 specifically defines the variables in RW sections 624. Copied page table final 626 and copied RO sections 628 have dashed outlines in FIG. 6C to indicate that copies of copied page table final 626 and copied RO sections 628 are not yet complete.
[0025] FIG. 6D is a block diagram showing that core 604 operates using volatile memory 616 after the copies of copied page table final 626 and copied RO sections 628 are complete. For example, when DMA 618 completes copying copied page table final 626 and copied RO sections 628, DMA 618 issues an interrupt to core 602. In this example, an interrupt is any indication from the DMA 618 that copying is complete without regard to any specific format. In response to the interrupt, core 602 instructs MMU 620 to use page table final 626. Copied page table final 626 points to copied RW sections 624 and copied RO sections 628 to allow execution of the binary by core 604. Because copied RO sections 628 are read-only, the transfer from RO sections 614 to copied RO sections 628 is seamless. After the transition to copied page table final 626, core 604 executes at a much faster rate made possible by using volatile memory 616, which is much faster than non-volatile memory 606. For example, flash memory (a type of non-volatile memory) has typical access times on the order of 1500 ns while synchronous double-data-rate (DDR) RAM (a type of volatile memory) has typical access times on the order of 75 ns.
[0026] In an example, processor circuit 600 is an integrated circuit as a system-on-chip (SoC). In other examples, some or all components of processor circuit may be separate components and, in some examples, are packages in hybrid modules with the other components of processor circuit 600, and in other examples, are in separate packages. Also, although FIG. 6 shows two cores, in some examples, the processor circuit can include only one core or more than two cores. Also, other types of processing modules may be used, such as microprocessors. [0027] FIG. 7 is a graphical representation of the operation of the example of FIG. 6. The top portion of chart 700 represents XIP execution 702. When XIP execution 702 begins, start background copy 706 begins. When the background copy is complete, DMA 618 (FIG. 6) sends the copy complete notification 708. Then the intelligent and seamless switch over 710 changes switch 712 from XIP execution 702 to RAM execution 704. Switch 710 is a representation of the function where MMU 620 (FIG. 6) switches from using page table XIP 622 (FIG. 6) to final table final 626 (FIG. 6) in response copy completion notification from DMA 618 (FIG. 6), and thus core 604 operates using the RO sections 628 (FIG. 6).
[0028] FIG. 8 is a flow diagram of an example method 800. Method 800 is an example method of operating the example of FIG. 6. In this example, core 0 602 (FIG. 6) performs steps on the left of the dashed line, and core 1 604 (FIG. 6) performs steps on the right of the dashed line. Step 802 starts core 0 602 (FIG. 6). Step 804 sets up the XIP interface by copying the page table XIP 610 (FIG. 6) from non-volatile memory 606 to volatile memory 616 (FIG. 6). Step 806 sets up the MMU 620 (FIG. 6) to use copied page table XIP 622 (FIG. 6). Step 808 copies the RW sections 608 (FIG. 6) from non-volatile memory 606 to volatile memory 616 (FIG. 6). Step 810 takes core 1 604 (FIG. 6) out of reset mode. Step 812 copies the RO sections 614 (FIG. 6) in response to instructions from core 602 (FIG. 6) from non-volatile memory 606 (FIG. 6) to volatile memory 616 (FIG. 6). Step 814 copies the non-XIP page tables using DMA 618 (FIG. 6), such as page table final 612 from non-volatile memory 606 to volatile memory 616 (FIG. 6). Step 816 switches the page table used by MMU 620 (FIG 6.) to begin using copied page table final 626 (FIG. 6). In parallel to steps 810, 812, 814, and 816, step 818 begins execution of the binary by core 1 604 (FIG. 6). Step 820 operates core 1 604 (FIG. 6) in XIP manner using copied page table XIP 622 (FIG. 6). Step 822 is in response to step 816 in that when MMU 620 switches from copied page table XIP 622 to copied page table final 626 (FIG. 6), core 1 604 will run in non-XIP manner.
[0029] Modifications are possible in the described examples, and other examples are possible, within the scope of the claims.

Claims

CLAIMS What is claimed is:
1. A system comprising:
a non-volatile memory including a binary section, a first page table and a second page table;
a volatile memory; and
a processor coupled to the non-volatile memory and the volatile memory, the processor operable to use the first page table when the processor is initialized, the first page table including a first pointer to the binary section, the processor operable to cause copying of the binary section of the non-volatile memory to the volatile memory while the processor is using the first page table to create a copied binary section in the volatile memory, and the processor operable to use the second page table when the copying is complete, the second page table including a second pointer to the copied binary section.
2. The system of claim 1 wherein the binary section is in a read-only section.
3. The system of claim 1 wherein the non-volatile memory is flash memory.
4. The system of claim 1 wherein the processor has at least one core.
5. The system of claim 1 wherein the first page table used by the processor is a copy of the first page table in the volatile memory.
6. The system of claim 1 further including a direct memory access controller wherein the processor is operable to instruct the direct memory access controller to copy the binary section from the non-volatile memory to the volatile memory and provide an indication to the processor when copying of the binary section from the non-volatile memory to the volatile memory is complete.
7. The system of claim 1 wherein the binary section includes a communications application.
8. An integrated circuit comprising:
a memory management unit;
a direct memory access controller to access a volatile memory, a non-volatile memory including a binary section, a first page table and a second page table, and the memory management unit; and
a processor to access the non-volatile memory, the volatile memory, the memory management unit and the direct memory access controller, the processor operable to cause the memory management unit to use the first page table when the processor is initialized, the first page table including a first pointer to the binary section, the processor operable to cause the direct memory access controller to copy the binary section of the non-volatile memory to the volatile memory to generate a copied binary section in the volatile memory, and the processor operable to cause the memory management unit to use the second page table when the copying is complete, the second page table including a second pointer to the copied binary section.
9. The integrated circuit of claim 8 wherein the binary section is in a read-only section.
10. The integrated circuit of claim 8 wherein the processor has at least one core.
11. The integrated circuit of claim 8 wherein the first page table used by the processor is a copy of the first page table in the volatile memory.
12. The integrated circuit of claim 8 wherein the binary section includes a communications application.
13. A method compri sing :
providing a non-volatile memory having a binary section, a first page table having a first pointer to the binary section, and a second page table;
copying the first page table to a volatile memory;
executing with a processor an application in the binary section using the first page table copied to the volatile memory;
copying the binary section and the second page table to the volatile memory while the processor executes the application using the copy of the first page table copied to the volatile memory; and
when the copying of the binary section and the second page table to the volatile memory is complete, continuing execution of the application by the processor using the second page table, the second page table having a second pointer to the copy of the binary section in the volatile memory.
14. The method of claim 13 wherein the copying of the binary section and the second page table to the volatile memory is performed by a direct memory access controller.
15. The method of claim 13 wherein: the processor accesses the non-volatile memory and the volatile memory using a memory management unit; and the memory management unit accesses the first page table and, after the copying of the binary section and the second page table to the volatile memory is complete, accesses the copy of the second page table in the volatile memory.
16. The method of claim 13 wherein the copying of the binary section and the second page table to the volatile memory is performed by a direct memory access controller.
17. The method of claim 13 wherein the non-volatile memory is a flash memory.
18. The method of claim 13 wherein the volatile memory is a RAM.
19. The method of claim 13 wherein the binary section is part of a read-only section.
20. The method of claim 13 wherein the application is a communications application.
PCT/US2018/034142 2017-05-23 2018-05-23 Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution Ceased WO2018217899A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
IN201741018056 2017-05-23
IN201741018056 2017-05-23
US201762612382P 2017-12-30 2017-12-30
US62/612,382 2017-12-30
US15/985,859 2018-05-22
US15/985,859 US10956076B2 (en) 2017-05-23 2018-05-22 Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution

Publications (1)

Publication Number Publication Date
WO2018217899A1 true WO2018217899A1 (en) 2018-11-29

Family

ID=64397036

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2018/034142 Ceased WO2018217899A1 (en) 2017-05-23 2018-05-23 Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution

Country Status (2)

Country Link
US (1) US10956076B2 (en)
WO (1) WO2018217899A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12067244B2 (en) * 2022-11-30 2024-08-20 Texas Instruments Incorporated Memory allocation for microcontroller execution
KR20240103313A (en) * 2022-12-27 2024-07-04 현대오토에버 주식회사 Microcontroller that maintains control function even after soft-reset and controlling method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282624B1 (en) * 1997-11-13 2001-08-28 Seiko Epson Corporation Non-volatile memory apparatus including first and second address conversion tables stored in volatile and nonvolatile memories for improved access at power up
US7177184B2 (en) * 2001-09-17 2007-02-13 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US20110022819A1 (en) * 2009-07-24 2011-01-27 Daniel Jeffrey Post Index cache tree
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822784A (en) * 1993-03-19 1998-10-13 Intel Corporation Mechanism supporting execute in place read only memory applications located on removable computer cards
TW594477B (en) * 2003-05-02 2004-06-21 Genesys Logic Inc Method and related device for accessing non-volatile memory of dual platforms for PC and X-BOX
JP2007109197A (en) * 2005-09-16 2007-04-26 Renesas Technology Corp Semiconductor integrated circuit device and generation method of address conversion table
US8281169B2 (en) * 2008-08-27 2012-10-02 Wireless Silicon Group, Inc. Method and system for power management for a handheld mobile electronic device executing-in-place an application kernel from execute-in-place non-volatile memory (XIP NVM)
US10452561B2 (en) * 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282624B1 (en) * 1997-11-13 2001-08-28 Seiko Epson Corporation Non-volatile memory apparatus including first and second address conversion tables stored in volatile and nonvolatile memories for improved access at power up
US7177184B2 (en) * 2001-09-17 2007-02-13 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US20110022819A1 (en) * 2009-07-24 2011-01-27 Daniel Jeffrey Post Index cache tree
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory

Also Published As

Publication number Publication date
US20180341424A1 (en) 2018-11-29
US10956076B2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
JP6046216B2 (en) Host system and host controller
US9411601B2 (en) Flexible bootstrap code architecture
CN102981864B (en) Signal conditioning package and information processing method
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
CN101414264B (en) Method for updating software version
US20120110562A1 (en) Synchronized firmware update
CN110737608B (en) A data operation method, device and system
CN109901890B (en) Method and device for loading multi-core firmware by controller, computer equipment and storage medium
CN110955624A (en) Hot plug method, device and system of PCIE (peripheral component interface express) equipment
CN100377085C (en) Implementation Method of Embedded Operating System Hardware Image Boot Optimization
CN114207596A (en) Providing interrupts from an input-output memory management unit to a guest operating system
CN104156234A (en) Multi-core processor starting and bootloader big-little endian mode adapting method device
CN101872306B (en) Embedded system for realizing software updating and software backup and implementation method thereof
WO2020199009A1 (en) Processing method, apparatus and device for starting apparatus, and storage medium
US10956076B2 (en) Integrated circuit capable of switching between non-volatile memory-based and volatile memory-based processor execution
JP2007206885A (en) Computer system and system startup method
CN114143140A (en) Data transmission system, method, storage medium and electronic equipment
CN114185603B (en) Control method of intelligent accelerator card, server and intelligent accelerator card
CN108062234B (en) A system and method for realizing server host accessing BMC FLASH through mailbox protocol
CN115129619B (en) Firmware switching method, device, equipment and medium
EP3022643A1 (en) Techniques for dynamically redirecting device driver operations to user space
US9223697B2 (en) Computer reprogramming method, data storage medium and motor vehicle computer
US20200133562A1 (en) Information processing device, controlling method and program
CN113535215B (en) Virtual machine hot upgrading method, device, equipment and storage medium
CN106708596A (en) Input/output virtual resource adjustment method and processor

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18805950

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18805950

Country of ref document: EP

Kind code of ref document: A1