MEMORY READS BASED WITH A LIMITED RESPONSE TIME
Examples described herein relate to an interface to a serial connection and circuitry to: prior to issuance of a read request to a device, issue a command to the device to identify data to be requested to be read and based on an indicator that the identified data is available to be read, send the read request for the identified data via the interface to the device. The command can include an operational code, a starting address, and length.
This application claims the benefit of priority to Patent Cooperation Treaty (PCT) Application No. PCT/CN2023/139317, filed Dec. 16, 2023. The entire content of that application is incorporated by reference in its entirety.
BACKGROUNDComputer systems include central processing units (CPUs) that execute instructions to perform data processing operations. After a computer system is powered on, a CPU loads and executes Basic Input/Output System (BIOS) and configuration information from flash memory. The executed-BIOS manages data flow between the computer's operating system (OS) and devices, such as a memory device or a network interface device.
Some architectures can access an accelerator (e.g., cryptographic security chip that performs data encryption and decryption, application specific integrated circuit (ASIC), Field Programmable Gate Array (FPGA), or other circuitry) via a SPI-consistent interface using flash device emulation. Due to an internal buffer size limit of the accelerator, data may not be stored entirely in the buffer of the accelerator. In a case of where data is stored outside of the buffer, in another memory device, the accelerator can fetch data from the another memory device. Where a read request is to be completed within a limited number of clock cycles (e.g., SPI Flash Read Timing associated with a SPI Wait State or dummy cycles), due to delay of data retrieval, the data may not be read within the limited number of clock cycles.
Various examples can permit utilization of interfaces to access data from a device (e.g., accelerator, processor, memory device, or other circuitry) that retrieves data from another device (e.g., off-chip storage, flash device, or emulated flash device) and provides data to be read within a limited number of clock cycles. Various examples can provide for a read operation in three phases. In Phase 1, a requester device can send a Read Request Command to the target device to identify a memory address and byte size to retrieve, but the Read Request Command can include a hint or indicator that the data is subsequently to be requested to be read, and not in this Read Request Command. In Phase 2, the requester device can poll for a busy status indicator from the target device to determine if the busy status indicator is cleared or timed out to identify a “wait state.” The target device can indicate that the target device has to fetch data from another device (e.g., local memory, remote memory, or other) by indicating a busy status. After the requested data is stored in the memory of the target device, the target device can read the requested data and de-assert the busy status. When busy status is de-asserted, the requester device can determine that data is available to read. In Phase 3, the requester device can issue a Read Request Command to the target device to access the data. Accordingly, by issuing a pre-read request (e.g., Read Request Command with a hint or indicator that the data is subsequently to be requested to be read) to the target device and reading data from the target device when the data is stored in the target device, the requester can avoid violating a limit on data retrievals completing within a specific number of clock cycles.
A system agent can include a shared cache which may include any type of cache (e.g., level 1, level 2, or last level cache (LLC)). A system agent can include or more of: memory controller 106, a shared cache, a cache coherency manager, arithmetic logic units, floating point units, core or processor interconnects, or bus or link controllers. A system agent or uncore can provide one or more of: direct memory access (DMA) engine connection, non-cached coherent master connection, data cache coherency between cores and arbitrate cache requests, or Advanced Microcontroller Bus Architecture (AMBA) capabilities. The system agent or uncore can manage priorities and clock speeds for receive and transmit fabrics and memory controllers.
Processors 202 can access device 220 by communication through interface 210 with memory controller 206. In some examples, memory controller 206 may include circuitry (e.g., SPI controller) to control access to device 220. Interface 210 can provide communications of 1 bit, 2 bit, 4 bit, or other number of bits. Interface 210 can operate in a manner consistent with Serial Peripheral Interface (SPI), enhanced SPI (eSPI), or other type of interface (e.g., System Management Bus (SMBus), I2C, MIPI I3C®, uART, or others). For example, device 220 may include one or more of: a Non-Volatile Memory (NVM) device, flash memory, volatile memory device, cache, processor, accelerator (e.g., cryptographic, encryption, authentication, or others), network interface device, or other circuitry.
In some examples, processor 202 can read data 224 from device 220 by issuing a read request to interface 210. Data 224 can include one or more of: boot firmware, microcode (uCode), a firmware patch, digitally signed modules that contain code to be run before the x86 CPU reset vector, machine learning inference-related data, image data, packet data, packet header, or others. However, when processor 202 issues a request to device 220, but requested data 224 is not stored in memory 222 of device 220, device 220 can retrieve the requested data from device 230 (e.g., a remote disk via communications by a network interface device or virtual file system) via interface 226. Communications over interface 226 can operate in a similar manner as communications over interface 210.
Device 230 can include one or more of: a Non-Volatile Memory (NVM) device, flash memory, volatile memory device, cache, processor, accelerator (e.g., cryptographic operations, encryption, decryption, authentication, or others), network interface device, or other circuitry.
For certain read operations (e.g., read operations consistent with SPI), data 224 from device 220 is to be provided as data out to requester processor 202 within a specific number of clock cycles. However, data may not be available to be read within the specific number of clock cycles, such as where the data is retrieved from device 230 or delays caused by cryptographic operations or other accelerators operations of device 230 (e.g., compute near Flash), in addition or alternative to reading data.
The Byte 6 can be used to indicate a Byte Count Field, which allows the target device to determine the number of bytes to retrieve. Processor 202 may communicate with device 220 as an emulated SPI device and device 220 may retrieve such bytes from a remote backend device (e.g., device 230). The SPI transaction can end (e.g., clock stops and chip select number (CS #) is deselected) after device 220 retrieves the bytes from device 230.
Bit 0 of Status Register 232 can be extended from Erase/Write_In_Progress to Read/Erase/Write_In_Process. When data is not ready, device 220 can assert the Bit 0 to ‘1’. Device 220 can poll a Read Status Register 232 until Bit 0 is read as 0 or the read transaction is timed out. Where device 230 does not support the Wait State, device 230 can respond with Bit 0 as ‘0’, which indicates the data is immediately available.
In
Operation n−1 can occur based on Status Register Bit 0 is read as ‘0’, which indicates the data is available at device 220 and processor 202 can issue a Fast Read command to read the data in a next operation.
Referring to
At (6) and (7), the memory can retrieve data that is identified by the Fast Read Request from a backend memory device (Backend). Retrieval of data may not be a speculative pre-fetch of data because the particular data is identified. At (8), (9), and (10), Status Register Bit 0 can be set to ‘1’ to indicate the memory is busy and data is not available. At (11), the backend memory can provide a Back End Read Response to indicate data has been stored in the interface. At (12), the interface can issue at least one Read Status Instruction to read a value of Status Register Bit 0 until Bit 0 is ‘0’ or a maximum timeout period (e.g., 10 seconds or other duration) has elapsed. At (13), the interface can detect Status Register Bit 0 is a value of 1 by issuing a Read Status Instruction to read a value of Status Register Bit 0, at (14). At (15), the interface can issue a Fast Read Request with address bit 31 set to 0. At (16), the requested data can be provided to the interface to be provided to the Requester, at (17).
At 404, the interface can determine whether the data is stored in memory or the data is to be retrieved from a second memory device. For example, based on the data being stored in a second memory device, the process can proceed to 406. For example, based on the data being stored in memory, the process can proceed to 420.
At 406, the interface can start a timer to complete the read of the data from the second memory device and issue a request for the data identified by the request to read data. The interface can poll for an indication the data is available to be read. At 408, based on the data being available to be read, at 410, the interface can issue a read request that includes the starting address, the byte count, and an indicator that the request is a read request and not a hint. At 420, the interface can provide the requested data to the requester via a connection.
In one example, system 500 includes interface 512 coupled to processor 510, which can represent a higher speed interface or a high throughput interface for system components that needs higher bandwidth connections, such as memory subsystem 520 or graphics interface components 540, or accelerators 542. Interface 512 represents an interface circuit, which can be a standalone component or integrated onto a processor die. Where present, graphics interface 540 interfaces to graphics components for providing a visual display to a user of system 500. In one example, graphics interface 540 generates a display based on data stored in memory 530 or based on operations executed by processor 510 or both. In one example, graphics interface 540 generates a display based on data stored in memory 530 or based on operations executed by processor 510 or both.
Accelerators 542 can be a programmable or fixed function offload engine that can be accessed or used by a processor 510. For example, an accelerator among accelerators 542 can provide data compression (DC) capability, cryptography services such as public key encryption (PKE), cipher, hash/authentication capabilities, authentication, trust verification, decryption, or other capabilities or services. In some cases, accelerators 542 can be integrated into a CPU socket (e.g., a connector to a motherboard or circuit board that includes a CPU and provides an electrical interface with the CPU). For example, accelerators 542 can include a single or multi-core processor, graphics processing unit, logical execution unit single or multi-level cache, functional units usable to independently execute programs or threads, application specific integrated circuits (ASICs), neural network processors (NNPs), programmable control logic, and programmable processing elements such as field programmable gate arrays (FPGAs). Accelerators 542 can provide multiple neural networks, CPUs, processor cores, general purpose graphics processing units, or graphics processing units can be made available for use by artificial intelligence (AI) or machine learning (ML) models. For example, the AI model can use or include any or a combination of: a reinforcement learning scheme, Q-learning scheme, deep-Q learning, or Asynchronous Advantage Actor-Critic (A3C), combinatorial neural network, recurrent combinatorial neural network, or other AI or ML model. Multiple neural networks, processor cores, or graphics processing units can be made available for use by AI or ML models to perform learning and/or inference operations.
Memory subsystem 520 represents the main memory of system 500 and provides storage for code to be executed by processor 510, or data values to be used in executing a routine. Memory subsystem 520 can include one or more memory devices 530 such as read-only memory (ROM), flash memory, one or more varieties of random access memory (RAM) such as DRAM, or other memory devices, or a combination of such devices. Memory 530 stores and hosts, among other things, operating system (OS) 532 to provide a software platform for execution of instructions in system 500. Additionally, applications 534 can execute on the software platform of OS 532 from memory 530. Applications 534 represent programs that have their own operational logic to perform execution of one or more functions. Processes 536 represent agents or routines that provide auxiliary functions to OS 532 or one or more applications 534 or a combination. OS 532, applications 534, and processes 536 provide software logic to provide functions for system 500. In one example, memory subsystem 520 includes memory controller 522, which is a memory controller to generate and issue commands to memory 530. It will be understood that memory controller 522 could be a physical part of processor 510 or a physical part of interface 512. For example, memory controller 522 can be an integrated memory controller, integrated onto a circuit with processor 510. For example, memory controller 522 can be configured to adjust a size of a table indicative of locations of boot firmware and selectively permit access to the table
Applications 534 and/or processes 536 can refer instead or additionally to a virtual machine (VM), container, microservice, processor, or other software. Various examples described herein can perform an application composed of microservices, where a microservice runs in its own process and communicates using protocols (e.g., application program interface (API), a Hypertext Transfer Protocol (HTTP) resource API, message service, remote procedure calls (RPC), or Google RPC (gRPC)). Microservices can communicate with one another using a service mesh and be executed in one or more data centers or edge networks. Microservices can be independently deployed using centralized management of these services. The management system may be written in different programming languages and use different data storage technologies. A microservice can be characterized by one or more of: polyglot programming (e.g., code written in multiple languages to capture additional functionality and efficiency not available in a single language), or lightweight container or virtual machine deployment, and decentralized continuous microservice delivery.
In some examples, OS 532 can be Linux®, FreeBSD, Windows® Server or personal computer, FreeBSD®, Android®, MacOS®, iOS®, VMware vSphere, openSUSE, RHEL, CentOS, Debian, Ubuntu, or any other operating system. The OS and driver can execute on a processor sold or designed by Intel®, ARM®, AMD®, Qualcomm®, IBM®, Nvidia®, Broadcom®, Texas Instruments®, among others.
While not specifically illustrated, it will be understood that system 500 can include one or more buses or bus systems between devices, such as a memory bus, a graphics bus, interface buses, or others. Buses or other signal lines can communicatively or electrically couple components together, or both communicatively and electrically couple the components. Buses can include physical communication lines, point-to-point connections, bridges, adapters, controllers, or other circuitry or a combination. Buses can include, for example, one or more of a system bus, a Peripheral Component Interconnect (PCI) bus, a Hyper Transport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus (Firewire).
In one example, system 500 includes interface 514, which can be coupled to interface 512. In one example, interface 514 represents an interface circuit, which can include standalone components and integrated circuitry. In one example, multiple user interface components or peripheral components, or both, couple to interface 514. Network interface 550 provides system 500 the ability to communicate with remote devices (e.g., servers or other computing devices) over one or more networks. Network interface 550 can include an Ethernet adapter, wireless interconnection components, cellular network interconnection components, USB (universal serial bus), or other wired or wireless standards-based or proprietary interfaces. Network interface 550 can transmit data to a device that is in the same data center or rack or a remote device, which can include sending data stored in memory. Network interface 550 can receive data from a remote device, which can include storing received data into memory. In some examples, packet processing device or network interface device 550 can refer to one or more of: a network interface controller (NIC), a remote direct memory access (RDMA)-enabled NIC, SmartNIC, router, switch, forwarding element, infrastructure processing unit (IPU), or data processing unit (DPU). An example IPU or DPU is described herein.
In one example, system 500 includes one or more input/output (I/O) interface(s) 560. I/O interface 560 can include one or more interface components through which a user interacts with system 500. Peripheral interface 570 can include any hardware interface not specifically mentioned above. Peripherals refer generally to devices that connect dependently to system 500.
In one example, system 500 includes storage subsystem 580 to store data in a nonvolatile manner. In one example, in certain system implementations, at least certain components of storage 580 can overlap with components of memory subsystem 520. Storage subsystem 580 includes storage device(s) 584, which can be or include any conventional medium for storing large amounts of data in a nonvolatile manner, such as one or more magnetic, solid state, or optical based disks, or a combination. Storage 584 holds code or instructions and data 586 in a persistent state (e.g., the value is retained despite interruption of power to system 500). Storage 584 can be generically considered to be a “memory,” although memory 530 is typically the executing or operating memory to provide instructions to processor 510. Whereas storage 584 is nonvolatile, memory 530 can include volatile memory (e.g., the value or state of the data is indeterminate if power is interrupted to system 500). In one example, storage subsystem 580 includes controller 582 to interface with storage 584. In one example controller 582 is a physical part of interface 514 or processor 510 or can include circuits or logic in both processor 510 and interface 514.
A volatile memory can include memory whose state (and therefore the data stored in it) is indeterminate if power is interrupted to the device. A non-volatile memory (NVM) device can include a memory whose state is determinate even if power is interrupted to the device.
In some examples, system 500 can be implemented using interconnected compute platforms of processors, memories, storages, network interfaces, and other components. High speed interconnects can be used such as: Ethernet (IEEE 802.3), remote direct memory access (RDMA), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omni-Path, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Infinity Fabric (IF), Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, and variations thereof. Data can be copied or stored to virtualized storage nodes or accessed using a protocol such as NVMe over Fabrics (NVMe-oF) or NVMe (e.g., a non-volatile memory express (NVMe) device can operate in a manner consistent with the Non-Volatile Memory Express (NVMe) Specification, revision 1.3c, published on May 24, 2018 (“NVMe specification”) or derivatives or variations thereof).
Communications between devices can take place using a network that provides die-to-die communications; chip-to-chip communications; circuit board-to-circuit board communications; and/or package-to-package communications.
In an example, system 500 can be implemented using interconnected compute platforms of processors, memories, storages, network interfaces, and other components. High speed interconnects can be used such as PCIe, Ethernet, or optical interconnects (or a combination thereof).
Examples herein may be implemented in various types of computing and networking equipment, such as switches, routers, racks, and blade servers such as those employed in a data center and/or server farm environment. The servers used in data centers and server farms comprise arrayed server configurations such as rack-based servers or blade servers. These servers are interconnected in communication via various network provisions, such as partitioning sets of servers into Local Area Networks (LANs) with appropriate switching and routing facilities between the LANs to form a private Intranet. For example, cloud hosting facilities may typically employ large data centers with a multitude of servers. A blade comprises a separate computing platform that is configured to perform server-type functions, that is, a “server on a card.” Accordingly, a blade includes components common to conventional servers, including a main printed circuit board (main board) providing internal wiring (e.g., buses) for coupling appropriate integrated circuits (ICs) and other components mounted to the board.
Various examples may be implemented using hardware elements, software elements, or a combination of both. In some examples, hardware elements may include devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, ASICs, PLDs, DSPs, FPGAs, memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. In some examples, software elements may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, APIs, instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an example is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given implementation. A processor can be one or more combination of a hardware state machine, digital control logic, central processing unit, or any hardware, firmware and/or software elements.
Some examples may be implemented using or as an article of manufacture or at least one computer-readable medium. A computer-readable medium may include a non-transitory storage medium to store logic. In some examples, the non-transitory storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. In some examples, the logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, API, instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof.
According to some examples, a computer-readable medium may include a non-transitory storage medium to store or maintain instructions that when executed by a machine, computing device or system, cause the machine, computing device or system to perform methods and/or operations in accordance with the described examples. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The instructions may be implemented according to a predefined computer language, manner or syntax, for instructing a machine, computing device or system to perform a certain function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
One or more aspects of at least one example may be implemented by representative instructions stored on at least one machine-readable medium which represents various logic within the processor, which when read by a machine, computing device or system causes the machine, computing device or system to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
The appearances of the phrase “one example” or “an example” are not necessarily all referring to the same example or embodiment. Any aspect described herein can be combined with any other aspect or similar aspect described herein, regardless of whether the aspects are described with respect to the same figure or element. Division, omission, or inclusion of block functions depicted in the accompanying figures does not infer that the hardware components, circuits, software and/or elements for implementing these functions would necessarily be divided, omitted, or included in embodiments.
Some examples may be described using the expression “coupled” and “connected” along with their derivatives. For example, descriptions using the terms “connected” and/or “coupled” may indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact, but yet still co-operate or interact.
The terms “first,” “second,” and the like, herein do not denote any order, quantity, or importance, but rather are used to distinguish one element from another. The terms “a” and “an” herein do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced items. The term “asserted” used herein with reference to a signal denote a state of the signal, in which the signal is active, and which can be achieved by applying any logic level either logic 0 or logic 1 to the signal. The terms “follow” or “after” can refer to immediately following or following after some other event or events. Other sequences of operations may also be performed according to alternative embodiments. Furthermore, additional operations may be added or removed depending on the particular applications. Any combination of changes can be used and one of ordinary skill in the art with the benefit of this disclosure would understand the many variations, modifications, and alternative embodiments thereof.
Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood within the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to be present. Additionally, conjunctive language such as the phrase “at least one of X, Y, and Z,” unless specifically stated otherwise, should also be understood to mean X, Y, Z, or any combination thereof, including “X, Y, and/or Z.”
Illustrative examples of the devices, systems, and methods disclosed herein are provided below. An embodiment of the devices, systems, and methods may include any one or more, and any combination of, the examples described below.
An example includes circuitry connected to a processor, wherein the circuitry is to: adjust an address decode value via fuses and straps to set a decode window to an particular size. A firmware can program decoders and the boot logic to cover a programmed range.
Example 1 includes one or more examples and includes an apparatus that includes an interface to a serial connection and circuitry to: prior to issuance of a read request to a device, issue a command to the device to identify data to be requested to be read and based on an indicator that the identified data is available to be read, send the read request for the identified data via the interface to the device.
Example 2 includes one or more examples, wherein the command comprises an operational code, a starting address, and length.
Example 3 includes one or more examples, wherein the command comprises a first operational code, a starting address, and length, the read request comprises a second operational code, the starting address, and the length, and the first operational code is different than the second operational code.
Example 4 includes one or more examples, wherein the interface is to operate in a manner consistent with one or more of: Serial Peripheral Interface (SPI), Enhanced Serial Peripheral Interface (eSPI), or SMBus.
Example 5 includes one or more examples, wherein: based on receipt of a data read request from a requester, by the device, and the data not being stored in the device: the device is to request to read the identified data from a second device.
Example 6 includes one or more examples, wherein a time for the device to provide the data to the requester exceeds a dummy cycle time period limit.
Example 7 includes one or more examples, wherein the indicator that the identified data is available to be read comprises a value in a register.
Example 8 includes one or more examples, wherein the device is to enter a wait state to retrieve the data from a second device and the indicator that the identified data is available to be read comprises a de-assertion of the wait state.
Example 9 includes one or more examples, wherein the device comprises one or more of: an accelerator to perform cryptographic operations, a memory device, an accelerator to perform authentication, or an accelerator to perform trust verification.
Example 10 includes one or more examples, and includes a method that includes: based on receipt of a data read request in a device and the data not being stored in the device: issuing a command to a second device, via an interface, to identify data to be requested to be read and based on an indicator that the identified data is available to be read, sending the read request for the identified data via the interface to the device.
Example 11 includes one or more examples, wherein the command comprises an operational code, a starting address, and length.
Example 12 includes one or more examples, wherein the command comprises a first operational code, a starting address, and length, the read request comprises a second operational code, the starting address, and the length, and the first operational code is different than the second operational code.
Example 13 includes one or more examples, wherein the interface is to operate in a manner consistent with one or more of: Serial Peripheral Interface (SPI), Enhanced Serial Peripheral Interface (eSPI), or SMBus.
Example 14 includes one or more examples, wherein: based on receipt of a data read request from a requester, by the device, and the data not being stored in the device: the device is to request to read the identified data from a second device.
Example 15 includes one or more examples, wherein the indicator that the identified data is available to be read comprises a value in a register.
Example 16 includes one or more examples, and includes the device entering a wait state to retrieve the data from a second device and the device de-asserting the wait state based on the data is available to be read.
Example 17 includes one or more examples, and includes at least one non-transitory computer-readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to: issue a request to read data from a device based on Serial Peripheral Interface (SPI) and receive the data, wherein receipt of the data occurs after exceeds an SPI dummy cycle time period limit.
Example 18 includes one or more examples, wherein based on receipt of the data read request, by the device, and the data not being stored in the device, the device is to request to read the data from a second device.
Example 19 includes one or more examples, wherein the device enters a wait state while retrieving the data from a second device and the device exits the wait state based on the data being stored in the device.
Example 20 includes one or more examples, wherein the device comprises one or more of: an accelerator or a flash memory device.
Claims
1. An apparatus comprising:
- an interface to a serial connection; and
- circuitry to:
- prior to issuance of a read request to a device, issue a command to the device to identify data to be requested to be read and
- based on an indicator that the identified data is available to be read, send the read request for the identified data via the interface to the device.
2. The apparatus of claim 1, wherein the command comprises an operational code, a starting address, and length.
3. The apparatus of claim 1, wherein
- the command comprises a first operational code, a starting address, and length,
- the read request comprises a second operational code, the starting address, and the length, and
- the first operational code is different than the second operational code.
4. The apparatus of claim 1, wherein the interface is to operate in a manner consistent with one or more of: Serial Peripheral Interface (SPI), Enhanced Serial Peripheral Interface (eSPI), or SMBus.
5. The apparatus of claim 1, wherein:
- based on receipt of a data read request from a requester, by the device, and the data not being stored in the device:
- the device is to request to read the identified data from a second device.
6. The apparatus of claim 5, wherein a time for the device to provide the data to the requester exceeds a dummy cycle time period limit.
7. The apparatus of claim 1, wherein the indicator that the identified data is available to be read comprises a value in a register.
8. The apparatus of claim 1, wherein the device is to enter a wait state to retrieve the data from a second device and the indicator that the identified data is available to be read comprises a de-assertion of the wait state.
9. The apparatus of claim 1, wherein the device comprises one or more of: an accelerator to perform cryptographic operations, a memory device, an accelerator to perform authentication, or an accelerator to perform trust verification.
10. A method comprising:
- based on receipt of a data read request in a device and the data not being stored in the device: issuing a command to a second device, via an interface, to identify data to be requested to be read and based on an indicator that the identified data is available to be read, sending the read request for the identified data via the interface to the device.
11. The method of claim 10, wherein the command comprises an operational code, a starting address, and length.
12. The method of claim 10, wherein
- the command comprises a first operational code, a starting address, and length,
- the read request comprises a second operational code, the starting address, and the length, and
- the first operational code is different than the second operational code.
13. The method of claim 10, wherein the interface is to operate in a manner consistent with one or more of: Serial Peripheral Interface (SPI), Enhanced Serial Peripheral Interface (eSPI), or SMBus.
14. The method of claim 10, wherein:
- based on receipt of a data read request from a requester, by the device, and the data not being stored in the device:
- the device is to request to read the identified data from a second device.
15. The method of claim 10, wherein the indicator that the identified data is available to be read comprises a value in a register.
16. The method of claim 10, comprising:
- the device entering a wait state to retrieve the data from a second device and
- the device de-asserting the wait state based on the data is available to be read.
17. At least one non-transitory computer-readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:
- issue a request to read data from a device based on Serial Peripheral Interface (SPI) and
- receive the data, wherein receipt of the data occurs after exceeds an SPI dummy cycle time period limit.
18. The at least one non-transitory computer-readable medium of claim 17, wherein
- based on receipt of the data read request, by the device, and the data not being stored in the device, the device is to request to read the data from a second device.
19. The at least one non-transitory computer-readable medium of claim 17, wherein
- the device enters a wait state while retrieving the data from a second device and
- the device exits the wait state based on the data being stored in the device.
20. The at least one non-transitory computer-readable medium of claim 17, wherein the device comprises one or more of: an accelerator or a flash memory device.
Type: Application
Filed: Apr 30, 2024
Publication Date: Aug 22, 2024
Inventors: Yi ZENG (Shanghai), Kaushik BALASUBRAMANIAN (Beaverton, OR), Eti BAYEVSKY (Givat Ze’ev), Yuli BARCOHEN (Nokdim), Lukasz GOLAWSKI (Gdynia), Yaniv NISSIM (Jerusalem)
Application Number: 18/650,966