WO2022192017A1 - Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions - Google Patents
Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions Download PDFInfo
- Publication number
- WO2022192017A1 WO2022192017A1 PCT/US2022/018060 US2022018060W WO2022192017A1 WO 2022192017 A1 WO2022192017 A1 WO 2022192017A1 US 2022018060 W US2022018060 W US 2022018060W WO 2022192017 A1 WO2022192017 A1 WO 2022192017A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- hardware module
- register
- hardware
- module
- command
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Definitions
- the present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions.
- FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time.
- a system comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
- the non-register-write operations may comprise at least one of: a register read operation; a wait-for-done operation; or a debug operation.
- the special marker may comprise an address of a predefined special memory register and an operation code.
- the firmware module may prepare a list of commands stored in memory; the firmware module provides at least one address pointer and size for the list of commands to the hardware module; and the hardware module fetches the list of commands via the at least one address pointer and size.
- the firmware module may provide, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
- the hardware module may store the at least one address pointer to a memory register within the plurality of memory registers.
- the firmware module may provide the at least one address pointer to the hardware module repeatedly during different points in time.
- the hardware module may receive a command to perform a wait-for-done operation; the hardware module pauses operating until detecting that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
- the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
- the hardware module may receive a command to perform a terminate operation; and in response, the hardware module: pauses operating until detecting that at least one hardware thread has completed; drains prefetched data; empties a command queue; and confirms a completion of the terminate operation to the firmware module.
- the hardware module may receive a command from the firmware to perform a debug operation; and in response, the hardware module writes data to memory that is accessible to the firmware.
- the hardware module may store a timeout value that, when reached, prompts the hardware module to: pause operating; and send a timeout message to the firmware module.
- the hardware module may store, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
- a computer-implemented method comprising: identifying a hardware module that: directly reads from and writes to a plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker; receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker; and performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
- the non-register-write operation may comprise a register read operation; and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
- the non-register-write operation may comprise a wait- for-done operation; the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
- the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
- the non-register-write operation may comprise a debug operation; and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
- the non-register-write operation may comprise a terminate operation; and the hardware module performs the terminate operation by: pausing operating until detecting that at least one hardware thread has completed; draining prefetched data; emptying a command queue; and confirming a completion of the terminate operation to the firmware module.
- an apparatus comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
- FIG. 1 is a block diagram of an exemplary system for facilitating efficient hardware-firmware interactions.
- FIG. 2 is a flow diagram of an exemplary method for facilitating efficient hardware-firmware interactions.
- FIG. 3 is a block diagram of a command direct memory access module.
- FIG. 4 is a block diagram of a read engine for a command direct memory access module.
- FIG. 5 is a block diagram of a write engine fora command direct memory access module.
- FIG. 6 is a block diagram of a read engine for a command direct memory access module.
- FIG. 7 is a block diagram of a command direct memory access module performing multithreaded operations.
- FIG. 8 is an additional block diagram of a command direct memory access module performing multithreaded operations.
- FIG. 9 is a flow diagram of a method for a command direct memory access module to execute a terminate command.
- FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time. The latency may become critical and significant in throughput driven designs where multiple HW threads work in pipeline fashion to achieve a common task, such as a transcoder that decodes a video sequence of a particular format and encodes the video sequence in different formats and resolutions.
- the present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions.
- the systems described herein offload some of this from FW and implement some of the programming features in HW.
- a new HW module called command direct memory access (CDMA)
- CDMA may be added in the transcoder solution or other hardware configuration.
- a CDMA may support a pointer-to-pointer scheme for basic register programming, a special marker that enables the HW to distinguish between register write operations and special operations (e.g., read, wait, etc.), a wait-for- done command, and/or debug and performance traces. This may enable FW to use dedicated buffers for a programming sequence that is common across frames for a given HW thread. In some embodiments, this system may minimize FW buffer updates (or writes) and/or save command list preparation time.
- the systems described herein may improve the functioning of a computing device by increasing the speed at which the computing device performs operations. Additionally, the systems described herein may improve the fields of computational efficiency and/or video transcoding by improving the efficiency at which computing devices can execute certain command sequences, such as the command sequences used in video transcoding.
- FIG. 1 is a block diagram of an exemplary system 100 for facilitating efficient hardware-firmware interaction.
- a computing device 102 may be configured with memory registers 104(1) through 104(n).
- a hardware module 106 may perform read and/or write operations on memory registers 104(1) through 104(n).
- hardware module 106 may be a CDMA that is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations.
- computing device 102 may include a firmware module 108 that directs hardware module 106 to perform operations at least in part by sending the special marker.
- computing device 102 may include a hardware element configured to execute firmware module 108.
- Computing device 102 may represent various types of computing devices including but not limited to personal computing devices (e.g., laptops, desktops, smart phones, etc.), servers, embedded computing devices, and/or smart devices.
- FIG. 2 is a flow diagram of an exemplary method 200 for facilitating hardware- firmware interactions.
- the systems described herein may identify a FIW module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations.
- the term "special marker” may generally refer to any string embedded in a message and/or any formatting of a message that is interpreted by a specially configured hardware module (e.g., a CDMA) as a command other than the default command performed by the hardware module (e.g., register write).
- the special marker may take a variety of forms.
- the systems described herein may designate a specific register in CDMA control/status register space and use the address of the designated register as the special marker.
- the systems described herein may define specific operation codes (opcodes) that each designate a specific operation, such as wait-for-done, terminate, debug, and so forth.
- a 32-bit address field may be split into 28 bits for the address of the designated register and four bits for opcodes.
- the systems described herein may perform step 202 in a variety of ways.
- the systems described herein may identify a CDMA.
- the term "CDMA" generally refers to any hardware module that is capable of perform register read and write operations and that is configured to interpret a special marker.
- a CDMA may manage multiple hardware threads.
- the systems described herein may send, by a FW module, a command to the HW module directing the HW module to perform a non-register-write operation via the special marker.
- non-register-write operation may generally refer to any operation performed by hardware that does not exclusively consist of writing data to a memory register.
- a non-register-write operation may include a register read operation, a wait-for-done operation, a terminate operation, and/or a debug operation.
- the systems described herein may perform step 204 in a variety of ways.
- FW may send a wait-for-done command to the CDMA.
- FW may send a terminate command to the CDMA.
- the systems described herein may receive, by the FIW module, the command directing the FIW module to perform the non-register-write operation via the special marker.
- the systems described herein may perform step 206 in a variety of ways.
- the CDMA may read the command from a command queue.
- the CDMA may check a designated section of memory for commands from FW.
- the systems describe herein may perform, by the FIW module, in response to receiving the command, the non-register-write operation signified by the special marker.
- the CDMA may read data, wait for a thread to complete, and/or terminate operations.
- the CDMA may send debug data to FW.
- the CDMA may output debugging information into external memory that can be used by FW for performance monitoring, analysis, and/or debugging processes.
- the CDMA may receive a wait-for-done command and in response, the CDMA may pause operating until detecting that a hardware thread specified by the wait-for-done command has completed.
- FIG. 3 is a block diagram of an example CDMA 302.
- CDMA Code Division Multiple Access
- read/write channel 308 may use an advanced extensible interface (AXI) communication interface to read data from external memory and/or write data to externa memory.
- read/write channel 310 may use an advanced microcontroller bus (AFIB) interface to read data from memory registers (e.g., the status register) and/or write data to memory registers.
- AFIB advanced microcontroller bus
- the systems described herein may use other hardware architecture, interfaces, and/or protocols for write channel 308 and/or read channel 310.
- write channel 308 and/or read channel 310 may be capable of executing on multiple threads simultaneously and arbiters 312 and/or 314 may allocate access to write channel 308 and/or read channel 310, respectively.
- CDMA 302 may be configured to execute CDMA threads 304(1) through 304(n).
- CDMA 302 may be configured to execute twelve threads.
- CDMA 302 may be functioning as a video transcoder and may have twelve threads that each correspond to a different format and/or a different stage of the transcoding process.
- CDMA 302 may periodically update a control/status register (CSR) 306 with the current status of CDMA 302.
- CSR control/status register
- CDMA 302 may maintain internally the position within each buffer and provide that information at CSR 306.
- data in CSR 306 may indicate the address of the current command being executed and/or a pointer in CSR 306 may indicate the position within the current programming sequence buffer.
- CDMA 302 may receive instructions from FW via one or more designated registers within CSR 306.
- the systems described herein may support a programming sequence of a thread that is split across multiple physical buffers in memory.
- a CDMA may access memory 402 based on a command queue 404 that issues commands to a CDMA thread 406.
- Memory 402 may represent various types of memory, including but not limited to double data rate synchronous dynamic random- access memory (DDR SDRAM) and/or any other suitable type of random-access memory.
- DDR SDRAM double data rate synchronous dynamic random- access memory
- memory 402 may include three different buffers that are prepared by FW for access by one or more CDMA threads. In some embodiments, this may enable FW to store all the common programming sequences in one buffer to use these sequences across frames for a given thread as well as across threads.
- the frame width and height for a given video sequence may be unchanged across multiple stages of transcoding.
- the debug programming sequence and/or reset/clear mechanisms may be constant across frames.
- FW may store each sequence in one dedicated buffer. By storing reused sequences in buffers in memory, the systems described herein may prevent FW from having to re-program the buffers repeatedly.
- FW may provide an address pointer and size for the list of commands stored in command queue 404 and the CDMA may fetch the list of commands via the address pointer and size.
- the FW may provide the address pointer and size repeatedly, as the buffer may include instructions that are referenced repeatedly, such as the debug programming sequence, clock sequence, reset sequence, and/or interrupt clear sequence.
- FW may provide all the pointers to the CDMA through a CSR.
- the CDMA may provide control to FW to push an enable-interrupt command into the command queue. When this command is received, the CDMA may generate an interrupt after the processing of the corresponding buffer.
- FIG. 5 is a block diagram of an example write engine for a CDMA.
- the write engine may only be active if the CDMA is executing register read operations.
- the CDMA may issue the read request to memory registers through AFIB to collect data, combine the ⁇ address, data ⁇ pairs to match bus width, then write the data out in bursts to DDR through AXI.
- a CDMA 504 may write to a memory 502.
- CDMA 504 may write data in a variety of formats. For example, CDMA 504 may be configured to transcode videos into different formats.
- CDMA 504 may include write engines 506(1) through 506(n) that each correspond to a format from formats 512(1) through 512(n). In some embodiments, write engines 506(1) through 506(n) may have resources allocated by an arbiter 510 that controls access to direct memory access 508. In one embodiment, CDMA 504 may use an AHB interface to read the corresponding registers and then write the address and data pair to memory 502 via an AXI interface. In some examples, FW may provide one write address per thread for a given CDMA session and CDMA 504 may continue to write the data in that location. In some embodiments, each CDMA thread may have one associated write address for FW to program. In some examples, once CDMA 504 receives an opcode indicating that the last data has been received, CDMA 504 may flush out any partial data to memory 502 and/or returns write-done interrupt to FW.
- FIG. 6 is a block diagram of a read engine for a CDMA.
- a CDMA Code Division Multiple Access
- CDMA 608 may read from a read buffer 604 in memory 602 and/or write to a write buffer 606 in memory 602. In some embodiments, CDMA 608 may read from and/or write to a local CDMA buffer 610. For example, CDMA 608 may read and/or process a first set of data at a time 612, a second set of data at a time 614, and/or a third set of data at a time 616. Once local CDMA buffer 610 is full and/or CDMA 608 has received a special marker instructing CDMA 608 to write all data, CDMA 608 may write the data in local CDMA buffer 610 to write buffer 606 in memory 602.
- FW may read three registers after each wait-for- done instruction and may finish the session after three frames. In this example, there may be a total of nine register reads and the amount of data written to memory 602 may be 72 bytes.
- the systems described herein may use a sequence identifier (ID) inserted in the special marker to facilitate cross thread dependency and/or efficiency within a single thread.
- ID may be represented as a continuously incrementing eight bit value.
- FW may prepare a scalar 704 (e.g., an Xcoder scalar) for processing three frames through a CDMA with a wait-for-done marker between frames.
- the scalar thread ID may be three, so the CDMA may use CDMA thread three.
- the CDMA may send the final interrupt to FW indicating that processing is done.
- each sequence identifier may be incremented for each done command so that other threads may check the sequence identifier to determine the status of the thread.
- sequence ID 714 for scalar 704 may be initially set to one, increment to two, and then increment to three as each frame is completed.
- FW may receive only one interrupt for three frames processed using a CDMA system, reducing the latency compared systems without a CDMA where FW may receive three interrupts, one after each scalar frame is processed.
- the main challenge of cross thread dependency modeling may be the variable processing times of each thread. Some of the threads may finish faster than others, making the synchronization difficult.
- the systems described herein may use a sequence ID.
- the systems described herein may store the sequence ID for each scalar in the corresponding CDMA thread.
- the thread may compare the thread's own wait- sequence-ID against the stored value from the master thread and may proceed as long as the wait-sequence-ID is greater than or equal to the stored sequence ID.
- a CDMA may handle encode (ENC), bit stream (BS), and/or quality metrics (QM) dependent threads.
- ENC encode
- BS bit stream
- QM quality metrics
- Each done signal from an ENC thread may trigger the processing of the frame by the BS and QM.
- ENC 802 may finish processing a frame and update a sequence ID 808. Based on this update, at time 814, BS 804 and/or QM 806 may begin processing that frame. Meanwhile, ENC 802 may begin processing a new frame.
- BS 804 and/or QM 806 may process that frame while ENC 802 moves on to a new frame.
- BS 804 may only start processing a new frame if two conditions are met: BS 804 has finished processing the previous frame and ENC 802 has finished processing the new frame.
- the systems described herein may check the current sequence ID for both BS 804 and ENC 802 to determine whether BS 804 is ready to begin processing a new frame.
- the CDMA when the CDMA is processing BS 804, the CDMA may identify the wait-for-done marker for ENC 802. The CDMA may internally compare the stored value from ENC 802 to check if it is greater than or equal to the wait-for-done marker and may wait until that condition is met before programming BS 804. In some examples, ENC 802 may not have to wait at each done message for the done to be sampled by all dependent threads. In this example, each thread with variable processing times may not impact other threads. [0054] In some embodiments, a CDMA may terminate processing when certain conditions are met. For example, the CDMA may receive a terminate command from FW. FIG. 9 is a flow diagram of an example method for a CDMA to execute a terminate command.
- the systems described herein may read the CDMA queue status. If the queue is empty, at step 912, the systems described herein may send a new command or end processing. If the queue is not empty, at step 906, the systems described herein may set a terminate bit to equal one. If the terminate is not complete, the systems described herein may wait. For example, the systems described herein may wait for one or more hardware threads to complete. In some embodiments, the systems described herein may drain prefetched data and/or empty the queue. If the terminate is complete, the systems described herein may, at step 910, set the terminate bit equal to zero. In some embodiments, the CDMA may send a message to FW confirming completion of the terminate operation. The systems described herein may then proceed to step 912 and send a new command or end processing.
- a CDMA may timeout under certain conditions.
- a CDMA may wait for completion from the corresponding HW thread.
- FW may enable timeout behavior and program a timeout value.
- a CDMA thread may generate a timeout message to send to FW and wait in the same state until receiving a message from FW.
- FW may continue to wait after receiving the timeout message or may issue a terminate command to the CDMA.
- the systems and methods described herein may improve the efficiency of various computing processes, such as video transcoding, by using a special marker to communicate with a CDMA that receives commands from FW and reads and writes to registers.
- a special marker to communicate with a CDMA that receives commands from FW and reads and writes to registers.
- the systems described herein may eliminate redundant iterations of programming that same information into buffers by FW in between different sequences.
- the systems described herein may direct the CDMA via a special marker with different opcodes for different operations, such as debug, terminate, and wait-for-done.
- Using a wait-for-done command with a sequence ID that specifies a thread may enable the systems described herein to facilitate cross-thread dependency by maintaining and transmitting information about the current status of each thread, enabling threads to wait only for relevant other threads to finish processing rather than having to wait for all threads.
- a system for facilitating efficient hardware-firmware interactions may include (i) a group of memory registers, (ii) a hardware module that directly reads from and writes to the memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
- Example 2 The system of example 1, where the non-register-write operations include at least one of a register read operation, a wait-for-done operation, and/or a debug operation.
- Example 3 The system of examples 1-2 may further include an address of a predefined special memory register and an operation code.
- Example 4 The system of examples 1-3, where the firmware module prepares a list of commands stored in memory, the firmware module provides at least one address pointer and size for the list of commands to the hardware module, and the hardware module fetches the list of commands via the at least one address pointer and size.
- Example 5 The system of examples 1-4, where the firmware module provides, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
- Example 6 The system of examples 1-5, where the hardware module stores the at least one address pointer to a memory register within the plurality of memory registers.
- Example 7 The system of examples 1-6, where the firmware module provides the at least one address pointer to the hardware module repeatedly during different points in time.
- Example 8 The system of examples 1-7, where the hardware module receives a command to perform a wait-for-done operation, the hardware module pauses operating until detecting that a hardware thread has completed, and the hardware module resumes operating in response to detecting that the hardware thread has completed.
- Example 9 The system of examples 1-8, where the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
- Example 10 The system of examples 1-9, where the hardware module receives a command to perform a terminate operation and, in response, the hardware module pauses operating until detecting that at least one hardware thread has completed, drains prefetched data, empties a command queue, and confirms a completion of the terminate operation to the firmware module.
- Example 11 The system of examples 1-10, where the hardware module receives a command from the firmware to perform a debug operation and in response, the hardware module writes data to memory that is accessible to the firmware.
- Example 12 The system of examples 1-11, where the hardware module stores a timeout value that, when reached, prompts the hardware module to pause operating and send a timeout message to the firmware module.
- Example 13 The system of examples 1-12, where the hardware module stores, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
- Example 14 A computer-implemented method for facilitating efficient hardware-firmware interactions may include (i) identifying a hardware module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, (ii) sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker, (iii) receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker, and (iv) performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
- Example 15 The computer-implemented method of example 14, where the non-register-write operation includes a register read operation and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
- Example 16 The computer-implemented method of examples 14-15, where (i) the non-register-write operation includes a wait-for-done operation, (ii) the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed, and (iii) the hardware module resumes operating in response to detecting that the hardware thread has completed.
- Example 17 The computer-implemented method of examples 14-16, where the computer-executable instructions cause the physical processor to the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
- Example 18 The computer-implemented method of examples 14-17, where the non-register-write operation includes a debug operation and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
- Example 19 The computer-implemented method of examples 14-18, where the non-register-write operation includes a terminate operation and the hardware module performs the terminate operation by (i) pausing operating until detecting that at least one hardware thread has completed, (ii) draining prefetched data, (iii) emptying a command queue, and (iv) confirming a completion of the terminate operation to the firmware module.
- An apparatus may include (i) a plurality of memory registers, (ii) a hardware module that directly reads from and writes to the plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
- computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein.
- these computing device(s) may each include at least one memory device and at least one physical processor.
- the term "memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer- readable instructions.
- a memory device may store, load, and/or maintain one or more of the modules described herein.
- Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.
- the term "physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions.
- a physical processor may access and/or modify one or more modules stored in the above-described memory device.
- Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
- modules described and/or illustrated herein may represent portions of a single module or application.
- one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks.
- one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein.
- One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.
- one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another.
- one or more of the modules recited herein may receive image data to be transformed, transform the image data into a data structure that stores user characteristic data, output a result of the transformation to select a customized interactive ice breaker widget relevant to the user, use the result of the transformation to present the widget to the user, and store the result of the transformation to create a record of the presented widget.
- one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.
- the term "computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer- readable instructions.
- Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic- storage media (e.g., solid-state drives and flash media), and other distribution systems.
- transmission-type media such as carrier waves
- non-transitory-type media such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic- storage media (e.g., solid-state drives and flash media), and other distribution systems.
- transmission-type media such as carrier waves
- non-transitory-type media such as magnetic-storage media
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)
- Debugging And Monitoring (AREA)
Abstract
Description
Claims
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202280019737.0A CN117043747A (en) | 2021-03-10 | 2022-02-27 | Apparatus, system, and method for facilitating efficient hardware-firmware interactions |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/198,028 US20220291947A1 (en) | 2021-03-10 | 2021-03-10 | Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions |
| US17/198,028 | 2021-03-10 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2022192017A1 true WO2022192017A1 (en) | 2022-09-15 |
Family
ID=81585857
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2022/018060 Ceased WO2022192017A1 (en) | 2021-03-10 | 2022-02-27 | Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20220291947A1 (en) |
| CN (1) | CN117043747A (en) |
| WO (1) | WO2022192017A1 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230236839A1 (en) * | 2022-01-24 | 2023-07-27 | Stmicroelectronics (Grenoble 2) Sas | Device with command list execution and related method |
| US12554560B2 (en) | 2023-05-17 | 2026-02-17 | Bae Systems Information And Electronic Systems Integration Inc. | Firmware event stack routing |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4807113A (en) * | 1982-02-26 | 1989-02-21 | Hitachi, Ltd. | Microprogrammed control data processing apparatus in which operand source and/or operand destination is determined independent of microprogram control |
| US20020099532A1 (en) * | 2000-12-21 | 2002-07-25 | Traut Eric P. | System and method for the logical substitution of processor control in an emulated computing environment |
| US20060248391A1 (en) * | 2005-05-02 | 2006-11-02 | Glover Jeffrey C | State machine-based command line debugger |
| US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11194963A (en) * | 1997-12-26 | 1999-07-21 | Fujitsu Ltd | Command execution monitoring method and command execution monitoring device |
| US7457897B1 (en) * | 2004-03-17 | 2008-11-25 | Suoer Talent Electronics, Inc. | PCI express-compatible controller and interface for flash memory |
| US7103528B2 (en) * | 2002-09-19 | 2006-09-05 | Lsi Logic Corporation | Emulated atomic instruction sequences in a multiprocessor system |
| US7174405B1 (en) * | 2003-06-06 | 2007-02-06 | Cisco Technology, Inc. | Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation |
| KR101051703B1 (en) * | 2004-08-09 | 2011-07-25 | 삼성전자주식회사 | Integrated circuit card and integrated circuit card system with suspend / reset function |
| US8225052B2 (en) * | 2009-06-03 | 2012-07-17 | Micron Technology, Inc. | Methods for controlling host memory access with memory devices and systems |
| US20160062925A1 (en) * | 2014-08-28 | 2016-03-03 | Samsung Electronics Co., Ltd. | Method and system for managing storage device operations by a host device |
| US9928079B2 (en) * | 2014-09-23 | 2018-03-27 | Dialog Semiconductor (Uk) Limited | Conditional processor auto boot with no boot loader when coupled with a nonvolatile memory |
| US10089212B2 (en) * | 2015-07-20 | 2018-10-02 | Toshiba Memory Corporation | Memory system, information processing system, and host device outputting debugging information through a host interface |
| US10198188B2 (en) * | 2017-03-09 | 2019-02-05 | Kabushiki Kaisha Toshiba | Disk drive that efficiently handles random mixed-R/W command-streams |
| US10713357B2 (en) * | 2017-11-23 | 2020-07-14 | Nicira, Inc. | Detecting lateral movement using a hypervisor |
| CN108563325A (en) * | 2018-03-09 | 2018-09-21 | 深圳市亿境虚拟现实技术有限公司 | virtual reality system data transmission method |
| US10649776B2 (en) * | 2018-06-29 | 2020-05-12 | Western Digital Technologies, Inc. | System and method for prediction of multiple read commands directed to non-sequential data |
| US11086389B2 (en) * | 2019-10-29 | 2021-08-10 | Western Digital Technologies, Inc. | Method and system for visualizing sleep mode inner state processing |
| GB2597077B (en) * | 2020-07-14 | 2022-07-27 | Graphcore Ltd | Clearing register data |
-
2021
- 2021-03-10 US US17/198,028 patent/US20220291947A1/en not_active Abandoned
-
2022
- 2022-02-27 WO PCT/US2022/018060 patent/WO2022192017A1/en not_active Ceased
- 2022-02-27 CN CN202280019737.0A patent/CN117043747A/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4807113A (en) * | 1982-02-26 | 1989-02-21 | Hitachi, Ltd. | Microprogrammed control data processing apparatus in which operand source and/or operand destination is determined independent of microprogram control |
| US20020099532A1 (en) * | 2000-12-21 | 2002-07-25 | Traut Eric P. | System and method for the logical substitution of processor control in an emulated computing environment |
| US20060248391A1 (en) * | 2005-05-02 | 2006-11-02 | Glover Jeffrey C | State machine-based command line debugger |
| US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
Non-Patent Citations (2)
| Title |
|---|
| GILBERT D A ET AL: "A result forwarding mechanism for asynchronous pipelined systems", ADVANCED RESEARCH IN ASYNCHRONOUS CIRCUITS AND SYSTEMS, 1997. PROCEEDI NGS., THIRD INTERNATIONAL SYMPOSIUM ON EINDHOVEN, NETHERLANDS 7-10 APRIL 1997, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 7 April 1997 (1997-04-07), pages 2 - 11, XP010223488, ISBN: 978-0-8186-7922-3, DOI: 10.1109/ASYNC.1997.587137 * |
| PINTO S ET AL: "Exploiting Template Metaprogramming to customize an object-oriented operating system", INDUSTRIAL ELECTRONICS (ISIE), 2013 IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, 28 May 2013 (2013-05-28), pages 1 - 6, XP032439400, ISSN: 2163-5137, ISBN: 978-1-4673-5194-2, DOI: 10.1109/ISIE.2013.6563724 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20220291947A1 (en) | 2022-09-15 |
| CN117043747A (en) | 2023-11-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101278265B (en) | Method for collecting and analyzing information and system for optimizing code segment | |
| EP0241946A2 (en) | Information processing system | |
| US8176221B2 (en) | DMA controller | |
| WO2003058432A1 (en) | Controlling compatibility levels of binary translations between instruction set architectures | |
| EP2686772B1 (en) | Diagnosing code using single step execution | |
| US20240045593A1 (en) | Apparatus and method for accessing data, processing apparatus and computer system | |
| WO2018040494A1 (en) | Method and device for extending processor instruction set | |
| US12253950B2 (en) | Processing apparatus, method and system for executing data processing on a plurality of channels | |
| WO2022192017A1 (en) | Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions | |
| US12393450B2 (en) | Processing apparatus and system for executing data processing on a plurality of pieces of channel information | |
| US7197590B2 (en) | Method and apparatus for connecting LPC bus and serial flash memory | |
| KR101862094B1 (en) | Software replayer for transactional memory programs | |
| US9372773B2 (en) | User-level hardware branch records | |
| US6772266B2 (en) | Detecting transfer of universal serial bus (USB) host controller information from operating system drivers to basic input output system (BIOS) | |
| JP2006209448A (en) | Direct memory access control method, direct memory access control device, information processing system, program | |
| KR101735590B1 (en) | Transaction extracting apparatus and method thereof | |
| RU2375768C2 (en) | Processor and method of indirect reading and recording into register | |
| US20240078115A1 (en) | Flush-on-demand processor instruction trace | |
| US20200364052A1 (en) | Branch penalty reduction using memory circuit | |
| CN117950836A (en) | A RISC-V architecture-based interrupt control system and method | |
| CN112416536B (en) | Method for extracting processor execution context and processor | |
| US11880231B2 (en) | Accurate timestamp or derived counter value generation on a complex CPU | |
| US9983932B2 (en) | Pipeline processor and an equal model compensator method and apparatus to store the processing result | |
| US11042325B2 (en) | Speculative bank activate dynamic random access memory (DRAM) scheduler | |
| JP2927751B2 (en) | Information processing apparatus, information processing method, and scheduling apparatus |
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: 22721914 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202280019737.0 Country of ref document: CN |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2022721914 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2022721914 Country of ref document: EP Effective date: 20231010 |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22721914 Country of ref document: EP Kind code of ref document: A1 |