read optional command and write optional command

CN116324745BActive Publication Date: 2026-10-09QUALCOMM INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202180067470.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-10-12
Filing Date
2021-09-02
Publication Date
2026-10-09
Estimated Expiration
2041-09-02

AI Technical Summary

Technical Problem

与保留在SoC上的存储器访问事务相比,从SoC传输出去的存储器访问事务产生更大的资源成本(例如,时间和带宽)

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116324745B_ABST
    Figure CN116324745B_ABST
Patent Text Reader

Abstract

Various embodiments include methods and apparatuses for managing optional commands. Some embodiments can include receiving an optional command from an optional command requesting apparatus, determining whether the optional command can be implemented, and transmitting an optional command no data response to the optional command requesting apparatus in response to determining that the optional command cannot be implemented.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related applications

[0002] This application claims priority to U.S. Patent Application No. 17 / 068,293, filed October 12, 2020, entitled “Read Optional And Write Optional Commands,” the entire contents of which are incorporated herein by reference. Background Technology

[0003] All memory access transactions (e.g., read or write transactions) in a System-on-a-Chip (SoC) have main memory (e.g., random access memory (RAM)) as a terminating agent. If data resides in memory (e.g., a cache) on the path between the issuing device (e.g., the processor) and the terminating agent, some memory access transactions may return results before reaching main memory. A memory access transaction may reach the terminating agent when it fails at a device on the path between the issuing device and the terminating agent. Memory access transactions that fail to complete before reaching the terminating agent can be transferred out of the SoC to reach the terminating agent. Memory access transactions transferred out of the SoC incur greater resource costs (e.g., time and bandwidth) compared to memory access transactions that remain on the SoC. Summary of the Invention

[0004] Various disclosed aspects may include apparatus and methods for managing optional commands. These aspects may include receiving an optional command from an optional command requesting device, determining whether the optional command can be implemented, and transmitting an optional command no-data response to the optional command requesting device in response to determining that the optional command cannot be implemented.

[0005] Some aspects may also include generating an optional command no-data response in response to determining that an optional command cannot be implemented.

[0006] Some aspects may also include determining whether a component of the computing device receiving the optional command is an optional command terminal device, and generating an optional command no-data response in response to determining that the device receiving the optional command is an optional command terminal device.

[0007] Some aspects may also include an optional command terminal device ID field for interpreting optional commands, wherein determining whether the device receiving the optional command is an optional command terminal device is based on interpreting the optional command terminal device ID field.

[0008] Some aspects may also include determining whether the optional command no-data response condition is met, and generating an optional command no-data response in response to determining that the optional command no-data response condition is met.

[0009] Some aspects may also include interpreting the optional command no data response condition field, wherein determining whether the optional command no data response condition is met is based on interpreting the optional command no data response condition field.

[0010] In some aspects, transmitting an optional command no-data response may include transmitting the optional command no-data response by the optional command terminal device. In other aspects, it may also include receiving an optional command no-data response from the optional command terminal device, and re-issuing the optional command in response to receiving the optional command no-data response.

[0011] In some aspects, transmitting an optional command no-data response may include transmitting the optional command no-data response by the optional command terminal device. In other aspects, it may also include receiving an optional command no-data response from the optional command terminal device, and abandoning the optional command in response to receiving the optional command no-data response.

[0012] In some aspects, optional commands may include an optional command terminal device ID field configured to indicate at least one optional command terminal device that is allowed to respond to an optional command using an optional command no-data response.

[0013] In some aspects, optional commands may include an optional command no data response condition field, which is configured to indicate at least one condition for responding to an optional command by utilizing an optional command no data response.

[0014] In some aspects, the optional command no data response may include an optional command no data response terminal device ID field, which is configured to indicate the optional command terminal device that transmitted the optional command no data response.

[0015] In some aspects, an optional command no data response may include an optional command no data response condition field, which is configured to indicate that an optional command no data response condition for transmitting the optional command no data response is met.

[0016] Some aspects may also include terminating an optional command in response to determining that the optional command cannot be fulfilled, wherein terminating an optional command may include preventing the optional command from being forwarded to devices along the optional command transaction path.

[0017] In some respects, terminating an optional command may include converting the optional command into a regular command and forwarding that regular command to the device along the optional command transaction path.

[0018] In some respects, determining whether an optional command can be implemented may include determining whether an optional command can be implemented based on at least one of the following: the requested data is lost, the requested data exceeds the boundary of the buffer, the cost of implementing the optional command exceeds a cost threshold, the implementation of the optional command results in an exception, error or failure, or access to the requested location or target data is denied.

[0019] Some aspects may include the generation of optional commands by the optional command request device and the transmission of optional commands along the optional command transaction path.

[0020] Other aspects include a computing device having an optional command terminal device and an optional command request device configured to perform any of the methods described above. Other aspects include a computing device having components for performing any of the methods described above. Other aspects include a non-transitory processor-readable medium having processor-executable instructions stored thereon, the processor-executable instructions being configured to cause the processor and other components of the computing device to perform any of the methods described above. Attached Figure Description

[0021] The accompanying drawings, which are incorporated herein and form part of this specification, illustrate exemplary embodiments of various embodiments and, together with the general description given above and the detailed description given below, serve to interpret the features of the claims.

[0022] Figure 1 This is a component block diagram illustrating an example computing device suitable for implementing various embodiments.

[0023] Figure 2 This is a component block diagram illustrating an example system-on-chip (SoC) suitable for implementing various embodiments.

[0024] Figure 3 This is a component block diagram illustrating an example processing device suitable for implementing various embodiments.

[0025] Figure 4 These are component block diagrams and signaling diagrams illustrating examples of read optional commands and transactions suitable for implementing various embodiments.

[0026] Figure 5 These are component block diagrams and signaling diagrams illustrating examples of write optional commands and transactions suitable for implementing various embodiments.

[0027] Figure 6 These are component block diagrams and signaling diagrams illustrating examples of read optional commands for avoiding livelock suitable for implementing various embodiments.

[0028] Figure 7 These are component block diagrams and signaling diagrams illustrating examples of read optional commands suitable for implementing various embodiments.

[0029] Figure 8 These are component block diagrams and signaling diagrams illustrating examples of optional read commands for data simplification suitable for implementing various embodiments.

[0030] Figure 9 This is a flowchart illustrating a method for reading and / or writing optional commands according to one embodiment.

[0031] Figure 10 This is a process flowchart illustrating a method for managing unsuccessful read optional commands and / or write optional commands according to one embodiment.

[0032] Figure 11A and Figure 11B This is a process flowchart illustrating a method for managing read optional no-data responses and / or write optional no-data responses according to one embodiment.

[0033] Figure 12 This is a component block diagram illustrating an example mobile computing device suitable for implementing a read optional command enable system and / or a write optional command enable system according to various embodiments.

[0034] Figure 13 This is a component block diagram illustrating an example mobile computing device suitable for implementing a read optional command enable system and / or a write optional command enable system according to various embodiments.

[0035] Figure 14 This is a component block diagram illustrating an example server suitable for implementing a read-optional command-enabled system and / or a write-optional command-enabled system according to various embodiments. Detailed Implementation

[0036] Various embodiments will be described in detail with reference to the accompanying drawings. Where possible, the same reference numerals are used throughout the drawings to denote the same or similar parts. References to specific examples and implementations are for illustrative purposes and are not intended to limit the scope of the claims.

[0037] Various embodiments include methods for providing read optional commands and / or write optional commands, and computing devices implementing such methods. Some embodiments may include read optional commands and / or write optional commands implemented by modifying existing read and / or write commands in a bus protocol, new commands in a bus protocol, or new commands in an instruction set architecture (ISA).

[0038] In some embodiments, read optional commands and / or write optional commands can be configured to instruct devices along the read optional transaction path and / or write optional transaction path (located between the read optional command requesting device and / or write optional command requesting device and main memory (e.g., random access memory (RAM)) to utilize a no-data response signal in response to an unsuccessful read optional command and / or write optional command. In some embodiments, read optional commands and / or write optional commands can be configured to instruct devices along the read optional transaction path and / or write optional transaction path which devices can utilize a no-data response signal in response to an unsuccessful read optional command and / or write optional command. In some embodiments, read optional commands and / or write optional commands can be configured to instruct devices along the read optional transaction path and / or write optional path on conditions under which a device can utilize a no-data response signal in response to an unsuccessful read optional command and / or write optional command.

[0039] In some embodiments, a no-data response signal may indicate to the read optional command requesting device and / or the write optional command requesting device that the read optional command and / or write optional command failed. In some embodiments, a no-data response signal may indicate to the read optional command requesting device and / or the write optional command requesting device at which device along the read optional transaction path and / or the write optional command failed. In some embodiments, a no-data response signal may indicate to the read optional command requesting device and / or the write optional command requesting device the conditions under which the read optional command and / or the write optional command failed.

[0040] In some embodiments, the read optional command request device and / or write optional command request device can be configured to retry the read optional command and / or write optional command in response to receiving a no-data response signal. In some embodiments, the read optional command request device and / or write optional command request device can be configured to abandon the read optional command and / or write optional command in response to receiving a no-data response signal.

[0041] The term "optional command" is used herein to refer to the read optional command and / or write optional command described herein. The term "optional command requesting device" is used herein to refer to a component of a computing device configured to issue an optional command. The term "optional command terminal device" is used herein to refer to a component of a computing device configured to issue an optional command no-data response in response to not implementing a received optional command, such as a requesting device terminal device and / or a write optional terminal device. The term "optional command no-data response" is used herein to refer to a read optional no-data response and / or a write optional no-data response issued by an optional command terminal device in response to not implementing an optional command. The term "optional command transaction path" is used herein to refer to the read optional command communication path and / or write optional command communication path between the optional command requesting device and main memory.

[0042] In some embodiments, an optional command can be configured to indicate to a component of the computing device that it is an optional command. A component of the computing device can be configured as an optional command terminal device and can issue an optional command no-data response in response to not implementing the received optional command.

[0043] In some embodiments, an optional command can be configured to indicate to a component of the computing device which component of the computing device may be an optional command terminal device. In some embodiments, an optional command may include an optional command terminal device identifier (ID) field configured to indicate at least one optional command terminal device that is allowed to respond to the optional command with an optional command no-data response. The term "optional command terminal device ID field" is used herein to refer to reading and / or writing the optional command terminal device ID field. In some embodiments, the optional command terminal device ID field may include an optional command terminal device ID configured to indicate a component of the computing device that may be an optional command terminal device. The term "optional command terminal device ID" is used herein to refer to reading and / or writing the optional command terminal device ID.

[0044] In some embodiments, an optional command may be configured to indicate to a component of a computing device the reason why the optional command terminal device does not implement the optional command, and return an optional command no data response. In some embodiments, the optional command may include an optional command no data response condition field configured to indicate at least one condition for responding to the optional command using the optional command no data response. The term "optional command no data response condition field" is used herein to refer to reading the optional command no data response condition field and / or writing the optional command no data response condition field. In some embodiments, the optional command no data response condition field may include an optional command no data response condition configured to indicate a reason or condition for responding to the optional command using the optional command no data response. The term "optional command no data response condition" is used herein to refer to reading the optional command no data response condition and / or writing the optional command no data response condition.

[0045] An optional command no-data response can be an architecture response specifically designed to respond to optional commands. The term "optional command no-data response" is used herein to refer to both reading and / or writing optional no-data responses. An optional command no-data response can be issued by any or a specific optional command terminal device along the optional command transaction path. An optional command no-data response can be distinct from and complement an error or fault signaling, where the optional command terminal device can forward and / or hold the optional command until it can be implemented. An optional command no-data response can be configured to indicate to the optional command device that the optional command is not implemented. An optional command no-data response can be an acceptable state for the optional command requesting device, such as an "OK" state, rather than an error or fault state triggered by an error or fault signal indicating a failed memory access request. Not implementing an optional command can be an acceptable state because, for example, even if implementing the optional command is critical, its implementation may be unnecessary. Thus, not implementing an optional command may not be an error or fault state triggered by an error or fault signal that can be configured to indicate the non-implementation, incomplete implementation, inappropriate implementation, etc., of the required memory access. The optional command request device can be configured to retry and / or abandon the optional command in response. In some embodiments, the optional command request device may be pre-configured to respond to an optional command no data response. In some embodiments, the optional command request device may determine how to respond to an optional command no data response. An optional command no data response may include an optional command no data response field configured to indicate the type of response to the optional command. The term "optional command no data response field" is used herein to refer to reading and / or writing to the optional command no data response field.

[0046] In some embodiments, an optional command no data response may include an optional command no data response terminal device ID field, which is configured to indicate which optional command terminal device responds to the optional command with an optional command no data response. The term "optional command no data response terminal device ID field" is used herein to refer to reading and / or writing the optional command no data response terminal device ID field. In some embodiments, an optional command no data response may include an optional command no data response condition field, which is configured to indicate a condition under which an optional command terminal device responds to the optional command with an optional command no data response. The term "optional command no data response condition field" is used herein to refer to reading and / or writing the optional command no data response condition field.

[0047] The terms “computing device” and “mobile computing device” are used interchangeably herein to refer to cellular phones, smartphones, personal or mobile multimedia players, personal data assistants (PDAs), laptops, tablets, convertible laptops / tablets (2-in-1 computers), smartbooks, ultrabooks, netbooks, handheld computers, wireless email receivers, cellular phones with multimedia internet access, mobile game consoles, wireless game controllers, and similar personal electronic devices including memory and programmable processors. The term “computing device” may further refer to fixed computing devices, including personal computers, desktop computers, all-in-one computers, workstations, supercomputers, mainframe computers, embedded computers (such as in vehicles and other larger systems), servers, multimedia computers, and game consoles.

[0048] Figure 1 A system including computing device 100 suitable for use with various embodiments is illustrated. Computing device 100 may include a SoC 102 having a central processing unit 104, memory 106, a communication interface 108, a memory interface 110, a peripheral device interface 120, and a processing device 124. Computing device 100 may also include communication components 112, such as a wired or wireless modem, memory 114, an antenna 116 for establishing a wireless communication link, and / or peripheral devices 122. Processor 124 may include any of a variety of processing devices, such as multiple processor cores.

[0049] The term "System-on-a-Chip" or "SoC" is used herein to refer to a set of interconnected electronic circuits, typically including, but not limited to, processing devices, memory, and communication interfaces. Processing devices may include various types of processors 124 and / or processor cores, such as general-purpose processors, central processing units (CPUs) 104, digital signal processors (DSPs), graphics processing units (GPUs), accelerated processing units (APUs), security processing units (SPUs), intellectual property units (IPUs), subsystem processors for specific components of a computing device (such as image processors for camera subsystems or display processors for displays), auxiliary processors, peripheral processors, single-core processors, multi-core processors, controllers, and / or microcontrollers. Processing devices may further embody other hardware and hardware combinations, such as field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), other programmable logic devices, discrete gate logic, transistor logic, performance monitoring hardware, watchdog hardware, and / or time bases. Integrated circuits may be configured such that components of the integrated circuit reside on a monolithic semiconductor material (such as silicon).

[0050] SoC 102 may include one or more CPUs 104 and processors 124. Computing device 100 may include more than one SoC 102, thereby increasing the number of CPUs 104, processors 124, and processor cores. Computing device 100 may also include CPUs 104 and processors 124 not associated with SoC 102. Individual CPUs 104 and processors 124 may be multi-core processors. Each CPU 104 and processor 124 may be configured for the same or different specific purpose as the other CPUs 104 and CPU 124 of computing device 100. One or more of the same or different configured CPUs 104, processors 124, and processor cores may be grouped together. A group of CPUs 104, processors 124, or processor cores may be referred to as a multiprocessor cluster.

[0051] The memory 106 of SoC 102 may be volatile or non-volatile memory, configured to store data and processor-executable code for access by CPU 104, processor 124, or other components of SoC 102. Computing device 100 and / or SoC 102 may include one or more memories 106 configured for various purposes. One or more memories 106 may include volatile memory (such as random access memory (RAM) or main memory) or cache memory. These memories 106 may be configured to temporarily store a limited amount of data received from data sensors or subsystems, data and / or processor-executable code instructions requested from non-volatile memory and loaded into memory 106 when future access is anticipated based on various factors, and / or intermediate processing data and / or processor-executable code instructions generated by CPU 104 and / or processor 124 and temporarily stored for future fast access without being stored in non-volatile memory. In some embodiments, any number and combination of memories 106 may include one-time programmable or read-only memory.

[0052] Memory 106 may be configured to at least temporarily store data and processor executable code loaded into memory 106 from another memory device (such as another memory 106 or memory 114) for access by one or more other components of CPU 104, processor 124, or SoC 102. The data or processor executable code loaded into memory 106 may be loaded in response to the execution of a function by other components of CPU 104, processor 124, or SoC 102. Loading data or processor executable code into memory 106 in response to the execution of a function may be the result of a memory access request to memory 106 being unsuccessful or "missing" because the requested data or processor executable code is not located in memory 106. In response to a miss, a memory access request to another memory 106 or memory 114 may be made to load the requested data or processor executable code from the other memory 106 or memory 114 into memory 106. Loading data or processor executable code into memory 106 in response to the execution of a function may be the result of a memory access request to another memory 106 or memory 114, and the data or processor executable code may be loaded into memory 106 for later access.

[0053] Memory interface 110 and memory 114 can work together to allow computing device 100 to store and retrieve data and processor executable code on volatile and / or non-volatile storage media. Memory 114 can be configured very similarly to embodiments of memory 106, wherein memory 114 can store data or processor executable code for access by one or more of the CPU 104, processor 124, or other components of SoC 102.

[0054] In some embodiments, memory 114 may be non-volatile and thus retain information after the computing device 100 is powered off. When the power is turned back on and the computing device 100 restarts, the information stored in memory 114 may be available to the computing device 100.

[0055] In some embodiments, memory 114 may be volatile and therefore will not retain information after the computing device 100 is powered off. Memory interface 110 may control access to memory 114 and allow CPU 104, processor 124, or other components of SoC 102 to read data from and write data to memory 114.

[0056] Some or all of the components of computing device 100 and / or SoC 102 may be arranged and / or combined differently while still providing the functionality of various embodiments. Computing device 100 may not be limited to one of each component, and multiple instances of each component may be included in various configurations of computing device 100.

[0057] Figure 2 The SoC 230 is shown (e.g., Figure 1 SoC 102 in the example can be a computing device with multiple peripheral device components suitable for implementing the embodiments (e.g., Figure 1 Components of the computing device 100. (See reference) Figure 1 and Figure 2 The SoC 230 may include the various components described above. Some of these components and additional components may be subsystems of the computing device 100.

[0058] SoC 230 may include various communication components (e.g., Figure 1 The communication component (including communication interface 108, memory interface 110, and peripheral device interface 120) is configured to communicatively connect to components of the SoC 230 capable of transmitting, receiving, and sharing data. The communication component may include a system hub 200, a protocol converter 208, and a system-on-chip network (NoC) 224.

[0059] Communication components can facilitate communication between subsystem components. In some embodiments, subsystem components may include processors in CPU cluster 206 (e.g., Figure 1 CPU 104, (multiple) processors 124). In some embodiments, a subsystem component may include a CPU 104, (multiple) processors 124. Figure 1 The CPU 104 and (multiple) processors 124 in the CPU (e.g., various peripheral device subsystems) Figure 1 The communication components 112 and peripheral devices 122 include, for example, a camera subsystem 218, a video subsystem 220, a display subsystem 222, an audio subsystem 232, and a wireless communication subsystem 234. In some embodiments, the subsystem components may include other dedicated processors (e.g., Figure 1 The processors 124 in the system include, for example, a graphics processing unit (GPU) 210, a modem digital signal processor (DSP) 212, an application processing unit (APU) 214, and other hardware accelerators.

[0060] The communication components can facilitate communication between peripheral device subsystems 218, 220, 222, 232, 234 and processors 206, 210, 212, 214 and devices such as memory devices (e.g., Figure 1 Communication between other components such as memory 106, 114, including system cache 202, random access memory (RAM) 228, and various memories, such as cache memory, included in processors 206, 210, 212, 214 and peripheral device subsystems 218, 220, 222, 232, 234.

[0061] Various memory control devices (e.g., Figure 1 The memory interface 110 (such as system cache controller 204, memory interface 216, and memory controller 226) can be configured to control the peripheral device subsystems 218, 220, 222, 232, 234 and processors 206, 210, 212, 214 to access various memories and to perform operations on various memories, which can be requested by the peripheral device subsystems 218, 220, 222, 232, 234 and processors 206, 210, 212, 214.

[0062] The peripheral device subsystems 218, 220, 222, 232, and 234 may also include various processors (e.g., Figure 1 CPU 104, (multiple) processors 124), and controller (e.g., Figure 1The system comprises (multiple) processors 124), sensors, receivers, transmitters, and dedicated memories, such as caches and memory registers, configured to control and implement the functions of peripheral devices of subsystems 218, 220, 222, 232, and 234.

[0063] This article discusses Figure 2 The description of the SoC 230 and its various components shown is merely an example and not a limitation. Several components of the example SoC 230 shown can be variably configured, combined, and separated. These components can be included in greater or lesser numbers and can be differently located and connected within or separated from the SoC 230. Similarly, the SoC 230 may include many other components, such as additional memory, processors, peripheral subsystems, interfaces, and controllers.

[0064] Figure 3 A computing device suitable for implementing the embodiments is shown (e.g., Figure 1 Components of the computing device 100. (See reference) Figures 1-3 Processor 300 (e.g., Figure 1 Central processing unit 104, processor 124 Figure 2 The CPU cluster (206, GPU 210, DSP 212, APU 214) can include multiple processor types, including, for example, CPUs and various hardware accelerators such as GPUs, DSPs, SPUs, APUs, IPUs, subsystem processors of specific components of computing devices, auxiliary processors, peripheral processors, controllers / microcontrollers, etc.

[0065] Processor 300 may also include custom hardware accelerators, which may include custom processing hardware and / or general-purpose hardware configured to implement a dedicated set of functions. Processor 300 may include any number of processor cores 302, 304, 306, and 308. Processor 300 having multiple processor cores 302, 304, 306, and 308 may be referred to as a multi-core processor.

[0066] Processor 300 may have multiple homogeneous or heterogeneous processor cores 302, 304, 306, and 308. A homogeneous processor may include multiple homogeneous processor cores. Processor cores 302, 304, 306, and 308 can be homogeneous because processor cores 302, 304, 306, and 308 of processor 300 can be configured for the same purpose and have the same or similar performance characteristics. For example, processor 300 may be a general-purpose processor, and processor cores 302, 304, 306, and 308 may be homogeneous general-purpose processor cores. Processor 300 may be a GPU or a DSP, and processor cores 302, 304, 306, and 308 may be homogeneous graphics processor cores or digital signal processor cores, respectively. Processor 300 may be a custom hardware accelerator with homogeneous processor cores 302, 304, 306, and 308.

[0067] Heterogeneous processors can include multiple heterogeneous processor cores. Processor cores 302, 304, 306, and 308 can be heterogeneous because processor cores 302, 304, 306, and 308 of processor 300 can be configured for different purposes and / or have different performance characteristics. This heterogeneity of processor cores can include different instruction set architectures, pipelines, operating frequencies, etc. An example of such heterogeneous processor cores can include a so-called "big.LITTLE" architecture, in which slower, lower-power processor cores can be coupled with more powerful, higher-power processor cores. In similar embodiments, a SoC (e.g., Figure 1 SoC 122, Figure 2 The SoC 230 may include any number of homogeneous or heterogeneous processors 300. In various embodiments, not all processor cores 302, 304, 306, and 308 need to be heterogeneous processor cores, as heterogeneous processors may include any combination of processor cores 302, 304, 306, and 308, including at least one heterogeneous processor core.

[0068] Each of the processor cores 302, 304, 306, and 308 of the processor 300 may be designated as a dedicated processor core cache (PPCC) memory 310, 312, 314, and 316, which may be dedicated to read and / or write accesses performed by the designated processor cores 302, 304, 306, and 308. The dedicated processor core caches 310, 312, 314, and 316 may store data and / or instructions, and make the stored data and / or instructions available to the dedicated processor cores 302, 304, 306, and 308 for execution by the processor cores 302, 304, 306, and 308. The dedicated processor core caches 310, 312, 314, and 316 may include volatile memory. The dedicated processor core caches 310, 312, 314, and 316 may be physical caches and / or virtual caches.

[0069] The processor cores 302, 304, 306, and 308 of processor 300 can be designated as shared processor core cache (SPCC) memories 320 and 322, which can be dedicated to read and / or write accesses performed by the designated processor core group 302, 304, 306, and 308. The shared processor core caches 320 and 322 can store data and / or instructions, and make the stored data and / or instructions available to the dedicated group of processor cores 302, 304, 306, and 308 for execution by the designated processor cores 302, 304, 306, and 308. The shared processor core caches 320 and 322 may include volatile memory.

[0070] Processor 300 may include a shared processor cache memory 330, which may be dedicated to read and / or write access by processor cores 302, 304, 306, and 308 of processor 300. The shared processor cache 330 may store data and / or instructions, and make the stored data and / or instructions available to processor cores 302, 304, 306, and 308 for execution by processor cores 302, 304, 306, and 308. The shared processor cache 330 may also serve as a buffer for data and / or instructions input to and / or output from processor 300. The shared cache 330 may include volatile memory.

[0071] Multiple processors 300 can access the shared system cache memory 340 (e.g., Figure 1 The memory 106 in Figure 2The shared system cache 340 (system cache 202) can be dedicated to read and / or write accesses by processor cores 302, 304, 306, and 308 of multiple processors. The shared system cache 340 can store data and / or instructions, and make the stored data and / or instructions available to processor cores 302, 304, 306, and 308 for execution by processor cores 302, 304, 306, and 308. The shared system cache 340 can also be used as a buffer for data and / or instructions input to and / or output from multiple processors 300. The shared system cache 340 may include volatile memory.

[0072] The diagram illustrates four processor cores 302, 304, 306, and 308; four dedicated processor core caches 310, 312, 314, and 316; two sets of processor cores 302, 304, 306, and 308; shared processor core caches 320 and 322; a processor-shared cache 320; and a shared system cache 340. Figure 3 The examples shown are not intended to limit the various embodiments to these specific numbers of components. Computing device 100, SoC 102, or processor 300 may individually or in combination include fewer or more than four processor cores 302, 304, 306, 308, four dedicated processor core caches 310, 312, 314, 316, and two shared processor core caches 320, 322, a processor shared cache 320, and / or a shared system cache 340, as shown and described herein.

[0073] For ease of reference, the terms “processor,” “multi-core processor,” “processor core,” “controller,” and “microcontroller” are used interchangeably herein. The descriptions of the illustrated computing devices and their various components herein are exemplary and not restrictive. Several components of the illustrated example computing devices can be variably configured, combined, and separated. These components may be included in greater or lesser numbers and may be located and connected differently within the SoC or separated from the SoC.

[0074] Figure 4 and Figure 5 It shows Figure 4 The optional read command 408 and the optional read no data response 410 are as follows: Figure 5 Examples of write optional command 510 and write optional no data response 516 are provided. (See reference.) Figures 1-5Each of the optional read command 408, optional read no data response 410, optional write command 510, and optional write no data response 516 can be represented as an ordered bit. Each bit or group of bits in the order of optional read command 408 and optional write command 510 can be configured to send data to a terminal device (e.g., ...). Figure 1 The CPU 104, memory 106, communication interface 108, memory interface 110, peripheral device interface 120, and processor 124 are included. Figure 2 The system includes a system hub 200, a system cache 202, a cache controller 204, a protocol converter 208, processors 206, 210, 212, and 214, a memory interface 216, subsystems 218, 220, 222, 232, and 234, a NoC 224, and a memory controller 226. Figure 3 The processors 300, processor cores 302, 304, 306, 308, processor core caches 310, 312, 314, 316, shared processor core caches 320, 322, processor shared cache 320, and shared system cache 340 in the system read optional terminal device 402 and / or write optional terminal device 502 to indicate specific information. Each bit or group of bits in the order of reading optional no data response 410 and writing optional no data response 516 can be configured to indicate specific information to the requesting device (e.g., ...). Figure 1 CPU 104, Processor 124 Figure 2 The CPU cluster consists of 206 CPUs, 210 GPUs, 212 DSPs, 214 APUs, and subsystems 218, 220, 222, 232, and 234. Figure 3 The processors 300, 302, 304, 306, and 308 in the processor can read from the optional request device 400 and / or write to the optional request device 500 to indicate specific information. Figure 4 and Figure 5 In the example shown, the portions of read optional command 408, read optional no data response 410, write optional command 510, and write optional no data response 516 shown with dashed lines are information that can optionally be included in commands 408, 510, and / or responses 410, 516 in any combination.

[0075] In some embodiments, in order to implement the read optional command 408 and / or write optional command 510, the bit order of the existing read command and / or write command of the bus protocol may be modified to indicate to the read optional terminal device 402 and / or write optional terminal device 502 that the bit order is used for the read optional command 408 and / or write optional command 510.

[0076] In some embodiments, in order to implement the read optional command 408 and / or write optional command 510, the bus protocol can be updated with a new bit order that can be used to indicate to the read optional terminal device 402 and / or write optional terminal device 502 that the bit order is used for the read optional command 408 and / or write optional command 510.

[0077] In some embodiments, in order to implement the read optional command 408 and / or write optional command 510, the instruction set architecture (ISA) may be updated to generate a new bit order, which may be used to indicate to the read optional terminal device 402 and / or write optional terminal device 502 that the bit order is used for the read optional command 408 and / or write optional command 510.

[0078] Bits and / or a set of bits configured to indicate specific information to the read optional request device 400, read optional terminal device 402, write optional request device 500, and write optional terminal device 502 may be referred to herein as "fields". The read optional command 408 may include an address field configured to indicate the target data and / or location for the read optional command 408. The read optional command 408 may include a read optional command field configured to indicate the command type. In some embodiments, the read optional command 408 may include a read optional terminal device ID field configured to indicate which one or more of the read optional terminal devices 402 may respond to the read optional command 408 using the read optional no data response 410. In some embodiments, the read optional command 408 may include a read optional no data response condition field configured to indicate one or more conditions for the read optional terminal device 402 to respond to the read optional command 408 using the read optional no data response 410.

[0079] In some embodiments, the read optional terminal device ID and / or read optional no data response condition may be inherent to the read optional command 408 and may not need to be explicitly added as values ​​to the read optional terminal device ID field and / or read optional no data response condition field. For example, read optional terminal device 402 may be configured to respond to the read optional command 408 under certain conditions, and the read optional command 408 may not have the read optional terminal device ID field and / or read optional no data response condition field.

[0080] The Read Optional No Data Response 410 may include a Read Optional No Data Response field configured to indicate the response type. In some embodiments, the Read Optional No Data Response 410 may include a Read Optional No Data Response Terminal Device ID field configured to indicate which Read Optional Terminal Device 402 utilizes the Read Optional No Data Response 410 in response to the Read Optional Command 408. In some embodiments, the Read Optional No Data Response 410 may include a Read Optional No Data Response Condition field configured to indicate a condition under which the Read Optional Terminal Device 402 utilizes the Read Optional No Data Response 410 in response to the Read Optional Command 408.

[0081] The write optional command 510 may include an address field configured to indicate the target data and / or location for writing the optional command 510. The write optional command 510 may include a write optional command field configured to indicate the command type. In some embodiments, the write optional command 510 may include a write optional terminal device ID field configured to indicate which write optional terminal device 502 can respond to the write optional command 510 with a write optional no data response 516. In some embodiments, the write optional command 510 may include a write optional no data response condition field configured to indicate that the write optional terminal device 502 can respond to one or more conditions of the write optional command 510 using the write optional no data response 516.

[0082] In some embodiments, the Write Optional Terminal Device ID and / or Write Optional No Data Response Condition may be inherent to the Write Optional command 510 and may not need to be explicitly added as values ​​to the Write Optional Terminal Device ID field and / or Write Optional No Data Response Condition field. For example, Write Optional Terminal Device 502 may be configured to respond to the Write Optional command 510 under certain conditions, where the Write Optional command 510 does not have the Write Optional Terminal Device ID field and / or Write Optional No Data Response Condition field.

[0083] The write optional no data response 516 may include a write optional no data response field configured to indicate the response type. In some embodiments, the write optional no data response 516 may include a write optional no data response terminal device ID field configured to indicate which write optional terminal device 502 utilizes the write optional no data response 516 in response to the write optional command 510. In some embodiments, the write optional no data response 516 may include a write optional no data response condition field configured to indicate a condition under which the write optional terminal device 502 utilizes the write optional no data response 516 in response to the write optional command 510.

[0084] The read optional command 408 and / or write optional command 510 can be specifically configured to instruct the read optional terminal device 402 and / or write optional terminal device 502 that terminal devices 402 and 502 can respond to commands 408 and 510 using the read optional no data response 410 and / or write optional no data response 516. The read optional no data response 410 and / or write optional no data response 516 can be an architecture response specifically used in response to the read optional command 408 and / or write optional command 510. The read optional no data response 410 and / or write optional no data response 516 can be different from and supplement to error or fault signaling, wherein the read optional terminal device 402 and / or write optional terminal device 502 can forward the response to the read optional command 408 and / or write optional command 510 and hold commands 408 and 510 until commands 408 and 510 can be fulfilled. The read optional no data response 410 and / or write optional no data response 516 may indicate to the read optional request device 400 and / or write optional request device 500 that the read optional command 408 and / or write optional command 510 are not implemented, and request devices 400 and 500.

[0085] For read-optional request device 400 and / or write-optional request device 500, read-optional no-data response 410 and / or write-optional no-data response 516 can be acceptable states, such as an "OK" state, rather than error or fault states triggered by an error or fault signal indicating a failed memory access request. Not implementing read-optional command 408 and / or write-optional command 510 can be acceptable because, for example, implementing commands 408 and 510 may not be necessary even if implementing commands 408 and 510 is critical. Thus, not implementing read-optional command 408 and / or write-optional command 510 can be a non-error or fault state triggered by an error or fault signal that can be configured to indicate a failure to implement, incomplete implementation, inappropriate implementation, etc., of the required memory access.

[0086] The read optional request device 400 and / or write optional request device 500 can be configured to retry and / or abort commands 408 and 510 in response. In some embodiments, the read optional request device 400 and / or write optional request device 500 can be pre-configured to respond to a read optional no data response 410 and / or a write optional no data response 516. In some embodiments, the read optional request device 400 and / or write optional request device 500 can determine how to respond to the read optional no data response 410 and / or the write optional no data response 516.

[0087] Read optional no data response 410 and / or write optional no data response 516 can be performed by the read optional request device 400 and / or write optional request device 500 with main memory (e.g., Figure 1 Memory 114 in Figure 2 Any or specific read-optional terminal device 402 and / or write-optional terminal device 502 issued between the random access memory 228 in the system. A read-optional no-data response 410 and / or a write-optional no-data response 516 may be issued based on one or more conditions, as further described herein. In some embodiments, a read-optional no-data response 410 and / or a write-optional no-data response 516 may instruct a read-optional requesting device 400 and / or a write-optional requesting device 500 to issue no-data responses 410, 516 to the read-optional terminal device 402 and / or the write-optional terminal device 502.

[0088] In some embodiments, reading optional no data response 410 and / or writing optional no data response 516 may indicate conditions for no data responses 410 and 516 to read optional request device 400 and / or write optional request device 500. In some embodiments, the response of read optional request device 400 and / or write optional request device 500 to read optional no data response 410 and / or write optional no data response 516 may depend on the conditions for reading optional terminal device 402 and / or writing optional terminal device 502 to issue read optional no data response 410 and / or write optional no data response 516 and / or to issue no data responses 410 and 516.

[0089] In some embodiments, the read optional command 408 and the read optional no data response 410 can be used to avoid costly work. For example, the read optional command 408 and the read optional no data response 410 can be used to avoid infinite loops or livelocks of data that may be repeatedly fetched from main memory but repeatedly evicted before use. For a more specific example, the data prefetcher may receive the read optional command 408 and issue the read optional no data response 410 in response to the requested data not being in the cache, rather than responding by retrieving the lost data from main memory. In this way, the prefetcher can avoid repeatedly fetching data evicted before use from main memory, and the read optional request device 400 can be configured to either abandon the request or promptly reissue the request to use the data. As another example, the data prefetcher may generate the read optional command 408 for retrieving data. In some embodiments, the data prefetcher may generate the read optional command 408 by default and / or through an algorithm. For example, the algorithm for generating the read optional command 408 may be based on the expected probability of use of the retrieved data. The algorithm may prompt the generation of a read optional command 408 in response to a probability exceeding and / or falling below a read optional command generation threshold. In some embodiments, the data prefetcher configured to generate the read optional command 408 may not be integrated with a cache that targets the read optional command 408, and may send the read optional command 408 to the target cache.

[0090] In some embodiments, the read optional command 408 may include a value in the read optional terminal device ID field configured to indicate to the prefetcher that the prefetcher can respond with the read optional no data response 410. In some embodiments, the read optional command 408 may include a value in the read optional no data response condition field, which instructs the read optional terminal device 402 to issue the read optional no data response 410 in response to the loss of requested data from the cache.

[0091] For another example, the Read Optional Command 408 and the Read Optional No Data Response 410 can be used to avoid excessive, incorrect, and / or disallowed data reads by acting as out-of-bounds checks, such as for an image buffer, without knowing the valid range. In such an example, the Read Optional Command 408 can be issued to retrieve data from the image buffer. In response to the requested data exceeding the boundary for the image buffer, the Read Optional Terminal Device 402, having buffer range information, can respond to the Read Optional Command 408 using the Read Optional No Data Response 410 instead of retrieving the requested data from devices further along the transaction path. Thus, costly duplicate and / or inappropriate data reads can be avoided. The Read Optional Terminal Device 402, having buffer range information, may include a memory controller, a System Memory Management Unit (SMMU), a cache, and / or other dedicated function blocks. In some embodiments, the Read Optional Command 408 may include a value in a Read Optional Terminal Device ID field configured to indicate to the Read Optional Terminal Device 402 that the Read Optional Terminal Device 402 can respond using the Read Optional No Data Response 410. In some embodiments, the read optional command 408 may include a value in the read optional no data response condition field, which is used to instruct the read optional terminal device 402 to issue a read optional no data response 410 in response to the requested data exceeding the boundary of the image buffer.

[0092] Similarly, the write optional command 510 and the write optional no data response 516 can be used to avoid excessive, incorrect, and / or disallowed data writes by acting as out-of-bounds checks, such as for an image buffer, without knowing the valid range. In such an example, the write optional command 510 can be issued to write data to the image buffer. In response to the requested write location exceeding the boundary for the image buffer, the write optional terminal device 502 with buffer range information can respond to the write optional command 510 using the write optional no data response 516 instead of writing the requested data to a memory location outside the boundary for the image buffer. Thus, expensive and / or inappropriate writes can be avoided. The write optional terminal device 502 with buffer range information may include a memory controller, a system memory management unit (SMMU), a cache, and / or other dedicated function blocks. In some embodiments, the write optional command 510 may include a value in a write optional terminal device ID field configured to indicate to the write optional terminal device 502 that the write optional terminal device 502 can respond using the write optional no data response 516. In some embodiments, the write optional command 510 may include a value in the write optional no data response condition field, which is used to instruct the write optional terminal device 502 to issue a write optional no data response 516 in response to the requested data write location being outside the boundary for the image buffer.

[0093] As another example, the read optional command 408 and the read optional no-data response 410 can be used to avoid costly operations based on workload. For example, certain operations may have associated costs, and the individual and / or cumulative operational costs of implementing the read optional command 408 may exceed a cost threshold. Such operations may include read operations, retrieval operations, memory management operations, memory coherence operations, etc. For example, costs may be measured based on any number of power, time, cycle, bandwidth, resource requirements, latency impact on other operations, etc., and combinations thereof. The read optional terminal device 402 may be configured to determine the cost of implementing the read optional command 408 and compare that cost to a cost threshold. The read optional terminal device 402 may implement the read optional command 408 in response to the cost of implementing the read optional command 408 not exceeding the cost threshold, and may not implement the read optional command 408 in response to the cost of implementing the read optional command 408 exceeding the cost threshold. In some embodiments, the cost threshold for the read optional command 408 may be inherent to the read optional command 408. In some embodiments, the optional read command 408 may include a value in the optional read no data response condition field, which is used to instruct the optional read terminal device 402 to issue an optional read no data response 410 in response to the cost of implementing the optional read command 408 exceeding a cost threshold. In some embodiments, the optional read command 408 may include a value in the optional read no data response condition field, which is used to instruct the optional read terminal device 402 to indicate a cost threshold value.

[0094] Similarly, write optional command 510 and write optional no-data response 516 can be used to avoid costly work based on operational costs. For example, certain operations may have associated costs, and the individual operational cost and / or cumulative operational cost of implementing write optional command 510 may exceed a cost threshold. Such operations may include write operations, memory management operations, memory coherence operations, etc. For example, costs may be measured based on any number of power, time, cycle, bandwidth, resource requirements, latency impact on other operations, etc., and combinations thereof. Write optional terminal device 502 may be configured to determine the cost of implementing write optional command 510 and compare that cost to a cost threshold. Write optional terminal device 502 may implement write optional command 510 in response to the cost of implementing write optional command 510 not exceeding the cost threshold, and may not implement write optional command 510 in response to the cost of implementing write optional command 510 exceeding the cost threshold. In some embodiments, the cost threshold for write optional command 510 may be inherent to write optional command 510. In some embodiments, the write optional command 510 may include a value in the write optional no data response condition field, which is used to instruct the write optional terminal device 502 to issue a write optional no data response 516 in response to the cost of implementing the write optional command 510 exceeding a cost threshold. In some embodiments, the write optional command 510 may include a value in the write optional no data response condition field, which is used to instruct the write optional terminal device 502 to a value of the cost threshold.

[0095] In some embodiments, the optional read command 408 and the optional read no data response 410 can be used to avoid exceptions, errors, and / or failures. The optional read terminal device 402 can determine that implementing the optional read command 408 may cause an exception, error, and / or failure. In response to determining that implementing the optional read command 408 may cause an exception, error, and / or failure, the optional read terminal device 402 can choose not to implement the optional read command 408 and return the optional read no data response 410. Not implementing the optional read command 408 can avoid exceptions, errors, and / or failures caused by implementing the optional read command 408. For example, the optional read terminal device 402 can determine that implementing the optional read command 408 may cause a page fault. In response to determining that implementing the optional read command 408 may cause a page fault, the optional read terminal device 402 can choose not to implement the optional read command 408 and return the optional read no data response 410. In some embodiments, the read optional command 408 may include a value in the read optional no data response condition field, which is used to instruct the read optional terminal device 402 to issue a read optional no data response 410 in response to determining that implementing the read optional command 408 may result in an anomaly, error, and / or failure.

[0096] Similarly, in some embodiments, the write optional command 510 and the write optional no data response 516 can be used to avoid exceptions, errors, and / or failures. The write optional terminal device 502 can determine that implementing the write optional command 510 may cause an exception, error, and / or failure. In response to determining that implementing the write optional command 510 may cause an exception, error, and / or failure, the write optional terminal device 502 can choose not to implement the write optional command 510 and return the write optional no data response 516. Not implementing the write optional command 510 can avoid exceptions, errors, and / or failures caused by implementing the write optional command 510. For example, the write optional terminal device 502 can determine that implementing the write optional command 510 may cause a page fault. In response to determining that implementing the write optional command 510 may cause a page fault, the write optional terminal device 502 can choose not to implement the write optional command 510 and return the write optional no data response 516. In some embodiments, the write optional command 510 may include a value in the write optional no data response condition field, which is used to instruct the write optional terminal device 502 to issue a write optional no data response 516 in response to determining that implementing the write optional command 510 may result in an anomaly, error, and / or failure.

[0097] In some embodiments, the Read Optional Command 408 and Read Optional No Data Response 410 can be used to release resources that would otherwise be held until the process is complete. For example, the GPU can issue Read Optional Command 408 to request image data from memory, which can be configured to load partially resident textures. Memory may include cache, random access memory (RAM) (such as Double Data Rate (DDR) RAM), etc. In response to the loss of requested data from memory, the memory controller can respond to Read Optional Command 408 with Read Optional No Data Response 410 instead of holding the request until the data is retrieved and written to memory. In such an example, Read Optional Command 408 can complete and resources such as threads, cores, memory, NoC bandwidth, transaction storage / buffers, and trace capacity, which would have been used to process the requested data, can be released, allowing other processing to proceed. Furthermore, the memory controller can retrieve the requested data, and the GPU can later reissue Read Optional Command 408 to request the data. Thus, resources can be released for use when lost data is retrieved, rather than suspending the execution of other processes while waiting for data retrieval.

[0098] Similarly, in some embodiments, the write optional command 510 and the write optional no data response 516 can be used to release resources that would otherwise be held until the process is complete. For example, the GPU can issue a write optional command 510 to request that image data be written to memory, which can be configured to store partially resident textures. Memory may include cache, RAM (such as DDR RAM), etc. In response to memory being full, the memory controller can respond to the write optional command 510 with the write optional response 516, instead of holding the request until there is space in memory to write data and the data is written to memory. In such an example, the write optional command 510 can complete, and resources such as threads, cores, memory, NoC bandwidth, etc., which would have been used to process the data write, can be released, allowing other processing to be implemented. Furthermore, the memory controller can clear space in memory, and the GPU can later reissue the write optional command 510 to request the write of data. In this way, resources can be released for use when space in memory is unavailable, rather than suspending the execution of other processes while waiting for available space in memory.

[0099] In some embodiments, the optional read command 408 may include a value in the optional read terminal device ID field configured to indicate to the memory controller that the memory controller may respond with the optional read no data response 410. In some embodiments, the optional read command 408 may include a value in the optional read no data response condition field used to indicate to the optional read terminal device 402 that the optional read no data response 410 is issued in response to the loss of requested data from the cache.

[0100] In some embodiments, read optional command 408 and read optional no data response 410 and / or write optional command 510 and write optional no data response 516 can be used to improve data flow between consumer and process processing devices by avoiding writes to main memory and synchronization operations between processing devices. For example, processing devices can share streaming data by writing and reading streaming data in a shared buffer (such as a cache). In response to a producer processing device not having written data to the cache, a consumer processing device that issues read optional command 408 for streaming data in the shared buffer can receive read optional no data response 410 from the memory controller. The consumer processing device can retry read optional command 408 for streaming data until the data appears in the shared buffer. In this way, the memory controller avoids having to issue a read command to main memory for missing data in the shared buffer in response to the consumer processor's read optional command 408. In response to a shared buffer and / or cache being full, a producer processing device that issues write optional command 510 for streaming data in the shared buffer can receive write optional data response 516 from the memory controller. The producer processing device can retry write optional command 510 for streaming data until the data is added to the shared buffer. In this way, the memory controller avoids having to evict data from the shared buffer and issue a write command to main memory for the data in the shared buffer in response to the producer processor's write optional command 510.

[0101] In some embodiments, the shared buffer memory controller may provide additional data to the consumer processor to improve the timing of re-issuing the read optional command 408, such as by including the last written address, the increment of the current address, or timing information. In some embodiments, the consumer producer may have finer synchronization granularity—slice-based rather than frame-based communication—and the consumer processor may not need to synchronize at frame boundaries. In some embodiments, the data stream may be part of page table attributes, and the memory controller may translate a normal read command from the consumer processor into the read optional command 408 and perform a retry of the read optional command 408 until data is available in the shared buffer.

[0102] In some embodiments, the optional read command 408 and the optional read no data response 410 and / or the optional write command 510 and the optional write no data response 516 can be used to implement secure data transactions. For example, when the hardware and / or software are unaware of whether it is operating securely, the optional read command 408 and / or the optional write command 510 can be used to access a possible security buffer and return the optional read no data response 410 and / or the optional write no data response 516 without error. For another example, not implementing the optional read command 408 and / or the optional write command 510 can be based on the permission that the optional read request device 400, the optional write request device 500, the user, process, application, etc., are not allowed to issue the optional read command 408 and / or the optional write command 510 to access for reading and / or writing. In some embodiments, the optional read command 408 may include a value in a optional read no data response condition field that indicates to the optional read terminal device 402 that the optional read no data response 410 has been issued in response to denied access to the requested location and / or target data. In some embodiments, the write optional command 510 may include a value in the write optional no data response condition field, which is used to instruct the write optional terminal device 502 to issue a write optional no data response 516 in response to denied access to the requested location.

[0103] Figure 4 The example illustrates a read optional command 408 and a read optional no data response 410 transaction. A read optional requesting device 400 may transmit the read optional command 408 to a read optional terminal device 402. In some embodiments, the read optional command 408 may be transmitted via an existing read address and / or command channel 404 of an existing bus protocol. In some embodiments, the read optional command 408 may include a read optional terminal device ID field. In some embodiments, the read optional command 408 may include a read optional no data response condition field. The read optional terminal device 402 may receive the read optional command 408.

[0104] The optional terminal device 402 can be determined to be the optional terminal device 402 for reading the optional command 408. In some embodiments, the optional terminal device 402 can be configured to be the optional terminal device 402 for reading the optional command 408. In some embodiments, the optional terminal device 402 can be interpreted as the optional terminal device 402 for reading the optional command 408 based on the optional terminal device ID field. The optional terminal device 402 can determine that it can terminate the optional command 408 based on conditions for terminating the optional command 408. In some embodiments, the optional terminal device 402 can be configured to determine that it can terminate the optional command 408 based on conditions for terminating the optional command 408. In some embodiments, the optional terminal device 402 can interpret and determine that it can terminate the optional command 408 based on conditions for reading the optional command 408 based on the optional no data response condition field. The optional terminal device 402 can terminate the optional command 408 and prevent the optional command 408 from being forwarded to the main memory.

[0105] The optional terminal device 402 can generate a read optional no data response 410 and transmit it to the optional request device 400. This read optional no data response 410 has a read optional no data response field. In some embodiments, the read optional no data response 410 can be transmitted via an existing read data channel 406 using an existing bus protocol. In some embodiments, the read optional no data response 410 may include a read optional no data response terminal device ID field. In some embodiments, the read optional no data response 410 may include a read optional no data response condition field. The optional request device 400 can receive the read optional no data response 410.

[0106] Figure 5 The example illustrates a write optional command 510 and a write optional no data response 516 transaction. A write optional requesting device 500 may transmit the write optional command 510 to a write optional terminal device 502. In some embodiments, the write optional command 510 may be transmitted via an existing write address and / or command channel 504 of an existing bus protocol. In some embodiments, the write optional command 510 may include a write optional terminal device ID field. In some embodiments, the write optional command 510 may include a write optional no data response condition field. The write optional requesting device 500 may transmit write data 514 on a write data channel 506. The write optional terminal device 502 may receive the write optional command 510 and the write data 514.

[0107] The write optional terminal device 502 can be determined to be a write optional terminal device 502 for writing optional command 510. In some embodiments, the write optional terminal device 502 can be configured as a write optional terminal device 502 for writing optional command 510. In some embodiments, the write optional terminal device 502 can be interpreted as a write optional terminal device 502 for writing optional command 510 based on the write optional terminal device ID field. The write optional terminal device 502 can determine that it can terminate the write optional command 510 based on the conditions for terminating the write optional command 510. In some embodiments, the write optional terminal device 502 can interpret and determine that it can terminate the write optional command 510 based on the conditions for terminating the write optional command 510 based on the write optional no data response condition field. The write optional terminal device 502 can terminate the write optional command 510.

[0108] The write-optional terminal device 502 can generate a write-optional no-data response 516 and transmit it to the write-optional request device 500. This write-optional no-data response 516 has a write-optional no-data response field. In some embodiments, the write-optional no-data response 516 can be transmitted via an existing write response channel 508 of an existing bus protocol. In some embodiments, the write-optional no-data response 516 may include a write-optional no-data response terminal device ID field. In some embodiments, the write-optional no-data response 516 may include a write-optional no-data response condition field. The write-optional request device 500 can receive the write-optional no-data response 516.

[0109] Figure 6 Examples of optional read commands suitable for implementing various embodiments to avoid livelock are shown. References Figures 1-6 The optional reading request device 400 can transmit a read request 600 for data "X" from the optional reading terminal device 402. The optional reading terminal device 402 can receive the read request 600 for data "X". In response to the read request 600 for data "X", the optional reading terminal device 402 can load data "X" and "Y" in operation 602. The optional reading terminal device 402 can respond to the read request 600 by sending a request 604 to the optional reading request device 400 to read data "X" and prompt data "Y". The optional reading request device 400 can receive a request 604 to send a read command for data "X" and prompt data "Y". The optional reading terminal device 402 can evict data "X" in operation 606, and then evict data "Y" 608.

[0110] After evicting data "Y" in operation 608, the read optional request device 400 can send a read optional command 610 for data "Y" (e.g., Figure 4 The optional read command 408 is used in the reading terminal device 402. The optional read command 610 can receive the data "Y" and respond by sending a no-data read response 612. Figure 4 The response is made by sending a read optional no data response 410. In some embodiments, responding to the read optional command 610 for receiving data "Y" by sending a read optional no data response 612 may be different from responding to the common read command for data "Y", wherein the read optional terminal device 402 may forward the read command for data "Y" to the main memory, receive data "X" and data "Y" from the main memory, and respond to the common read command for data "Y" by sending data "Y" and a request to prompt the read command for data "X".

[0111] The read optional request device 400 can receive a read optional no data response 612 and abandon the request for data "Y" in operation 614. In some embodiments, abandoning the request for data "Y" in operation 614 in response to receiving the read optional no data response 612 can differ from responding to receiving data "X" and requesting a read command for prompt data "X," because the read optional request device 400 and the read optional terminal device 402 can repeat signals and operations 600-608, send a common read command for data "Y," forward the read command for data "Y" to main memory, receive data "X" and data "Y" from main memory, and respond to the common read command for data "Y" by sending data "Y" and a request for a read command for prompt data "X." This can lead to a livelock loop in which the request for data is repeatedly sent after the data has been evicted, resulting in repeated retrieval of data from main memory. However, sending the optional read command 610 for data “Y”, sending the optional read no data response 612, and abandoning the request for data “X” in operation 614 avoids the duplication of signals and operations 600-608.

[0112] Figure 7 Examples of optional read commands suitable for implementing various embodiments are shown. References Figures 1-7 In this example, the read optional request device 400 can issue a read optional command for data at the address of the read optional terminal device 402 (e.g., Figure 4 The optional read command 408) 700. As a non-limiting example, the optional read terminal device 402 can be a cache.

[0113] When the requested data is not located at the address specified by the optional read terminal device 402, the optional read command 700 may be lost in the optional read terminal device 402. In response to the data loss in the optional read terminal device 402, the optional read terminal device 402 can send a "Read Optional No Data" response. Figure 4 The read optional no data response 702 is used to respond to the read optional request device 400. The read optional request device 400 can receive the read optional no data response 702 and, in response, can abandon or retry the read optional command 700. Unlike conventional read commands, the read optional terminal device 402 may not forward the read optional command 700 to the main memory 704 (e.g., ...). Figure 1 Memory 114 in Figure 2 (Random access memory 228 in the memory). Thus, compared to forwarding a conventional read command to main memory 704, retrieving data from main memory 704, writing the data to read optional terminal device 402, and returning the data to read optional request device 400, read optional command 700 and read optional no data response 702 can use fewer resources and have lower latency.

[0114] Figure 8 Examples of optional read commands suitable for implementing various embodiments are shown. References Figures 1-8 Data flow can be implemented between a producer-consumer pair, where the producer writes to the optional request device 500 and the consumer reads from the optional request device 400. In some embodiments, the write optional request device 500 can send data to the read / write optional terminal device 800 (e.g., ...). Figure 4 Read optional terminal device 402 in the middle Figure 5 The write-optional terminal device in the middle) issues a write-optional command (e.g., Figure 5 The write optional command 510) 802. As a non-limiting example, the read / write optional terminal device 800 can be a cache. Figure 8 In the example shown, the write optional command 802 can be successful and may result in data being written to the read / write optional terminal device 800. However, in some embodiments, when no space is available to write data to the read / write optional terminal device 800, the read / write optional terminal device 800 may return a write optional no data response (e.g., Figure 5 (Write optional no data response 516). In some embodiments, the data written by optional command 802 can be marked as non-dirty or non-write-back.

[0115] The optional read request device 400 can issue a read optional command for reading / writing data at the address of the optional terminal device 800 (e.g., Figure 4The optional read command 700 (408) is used in the context of the optional read terminal device 402. When the requested data is not located at the address specified by the optional read command 700, the optional read command 700 may be lost in the optional read terminal device 402. For example, the optional read command 700 may be issued before the optional write command 802 for the same data. In response to data loss in the optional read / write terminal device 800, the optional read / write terminal device 800 can respond by sending a no-data read response. Figure 4 The read optional no data response (410) 702 is used to respond. The read optional request device 400 can receive the read optional no data response 702 and, in response, can abandon or retry the read optional command 700. In some embodiments, the data in the read optional command 700 can be marked as non-dirty or non-write-back. When streaming data using a reused address in the read / write optional terminal device 800, the read can request the read line to be invalidated so that the read line can accept the next write. Invalidating the read line can be done as part of the read optional command 700 or automatically by the cache.

[0116] Unlike traditional data streams using conventional read / write commands, this method eliminates the need for data readiness signals from producer to consumer. The data synchronization mechanism ensures that the producer has written data to the cache before the consumer attempts to read it. Instead, a read-option no-data response 702 can be used to notify the consumer read-option request device 400 that the data is not in the read / write optional terminal device 800, and the read-option request device 400 can retry the read-option command 700 until it results in the return of the requested data. Furthermore, the read / write optional terminal device 800 can abandon writing data back to main memory 704, traditionally due to cache overflow caused by faster writes than reads, and because dirty data already read by the consumer will no longer be addressed. Due to insufficient space in the read / write optional terminal device 800, the write-option command 802 executed by the producer write-option request device 500 can be terminated by the read / write optional terminal device 800. Data may not be written to the read / write optional terminal device 800 until the consumer read optional request device 400 has read and invalid data in the read / write optional terminal device 800 creates space for write optional request device 500 to write more data to the read / write optional terminal device 800.

[0117] Figure 9 A method 900 for reading and / or writing optional commands, according to one embodiment, is shown. (Reference) Figures 1-9 Method 900 can be used on computing devices (e.g., Figure 1In a computing device 100, the processor may be configured in hardware, software executed in a processor, or a combination of a processor and dedicated hardware configured in software (e.g., Figure 1 The CPU 104, memory 106, communication interface 108, memory interface 110, peripheral device interface 120, and processor 124 are included. Figure 2 The system includes a system hub 200, a system cache 202, a cache controller 204, a protocol converter 208, processors 206, 210, 212, and 214, a memory interface 216, subsystems 218, 220, 222, 232, and 234, a NoC 224, and a memory controller 226. Figure 3 The processors in the series are: processor 300, processor cores 302, 304, 306, 308, processor core caches 310, 312, 314, 316, shared processor core caches 320, 322, shared processor cache 320, and shared system cache 340. Figure 4 and Figures 6-8 Read optional request device 400 in Figure 4 , Figure 6 and Figure 7 Read optional terminal device 402 in the middle Figure 5 and Figure 8 Write optional request device 500, Figure 5 Write to optional terminal device 502, Figure 8 This is implemented using an optional terminal device 800 for reading / writing. To include alternative configurations enabled in various embodiments, the hardware implementing method 900 is referred to herein as an "optional command device".

[0118] In box 902, the optional command device can generate a read optional command (e.g., Figure 4 The optional read command 408) and / or optional write command (e.g., Figure 5 (Write optional command 510). In some embodiments, the optional command request device may generate an optional command in block 902. In some embodiments, the read optional request device may generate a read optional command in block 902. In some embodiments, the write optional request device may generate a write optional command in block 902.

[0119] As described herein, a read optional command may include an address field configured to indicate the target data and / or location of the read optional command. A read optional command may include a read optional command field configured to indicate the command type. In some embodiments, a read optional command may include a read optional terminal device ID field configured to indicate which or more of the read optional terminal devices can utilize a read optional no-data response (e.g., ...). Figure 4The optional terminal device responds to the optional command with a read optional response (410). In some embodiments, the optional command may include a read optional response condition field configured to indicate one or more conditions that the optional terminal device can utilize the read optional response to respond to the optional command. In some embodiments, the optional terminal device ID and / or the optional response condition may be inherent to the optional command and may not need to be explicitly added as values ​​to the optional terminal device ID field and / or the optional response condition field.

[0120] As described herein, a write optional command may include an address field configured to indicate the target data and / or location of the write optional command. A write optional command may include a write optional command field configured to indicate the command type. In some embodiments, a write optional command may include a write optional terminal device ID field configured to indicate which write optional terminal device(s) can utilize a write optional no-data response (e.g., ...). Figure 5 The write optional no data response (516) is used in response to the write optional command. In some embodiments, the write optional command may include a write optional no data response condition field configured to indicate one or more conditions that the write optional terminal device can utilize the write optional no data response to respond to the write optional command. In some embodiments, the write optional terminal device ID and / or the write optional no data response condition may be inherent to the write optional command and may not need to be explicitly added as values ​​to the write optional terminal device ID field and / or the write optional no data response condition field.

[0121] In block 904, the optional command device can transmit read optional commands and / or write optional commands. In some embodiments, the optional command request device can transmit optional commands in block 904. In some embodiments, the read optional request device can transmit read optional commands in block 904. In some embodiments, the write optional request device can transmit write optional commands in block 904. The optional command device can transmit optional commands along the optional command device and main memory (e.g., Figure 1 Memory 114 in Figure 2 Random access memory 228 in Figure 7 and Figure 8 The optional command device can transmit read optional commands to any device (such as a read optional terminal device) along the transaction path of read optional commands between the optional command device and main memory (704). The optional command device can transmit write optional commands to any device (such as a write optional terminal device) along the transaction path of write optional commands between the optional command device and main memory.

[0122] In block 906, the optional command device may receive a read optional command and / or a write optional command. In some embodiments, the optional command terminal device may receive optional commands in block 906. In some embodiments, the read optional terminal device may receive a read optional command in block 906. In some embodiments, the write optional terminal device may receive a write optional command in block 906.

[0123] In determination block 908, the optional command device may determine whether a read optional command and / or a write optional command can be implemented. In some embodiments, the optional command terminal device may determine whether an optional command can be implemented in determination block 908. In some embodiments, the read optional terminal device may determine whether a read optional command can be implemented in determination block 908. In some embodiments, the write optional terminal device may determine whether a write optional command can be implemented in determination block 908. In some embodiments, the optional command device may determine whether a read optional command can be implemented based on whether the target data of the read optional command is located by the optional command device. In some embodiments, the optional command device may determine whether a read optional command can be implemented based on whether the conditions indicated in the read optional no data response condition field of the read optional command are met. In some embodiments, the optional command device may determine whether a read optional command can be implemented based on conditions inherent to the read optional command. For example, the conditions indicated in the read optional no data response condition field and / or the conditions inherent to the read optional command may include the optional command device not locating the requested data, the requested data exceeding the boundary for the buffer, the cost of implementing the read optional command exceeding a cost threshold, the implementation of the read optional command causing an exception, error, and / or failure, or access to the requested location and / or target data being denied, etc.

[0124] In some embodiments, the optional command device may examine an address field configured to indicate the target data and / or location of the read optional command. The optional command device may determine whether the target data is at that location. In response to determining that the target data is not at that location, the optional command device may determine that the read optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the read optional command based on the condition in the read optional no data response condition field that the target data is not at that location.

[0125] In some embodiments, the optional command device may examine the address field of a read optional command configured to indicate the target data and / or location of the read optional command. The optional command device may determine whether the location of the target data is within the boundaries of the buffer. In response to determining that the location of the target data is not within the boundaries of the buffer, the optional command device may determine that the read optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the read optional command based on the condition in the read optional no data response condition field that the location of the target data is not within the boundaries of the buffer.

[0126] In some embodiments, the optional command device can calculate the cost of implementing a read optional command. This cost can be calculated based on the cost of any number and combination of operations involved in implementing the read optional command. Such operations can include read operations, fetch operations, memory management operations, memory coherence operations, etc. For example, the cost can be measured based on any number and combination of power, time, cycle time, bandwidth, resource requirements, latency impact on other operations, etc. The optional command device can compare the calculated cost of implementing the read optional command with a cost threshold. The optional command device can determine whether the cost of implementing the read optional command exceeds the cost threshold. In response to determining that the cost of implementing the read optional command exceeds the cost threshold, the optional command device can determine that the read optional command may not be implemented. In some embodiments, the optional command device can determine not to implement the read optional command based on the condition in the read optional no-data response condition field that the cost of implementing the read optional command exceeds the cost threshold. In some embodiments, the condition in the read optional no-data response condition field can include a value indicating a value of the cost threshold.

[0127] In some embodiments, the optional command device may determine that implementing the read optional command may result in an exception, error, and / or failure. In response to determining that implementing the read optional command may result in an exception, error, and / or failure, the optional command device determines that the read optional command may not be implemented. Not implementing the read optional command can avoid the exceptions, errors, and / or failures that would result from implementing the read optional command. In some embodiments, the optional command device may determine not to implement the read optional command based on the condition in the read optional no data response condition field that implementing the read optional command may result in an exception, error, and / or failure.

[0128] In some embodiments, the optional command device may determine that implementing the read optional command may violate a security protocol. For example, the optional command device may determine that implementing the read optional command may violate a security protocol based on denying access to target data and / or location. In response to determining that implementing the read optional command may violate a security protocol, the optional command device determines that the read optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the read optional command based on the condition in the read optional no data response condition field that access to the requested target data and / or location is denied.

[0129] In some embodiments, the optional command device may determine whether a write optional command can be implemented based on the existence of space in the optional command device for writing target data for the write optional command. In some embodiments, the optional command device may determine whether a write optional command can be implemented based on satisfying a condition indicated in the write optional no data response condition field of the write optional command. In some embodiments, the optional command device may determine whether a write optional command can be implemented based on conditions inherent to the write optional command. For example, conditions indicated in the write optional no data response condition field and / or conditions inherent to the write optional command may include the requested data write location being unavailable for writing by the optional command device, the requested data write location being outside the boundaries of the buffer, the cost of implementing the write optional command exceeding a cost threshold, implementing the write optional command resulting in an exception, error, and / or failure, or access to the requested location being denied, etc.

[0130] In some embodiments, the optional command device may examine the address field of a write optional command that is configured to indicate the target location of the write optional command. The optional command device may determine whether the target location is available for writing. In response to determining that the target location is not available for writing, the optional command device may determine that the write optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the write optional command based on the condition in the write optional no data response condition field that the target location is not available for writing.

[0131] In some embodiments, the optional command device may examine the address field of a write optional command configured to indicate the target location of the write optional command. The optional command device may determine whether the target location is within the boundaries of the buffer. In response to determining that the target location is not within the boundaries of the buffer, the optional command device may determine that the write optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the write optional command based on the condition in the write optional no data response condition field that the target location is not within the boundaries of the buffer.

[0132] In some embodiments, the optional command device can calculate the cost of implementing a write optional command. This cost can be calculated based on the cost of any number and combination of operations involved in implementing the write optional command. Such operations can include write operations, memory management operations, memory coherence operations, etc. For example, the cost can be measured based on any number and combination of power, time, cycle time, bandwidth, resource requirements, latency impact on other operations, etc. The optional command device can compare the calculated cost of implementing the write optional command with a cost threshold. The optional command device can determine whether the cost of implementing the write optional command exceeds the cost threshold. In response to determining that the cost of implementing the write optional command exceeds the cost threshold, the optional command device can determine that the write optional command may not be implemented. In some embodiments, the optional command device can determine not to implement the write optional command based on the condition in the write optional no-data response condition field that the cost of implementing the write optional command exceeds the cost threshold. In some embodiments, the condition in the write optional no-data response condition field can include a value indicating a value of the cost threshold.

[0133] In some embodiments, the optional command device may determine that implementing the write optional command may result in an exception, error, and / or failure. In response to determining that implementing the write optional command may result in an exception, error, and / or failure, the optional command device may determine that the write optional command may not be implemented. Not implementing the write optional command may avoid the exceptions, errors, and / or failures that would result from implementing the write optional command. In some embodiments, the optional command device may determine not to implement the write optional command based on the condition in the write optional no data response condition field that implementing the write optional command may result in an exception, error, and / or failure.

[0134] In some embodiments, the optional command device may determine that implementing the write optional command may violate a security protocol. For example, the optional command device may determine that implementing the write optional command may violate a security protocol based on denying access to a target location. In response to determining that implementing the write optional command may violate a security protocol, the optional command device may determine that the write optional command may not be implemented. In some embodiments, the optional command device may determine not to implement the write optional command based on the condition in the write optional no data response condition field that access to the requested target data and / or location is denied.

[0135] In response to determining that a read optional command and / or a write optional command may not be implemented (i.e., determination box 908 = "No"), the optional command device may manage unsuccessful read optional commands or / or unsuccessful write optional commands in box 910. In some embodiments, the optional command terminal device may manage unsuccessful optional commands in box 910. In some embodiments, the read optional terminal device may manage unsuccessful read optional commands in box 910. In some embodiments, the write optional terminal device may manage unsuccessful write optional commands in box 910. References herein Figure 10 Method 1000 further describes the management of unsuccessful read optional commands and / or unsuccessful write optional commands.

[0136] In box 912, the optional command device can transmit a read optional no-data response (e.g., Figure 4 In the read optional no data response 410) and / or write optional no data response (e.g., Figure 5 In some embodiments, the optional command terminal device may transmit an optional no data response in block 912. In some embodiments, the optional read terminal device may transmit a read optional no data response in block 912. In some embodiments, the optional write terminal device may transmit a write optional no data response in block 912. The optional command device may transmit a read optional no data response to an optional command device (such as a read optional request device). The optional command device may transmit a write optional no data response to an optional command device (such as a write optional request device).

[0137] In block 914, the optional command device may receive a read optional no data response and / or a write optional no data response. In some embodiments, the optional command request device may receive a read optional no data response in block 914. In some embodiments, the read optional request device may receive a read optional no data response in block 914. In some embodiments, the write optional request device may receive a write optional no data response in block 914.

[0138] In block 916, the optional command device can manage read optional no data response and / or write optional no data response. In some embodiments, the optional command request device can manage read optional no data response in block 916. In some embodiments, the read optional request device can manage read optional no data response in block 916. In some embodiments, the write optional request device can manage write optional no data response in block 916. References herein Figure 11A Method 1100a and Figure 11B Method 1100b further describes the management of optional no-data response for reads and / or optional no-data response for writes.

[0139] In response to determining that a read optional command and / or a write optional command can be implemented (i.e., determination box 908 = "Yes"), the optional command device can execute a successful read optional command and / or a successful write optional command in box 918. In some embodiments, the optional command terminal device can implement a successful optional command in box 918. In some embodiments, the read optional terminal device can implement a successful read optional command in box 918. In some embodiments, the write optional terminal device can implement a successful write optional command in box 918. In some embodiments, implementing a successful read optional command can include returning the target data of the read optional command to the optional command device. In some embodiments, implementing a successful write optional command can include writing the target data of the write optional command to the optional command device or another device to which the optional command device can pass the write optional command.

[0140] Figure 10 A method 1000 for managing unsuccessful read and / or write optional commands, according to one embodiment, is shown. (Reference) Figures 1-10 Method 1000 can be used in computing devices (e.g., Figure 1 In a computing device 100, the processor may be configured in hardware, software executed in a processor, or a combination of a processor and dedicated hardware configured in software (e.g., Figure 1 The CPU 104, memory 106, communication interface 108, memory interface 110, peripheral device interface 120, and processor 124 are included. Figure 2 The system includes a system hub 200, a system cache 202, a cache controller 204, a protocol converter 208, processors 206, 210, 212, and 214, a memory interface 216, subsystems 218, 220, 222, 232, and 234, a NoC 224, and a memory controller 226. Figure 3 The processors in the series are: processor 300, processor cores 302, 304, 306, 308, processor core caches 310, 312, 314, 316, shared processor core caches 320, 322, shared processor cache 320, and shared system cache 340. Figure 4 and Figures 6-8 Read optional request device 400 in Figure 4 , Figure 6 and Figure 7 Read optional terminal device 402 in the middle Figure 5 and Figure 8 Write optional request device 500, Figure 5 Write to optional terminal device 502, Figure 8This is implemented using a read / write optional terminal device 800. To include alternative configurations enabled in various embodiments, the hardware implementing method 1000 is referred to herein as an "optional command device". In some embodiments, method 1000 can be implemented as... Figure 9 Part of box 910 in the method. Figure 10 In the example shown, the boxes and lines indicated by dashed lines are part of method 1000, which may optionally be included in any combination.

[0141] In optional box 1002, the optional command device can interpret and read optional commands (e.g., Figure 4 The optional read command 408) and / or optional write command (e.g., Figure 5 The optional command 510 in the document reads the optional terminal device ID, reads the optional no data response condition, writes the optional terminal device ID, and / or writes the optional no data response condition. In some embodiments, the optional command terminal device may interpret the optional terminal device ID and / or the optional no data response condition of the read optional command in block 1002. In some embodiments, the optional terminal device may interpret the optional terminal device ID and / or the optional no data response condition of the read optional command in block 1002. In some embodiments, the optional terminal device may interpret the optional terminal device ID and / or the optional no data response condition of the write optional command in block 1002. As described herein, in some embodiments, the read optional command may include a read optional terminal device ID field configured to indicate which or which of the read optional terminal devices can utilize the read optional no data response (e.g., ...). Figure 4 The optional read response (410) responds to the optional read command. In some embodiments, the optional read command may include a optional read response condition field configured to indicate one or more conditions that the optional read terminal device may utilize to respond to the optional read command. In some embodiments, the optional read terminal device ID and / or the optional read response condition may be inherent to the optional read command and may not need to be explicitly added as values ​​to the optional read terminal device ID field and / or the optional read response condition field. For example, the conditions indicated in the optional read response condition field and / or the conditions inherent to the optional read command may include the optional command device not locating the requested data, the requested data exceeding the boundary for the buffer, the cost of implementing the optional read command exceeding a cost threshold, the implementation of the optional read command causing an exception, error, and / or failure, access to the requested location and / or target data being denied, etc.

[0142] As described herein, in some embodiments, a write-optional command may include a write-optional terminal device ID field, which is configured to indicate which write-optional terminal(s) can utilize a write-optional no-data response (e.g., ...). Figure 5 The write optional no data response (516) is used in response to a write optional command. In some embodiments, the write optional command may include a write optional no data response condition field configured to indicate one or more conditions that the write optional terminal device may utilize to respond to the write optional command. In some embodiments, the write optional terminal device ID and / or write optional no data response conditions may be inherent to the write optional command and may not need to be explicitly added as values ​​to the write optional terminal device ID field and / or write optional no data response condition field. For example, the conditions indicated in the write optional no data response condition field and / or the conditions inherent to the write optional command may include the requested data write location being unavailable for writing by the optional command device, the requested data write location being outside the boundaries of the buffer, the cost of implementing the write optional command exceeding a cost threshold, implementing the write optional command resulting in an exception, error, and / or failure, or access to the requested location being denied, etc.

[0143] In optional determination block 1004, the optional command device may determine whether it is a read optional command terminal device and / or a write optional command terminal device. In some embodiments, the optional command terminal device may determine whether it is an optional terminal device in optional determination block 1004. In some embodiments, the read optional terminal device may determine whether it is a read optional terminal device in optional determination block 1004. In some embodiments, the write optional terminal device may determine whether it is a write optional terminal device in optional determination block 1004. In some embodiments, the optional command device may determine whether it is a read optional command terminal device and / or a write optional command terminal device based on the interpretation of the read optional terminal device ID and / or write optional terminal device ID in block 1002. In some embodiments, optional determination block 1004 may respond to determining that the read optional command and / or write optional command may not be implemented (i.e., Figure 9 The optional determination box 908 in the method is set to "No". In some embodiments, optional determination box 1004 may be implemented after interpreting optional terminal device ID, optional no data response condition, optional terminal device ID and / or optional no data response condition in optional box 1002. In some embodiments, optional determination box 1004 may be implemented in response to determining that optional no data response condition and / or optional no data response condition are met (e.g., optional determination box 1006 is set to "Yes"), as described below.

[0144] In optional determination block 1006, the optional command device may determine whether a read optional no data response condition and / or a write optional no data response condition are met. In some embodiments, the optional command terminal device may determine whether an optional no data response condition is met in optional determination block 1006. In some embodiments, the read optional terminal device may determine whether a read optional no data response condition is met in optional determination block 1006. In some embodiments, the write optional terminal device may determine whether a write optional terminal no data response condition is met in optional determination block 1006. In some embodiments, the optional command device may determine whether a read optional no data response condition and / or a write optional no data response condition are met based on the interpretation of the read optional no data response condition and / or write optional no data response condition in block 1002. In some embodiments, optional determination block 1006 may respond to determining that a read optional command and / or a write optional command may not be implemented (i.e., Figure 9 The optional determination box 908 in the method is set to "No". In some embodiments, optional determination box 1006 may be implemented after interpreting optional terminal device ID, optional no data response condition, optional terminal device ID and / or optional no data response condition in optional box 1002. In some embodiments, optional determination box 1004 may be implemented in response to determining that the optional command device is a read optional command terminal device and / or write optional command terminal device (i.e., optional determination box 1004 = "Yes").

[0145] In some embodiments, the optional command device may examine an address field of a read optional command configured to indicate the target data and / or location of the read optional command. The optional command device may determine whether the target data is at the indicated location. In response to determining that the target data is not at the indicated location, the optional command device may determine that a read optional no data response condition is met. In some embodiments, the optional command device may determine that a read optional no data response condition is met based on the condition in the read optional no data response condition field that the target data is not at that location.

[0146] In some embodiments, the optional command device may examine the address field of a read optional command configured to indicate the target data and / or location of the read optional command. The optional command device may determine whether the indicated location of the target data is within the boundaries of the buffer. In response to determining that the indicated location of the target data is not within the boundaries of the buffer, the optional command device may determine that a read optional no data response condition is met. In some embodiments, the optional command device may determine that a read optional no data response condition is met based on the condition in the read optional no data response condition field that the indicated location of the target data is not within the boundaries of the buffer.

[0147] In some embodiments, the optional command device can calculate the cost of implementing a read optional command. This cost can be calculated based on the cost of any number and combination of operations involved in implementing the read optional command. Such operations can include read operations, fetch operations, memory management operations, memory coherence operations, etc. For example, the cost can be measured based on any number and combination of power, time, cycle time, bandwidth, resource requirements, latency impact on other operations, etc. The optional command device can compare the calculated cost of implementing the read optional command with a cost threshold. The optional command device can determine whether the cost of implementing the read optional command exceeds the cost threshold. In response to determining that the cost of implementing the read optional command exceeds the cost threshold, the optional command device can determine that a read optional no-data response condition is met. In some embodiments, the optional command device can determine that the read optional no-data response condition is met based on the condition in the read optional no-data response condition field that the cost of implementing the read optional command exceeds the cost threshold. In some embodiments, the condition in the read optional no-data response condition field can include a value indicating a value of the cost threshold.

[0148] In some embodiments, the optional command device may determine that executing a read optional command may result in an exception, error, and / or failure. In response to determining that executing a read optional command may result in an exception, error, and / or failure, the optional command device may determine that a read optional no-data response condition is met. In some embodiments, the optional command device may determine that a read optional no-data response condition is met based on the condition in the read optional no-data response condition field that executing a read optional command may result in an exception, error, and / or failure.

[0149] In some embodiments, the optional command device may determine that executing a read optional command may violate a security protocol. For example, the optional command device may determine that implementing a read optional command may violate a security protocol based on denying access to target data and / or a location in memory. In response to determining that implementing a read optional command may violate a security protocol, the optional command device may determine that a read optional no-data response condition is met. In some embodiments, the optional command device may determine that a read optional no-data response condition is met based on the condition in the read optional no-data response condition field being that access to the requested target data and / or location is denied.

[0150] In some embodiments, the optional command device may examine the address field of a write optional command configured to indicate the target location of the write optional command. The optional command device may determine whether the target location is available for writing. In response to determining that the target location is not available for writing, the optional command device may determine that a write optional no-data response condition is met. In some embodiments, the optional command device may determine that a write optional no-data response state is met based on the condition in the write optional no-data response condition field that the target location is not available for writing.

[0151] In some embodiments, the optional command device may examine the address field of a write optional command configured to indicate the target location of the write optional command. The optional command device may determine whether the target location is within the boundaries of the buffer. In response to determining that the target location is not within the boundaries of the buffer, the optional command device may determine that a write optional no-data response condition is met. In some embodiments, the optional command device may determine that a write optional no-data response condition is met based on the condition in the write optional no-data response condition field that the target location is not within the boundaries of the buffer.

[0152] In some embodiments, the optional command device can calculate the cost of implementing a write optional command. This cost can be calculated based on the cost of any number and combination of operations that implement the write optional command. Such operations can include write operations, memory management operations, memory coherence operations, etc. For example, the cost can be measured based on any number and combination of power, time, cycle time, bandwidth, resource requirements, latency impact on other operations, etc. The optional command device can compare the calculated cost of implementing the write optional command with a cost threshold. The optional command device can determine whether the cost of implementing the write optional command exceeds the cost threshold. In response to determining that the cost of implementing the write optional command exceeds the cost threshold, the optional command device can determine that a write optional no-data response condition is met. In some embodiments, the optional command device can determine that the write optional no-data response condition is met based on the condition in the write optional no-data response condition field that the cost of implementing the write optional command exceeds the cost threshold. In some embodiments, the condition in the write optional no-data response condition field can include a value indicating a value of the cost threshold.

[0153] In some embodiments, the optional command device may determine that implementing the write optional command may result in an exception, error, and / or failure. In response to determining that implementing the write optional command may result in an exception, error, and / or failure, the optional command device may determine that a write optional no-data response condition is met. In some embodiments, the optional command device may determine that the write optional no-data response condition is met based on the condition in the write optional no-data response condition field that implementing the write optional command may result in an exception, error, and / or failure.

[0154] In some embodiments, the optional command device may determine that implementing the write optional command may violate a security protocol. For example, the optional command device may determine that implementing the write optional command may violate a security protocol based on denying access to a target location. In response to determining that implementing the write optional command may violate a security protocol, the optional command device may determine that a write optional no data response condition is met. In some embodiments, the optional command device may determine that the write optional no data response condition is met based on the condition in the write optional no data response condition field being that access to the requested target data and / or location is denied.

[0155] In box 1008, the optional command device can generate a read optional no-data response (e.g., Figure 4 Read optional no data response 410) and / or write optional no data response ( Figure 5 (Write optional no data response 516 in block 1008). In some embodiments, the optional command terminal device may generate an optional no data response in block 1008. In some embodiments, the read optional terminal device may generate a read optional no data response in block 1008. In some embodiments, the write optional terminal device may generate a write optional no data response in block 1008. As described herein, a read optional no data response may include a read optional no data response field configured to indicate the type of response. In some embodiments, a read optional no data response may include a read optional no data response terminal device ID field configured to indicate which read optional terminal device utilizes the read optional no data response in response to a read optional command. In some embodiments, a read optional no data response may include a read optional no data response condition field configured to indicate a condition under which a read optional terminal device utilizes the read optional no data response in response to a read optional command. In some embodiments, the operation in block 1008 may be in response to determining that a read optional command and / or a write optional command may not be implemented (i.e., refer to...). Figure 9 The method described in 900 is implemented by determining that the optional command device is a read optional command terminal device and / or a write optional command terminal device (i.e., optional determining box 1004 = "Yes"), or by determining that the read optional no data response condition and / or the write optional no data response condition is met (e.g., optional determining box 1006 = "Yes").

[0156] As described herein, a write optional no data response may include a write optional no data response field configured to indicate the response type. In some embodiments, a write optional no data response may include a write optional no data response terminal device ID field configured to indicate which write optional terminal device responded to the write optional command using a write optional no data response. In some embodiments, a write optional no data response may include a write optional no data response condition field configured to indicate a condition under which the write optional terminal device responded to the write optional command using a write optional no data response. The optional command device may... Figure 9 In method 900, block 912 transmits a read optional no data response and / or a write optional no data response. In some embodiments, as part of generating a read optional no data response and / or a write optional no data response in block 1008 and / or transmitting a read optional no data response or a write optional no data response in block 912, the optional command device may terminate the read optional command and / or the write optional command. By terminating the read optional command and / or the write optional command, the optional command device can prevent the optional command from being forwarded to devices along the transaction path.

[0157] In response to determining that the optional command device is not a read optional command terminal device and / or a write optional command terminal device (i.e., optional determination box 1004 = "No"), or in response to determining that the read optional no-data response condition and / or write optional no-data response condition are not met (e.g., optional determination box 1006 = "No"), the optional command device may convert the read optional command and / or write optional command into a read command and / or write command in optional box 1010. In some embodiments, the read command and / or write command may be a regular read command and / or a regular write command. To convert the read optional command and / or write optional command, the optional command device may use information from the read optional command and / or write optional command that corresponds to the data required by the read command and / or write command to generate the read command and / or write command. Optional box 1010 may be implemented by an optional terminal device, for example, for devices further along the transaction path for which the read optional command and / or write optional command may not be applicable, may not be supported, etc. In some embodiments, as part of converting a read optional command and / or a write optional command into a read command and / or a write command in optional block 1010, the optional command device may terminate the read optional command or the write optional command. By terminating the read optional command and / or the write optional command, the optional command device can prevent the optional command from being forwarded to devices along the transaction path. In some embodiments, the optional command terminal device may convert an optional command into a command in optional block 1010. In some embodiments, the read optional terminal device may convert a read optional command into a read command in optional block 1010. In some embodiments, the write optional terminal device may convert a write optional command into a write command in block 1010.

[0158] In optional block 1012, the optional command device may forward read commands and / or write commands along the transaction path of read optional commands and / or write optional commands in block 1010. In some embodiments, the read commands and / or write commands may be read optional commands and / or write optional commands. In some embodiments, the read commands and / or write commands may be regular read commands and / or regular write commands converted from read optional commands and / or write optional commands in optional block 1010. In some embodiments, the optional command terminal device may forward commands along the transaction path of optional commands in block 1012. In some embodiments, the read optional terminal device may forward read commands along the transaction path of read optional commands in block 1012. In some embodiments, the write optional terminal device may forward write commands along the transaction path of write optional commands in block 1012. In some embodiments, optional block 1012 may be implemented in response to determining that the optional command device is not a read optional command terminal device and / or a write optional command terminal device (i.e., optional determination block 1004 = "No"). In some embodiments, optional block 1012 may be implemented in response to determining that a read optional no data response condition and / or a write optional no data response condition are not met (e.g., optional determination block 1006 = "No"). In some embodiments, optional block 1012 may be implemented after the read optional command and / or write optional command are converted into read command and / or write command in optional block 1010. In some embodiments, the optional command device may be Figure 9 In block 906 of method 900, a read optional command and / or a write optional command may be received. In some embodiments, the device may further along the transaction path receive regular read commands and / or regular write commands, and respond in a known manner to receiving regular read commands and / or regular write commands.

[0159] Figure 11A and Figure 11B Methods 1100a and 1100b for managing read optional no-data responses and / or write optional no-data responses according to one embodiment are shown. Reference Figures 1-11B Methods 1100a and 1100b can be used in computing devices (e.g., Figure 1 In a computing device 100, the processor may be configured in hardware, software executed in a processor, or a combination of a processor and dedicated hardware configured in software (e.g., Figure 1 The CPU 104, memory 106, communication interface 108, memory interface 110, peripheral device interface 120, and processor 124 are included. Figure 2The system includes a system hub 200, a system cache 202, a cache controller 204, a protocol converter 208, processors 206, 210, 212, and 214, a memory interface 216, subsystems 218, 220, 222, 232, and 234, a NoC 224, and a memory controller 226. Figure 3 The processors in the series are: processor 300, processor cores 302, 304, 306, 308, processor core caches 310, 312, 314, 316, shared processor core caches 320, 322, shared processor cache 320, and shared system cache 340. Figure 4 and Figures 6-8 Read optional request device 400 in Figure 4 , Figure 6 and Figure 7 Read optional terminal device 402 in the middle Figure 5 and Figure 8 Write optional request device 500, Figure 8 This is implemented using a read / write optional terminal device 800. To include alternative configurations enabled in various embodiments, the hardware implementing methods 1100a and 1100b is referred to herein as an "optional command device". In some embodiments, methods 1100a and 1100b can be implemented as... Figure 9 It is part of box 916 in the method. Figure 11A In the example shown, the boxes and lines indicated by dashed lines are part of method 1100a, which may optionally be included in any combination.

[0160] Referring to method 1100a, in block 1102, the optional command device can interpret the read optional no-data response (e.g., Figure 4 In the read optional no data response 410) and / or write optional no data response (e.g., Figure 5 In some embodiments, the optional command request device may interpret the optional no data response in block 1102. In some embodiments, the optional read request device may interpret the optional read no data response in block 1102. In some embodiments, the optional write request device may interpret the optional write no data response in block 1102. As described herein, the optional read no data response may be an acceptable state of the optional command device, such as an "OK" state, rather than an error or fault state triggered by an error or fault signal indicating a failure of a memory access request. The optional read command is not implemented (e.g., Figure 4The read optional command (408) can be in an acceptable state because, for example, even if implementing the read optional command is critical, its implementation may be unnecessary. Thus, not implementing the read optional command may not be an error or fault state triggered by an error or fault signal, which can be configured to indicate a lack of implementation, incomplete implementation, inappropriate implementation, etc., of the required memory access. The optional command device can be configured to retry and / or abandon the read optional command in response. In some embodiments, the optional command device may be pre-configured on how to respond to a read optional command no data response. In some embodiments, the optional command request device may determine how to respond to an optional command no data response. A read optional no data response may include a read optional no data response field configured to indicate the type of response. In some embodiments, a read optional no data response may include a read optional no data response terminal device ID field configured to indicate which read optional terminal device utilizes the read optional no data response in response to the read optional command. In some embodiments, a read optional no data response may include a read optional no data response condition field configured to indicate the conditions under which the read optional terminal device utilizes the read optional no data response in response to the read optional command.

[0161] As described herein, a write-optional no-data response can be an acceptable state of the optional command device, such as an "OK" state, rather than an error or fault state triggered by an error or fault signal indicating a failed memory access request. Write-optional commands are not implemented (e.g., Figure 5The write optional command (510) can be in an acceptable state because, for example, even if implementing the write optional command is critical, its implementation may be unnecessary. Thus, not implementing the write optional command may not be an error or fault state triggered by an error or fault signal, which can be configured to indicate a lack of implementation, incomplete implementation, inappropriate implementation, etc., of the required memory access. The optional command device can be configured to retry and / or abandon the write optional command in response. In some embodiments, the optional command device may be pre-configured on how to respond to a write optional command no data response. In some embodiments, the optional command request device may determine how to respond to a write optional command no data response. A write optional no data response may include a write optional no data response field configured to indicate the type of response. In some embodiments, a write optional no data response may include a write optional no data response terminal device ID field configured to indicate which write optional terminal device utilized the write optional no data response in response to the write optional command. In some embodiments, a write optional no data response may include a write optional no data response condition field configured to instruct a write optional terminal device to respond to a write optional command with a write optional no data response.

[0162] In optional box 1104, the optional command device can wait for the read optional command to be reissued (e.g., Figure 4 The optional read command 408) and / or optional write command (e.g., Figure 5 In some embodiments, the optional command requesting device may wait in block 1104 for the optional command to be reissued. In some embodiments, the optional command requesting device may wait in block 1104 for the optional read command to be reissued. In some embodiments, the optional write requesting device may wait in block 1104 for the optional write command to be reissued. In some embodiments, the units and number of units to wait for may be predetermined. In some embodiments, the units and number of units to wait for may be determined based on the interpretation of the optional read no data response and / or optional write no data response in block 1102. The optional command device may... Figure 9 In method 900, box 902 generates read optional commands and / or write optional commands.

[0163] Referring to method 1100b, in block 1102, the optional command device can interpret a read optional no-data response (e.g., Figure 4 In the read optional no data response 410) and / or write optional no data response (e.g., Figure 5 Writes can have no data response (516), as referenced in this document. Figure 11AThe method 1100a is described in block 1102. In block 1106, the optional command device may abandon reading optional commands (e.g., Figure 4 The optional read command 408) and / or optional write command (e.g., Figure 5 (Write optional command 510 in the context of the optional command). In some embodiments, the optional command requesting device may abandon the optional command in block 1106. In some embodiments, the read optional requesting device may abandon the read optional command in block 1106. In some embodiments, the write optional command device may abandon the write optional command in block 1106. In some embodiments, the optional command device may abandon the read optional command or write optional command by taking no action (such as by not re-issuing the read optional command and / or write optional command). In some embodiments, the optional command device may abandon the read optional command and / or write optional command by taking a positive action (such as by removing the read optional command or write optional command from the schedule and / or queue). In some embodiments, for read optional commands and / or write optional commands generated on behalf of instructions, the instructions may read optional no data response and / or write optional no data based on the ISA record, which may include writing values ​​to registers, status bits, or other signaling mechanisms.

[0164] According to various embodiments (including but not limited to the above references) Figures 1-11B The read-optional command system and / or write-optional command system of the described embodiments can be implemented in various computing systems, including mobile computing devices, and examples of these suitable for use with various embodiments are shown in Figure 12 As shown in the diagram, the mobile computing device 1200 may include a processor 1202 coupled to a touchscreen controller 1204 and internal memory 1206. The processor 1202 may be one or more multi-core integrated circuits designated for general or specific processing tasks. The internal memory 1206 may be volatile or non-volatile memory, and may also be secure and / or encrypted memory, or insecure and / or unencrypted memory, or any combination thereof. Examples of memory types that may be utilized include, but are not limited to, DDR, LPDDR, GDDR, WIDEIO, RAM, SRAM, DRAM, P-RAM, R-RAM, M-RAM, STT-RAM, and embedded DRAM. The touchscreen controller 1204 and processor 1202 may also be coupled to a touchscreen panel 1212, such as a resistive-sensing touchscreen, a capacitive-sensing touchscreen, an infrared-sensing touchscreen, etc. Furthermore, the display of the mobile computing device 1200 does not need to have touchscreen capability.

[0165] Mobile computing device 1200 may have one or more radio transceivers 1208 (e.g., Peanut, Bluetooth, ZigBee, Wi-Fi, RF radio) and antennas 1210 coupled to each other and / or coupled to processor 1202 for transmitting and receiving communications. The transceivers 1208 and antennas 1210 can be used with the circuitry described above to implement various wireless transmission protocol stacks and interfaces. Mobile computing device 1200 may include a cellular wireless modem chip 1216 coupled to the processor, enabling communication via a cellular network.

[0166] Mobile computing device 1200 may include a peripheral device interface 1218 coupled to processor 1202. Peripheral device interface 1218 may be configured individually to accept one type of connection, or it may be configured to accept various types of physical and communication connections (public or proprietary), such as Universal Serial Bus (USB), FireWire, Thunderbolt, or PCIe. Peripheral device interface 1218 may also be coupled to a similarly configured peripheral device connection port (not shown).

[0167] Mobile computing device 1200 may also include a speaker 1214 for providing audio output. Mobile computing device 1200 may also include a housing made of plastic, metal, or a combination of materials for housing all or some of the components described herein. Mobile computing device 1200 may include a power supply 1222, such as a disposable or rechargeable battery, coupled to processor 1202. The rechargeable battery may also be coupled to a peripheral device connection port for receiving charging current from a source outside mobile computing device 1200. Mobile computing device 1200 may also include a physical button 1224 for receiving user input. Mobile computing device 1200 may also include a power button 1226 for turning mobile computing device 1200 on and off.

[0168] According to various embodiments (including but not limited to the above references) Figures 1-11B The read-optional command system and / or write-optional command system described in the embodiments can be implemented in various computing systems, including a laptop computer 1300, examples of which are as follows: Figure 13As shown. Many laptop computers include a touchpad touch surface 1317 that serves as a pointing device for the computer and can therefore receive drag, scroll, and flick gestures similar to those implemented on computing devices equipped with touchscreen displays as described above. Laptop computer 1300 typically includes a processor 1302 coupled to volatile memory 1312 and a disk drive 1313 containing mass non-volatile memory such as flash memory. Furthermore, laptop computer 1300 may have one or more antennas 1308 for transmitting and receiving electromagnetic radiation, which may be connected to a wireless data link and / or cellular transceiver 1316 coupled to processor 1302. Computer 1300 may also include a floppy disk drive 1314 and an optical disc (CD) drive 1315 coupled to processor 1302. In a laptop configuration, the computer housing includes a touchpad 1317, a keyboard 1318, and a display 1319, all of which are coupled to processor 1302. Other configurations of the computing device may include a computer mouse or trackball coupled to the processor (e.g., via USB input), which is well known and can also be used in various embodiments.

[0169] According to various embodiments (including but not limited to the above references) Figures 1-11B The read-optional command system and / or write-optional command system described in the embodiments can also be implemented in fixed computing systems, such as any of the various commercially available servers. Figure 14 Example server 1400 is shown. Such a server 1400 typically includes one or more multi-core processor components 1401 coupled to volatile memory 1402 and mass non-volatile memory (such as disk drives 1404). Figure 14 As shown, a multi-core processor component 1401 can be added to server 1400 by inserting it into a rack. Server 1400 may also include a floppy disk drive, compact disc (CD), or digital multifunction disc (DVD) drive 1406 coupled to processor 1401. Server 1400 may also include a network access port 1403 coupled to multi-core processor component 1401 to establish a network interface connection with network 1405, such as a local area network, the Internet, public switched telephone network, and / or cellular data network (e.g., CDMA, TDMA, GSM, PCS, 3G, 4G, LTE, 5G, or any other type of cellular data network) coupled to other broadcast system computers and servers.

[0170] Computer program code or "program code" for execution on a programmable processor to perform operations of various embodiments can be written in a high-level programming language, such as C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, Structured Query Language (e.g., Transact-SQL), Perl, or various other programming languages. The program code or program stored on a computer-readable storage medium as used in this application can refer to machine language code (such as object code) whose format is understandable by a processor.

[0171] The above method descriptions and process flow diagrams are provided as illustrative examples only and are not intended to require or imply that the operations of the various embodiments must be performed in the order shown. Those skilled in the art will understand that the operations in the above-described order in the foregoing embodiments can be performed in any order. Words such as “afterward,” “then,” and “next” are not intended to limit the order of operations; these words are merely used to guide the reader in understanding the description of the method. Furthermore, any reference to a singular claim element, such as the use of the articles “a,” “an,” or “the,” should not be construed as limiting that element to the singular form.

[0172] The various illustrative logic blocks, modules, circuits, and algorithmic operations described in conjunction with the various embodiments can be implemented as electronic hardware, computer software, or a combination of both. To clearly illustrate this interchangeability between hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described above in general terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the system as a whole. Those skilled in the art can implement the described functionality in different ways for each specific application, but such implementation decisions should not be construed as causing a departure from the scope of the claims.

[0173] Hardware used to implement the various illustrative logics, logic blocks, modules, and circuits described in conjunction with the embodiments disclosed herein may be implemented or executed by a general-purpose processor, digital signal processor (DSP), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. The general-purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors combined with a DSP core, or any other such configuration. Alternatively, certain operations or methods may be performed by a circuit system specific to a given function.

[0174] In one or more embodiments, the above-described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or a non-transitory processor-readable medium. The operation of the methods or algorithms disclosed herein may be embodied in a processor-executable software module that may reside on a non-transitory computer-readable or processor-readable storage medium. A non-transitory computer-readable or processor-readable storage medium may be any storage medium accessible by a computer or processor. By way of example, but not limitation, such a non-transitory computer-readable or processor-readable medium may include RAM, ROM, EEPROM, flash memory, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessible by a computer. As used herein, disks and optical discs include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, wherein disks typically magnetically reproduce data, while optical discs optically reproduce data using lasers. Combinations of the foregoing are also included within the scope of non-transitory computer-readable and processor-readable media. Furthermore, the operation of a method or algorithm may reside as one or any combination or set of code and / or instructions on a non-transitory processor-readable medium and / or computer-readable medium that may be incorporated into a computer program product.

[0175] The foregoing description of the disclosed embodiments is intended to enable those skilled in the art to make or use the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and implementations without departing from the scope of the claims. Therefore, this disclosure is not intended to limit itself to the embodiments and implementations described herein, but should be given the widest scope consistent with the following claims and the principles and novel features disclosed herein.

Claims

1. A method executed in a processor of a computing device, comprising: Request the device to receive optional commands from the optional command request; Determine whether the optional command can be implemented; Terminate the optional command in response to determining that the optional command cannot be fulfilled, wherein terminating the optional command includes preventing the optional command from being forwarded to devices along the optional command transaction path; as well as In response to determining that the optional command cannot be implemented, the optional command request device transmits an optional command no data response.

2. The method according to claim 1, further comprising: In response to determining that the optional command cannot be implemented, a no-data response for the optional command is generated.

3. The method according to claim 1, further comprising: Determine whether a component of the computing device receiving the optional command is an optional command terminal device; as well as In response to determining that the component of the computing device receiving the optional command is an optional command terminal device, a no-data response for the optional command is generated.

4. The method according to claim 3, further comprising: The optional command terminal device ID field of the optional command is interpreted, wherein determining whether the component of the computing device receiving the optional command is an optional command terminal device is based on interpreting the optional command terminal device ID field.

5. The method according to claim 1, further comprising: Determine if the condition for no data response for the optional command is met; as well as In response to the determination that the optional command has no data response condition is met, a no data response for the optional command is generated.

6. The method according to claim 5, further comprising: The optional command no data response condition field of the optional command is interpreted, wherein determining whether the optional command no data response condition is satisfied is based on interpreting the optional command no data response condition field.

7. The method of claim 1, wherein transmitting the optional command no-data response comprises transmitting the optional command no-data response by the optional command terminal device. The method further includes: No data response was received from the optional command terminal device. as well as If no data response is received for the optional command, the optional command is reissued.

8. The method of claim 1, wherein transmitting the optional command no-data response comprises transmitting the optional command no-data response by the optional command terminal device. The method further includes: No data response was received from the optional command terminal device. as well as The optional command is abandoned in response to receiving no data response.

9. The method of claim 1, wherein the optional command includes an optional command terminal device ID field, the optional command terminal device ID field being configured to indicate at least one optional command terminal device, the at least one optional command terminal device being allowed to respond to the optional command with an optional command no data response.

10. The method of claim 1, wherein the optional command includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate at least one condition for responding to the optional command using an optional command no data response.

11. The method of claim 1, wherein the optional command no data response includes an optional command no data response terminal device ID field, the optional command no data response terminal device ID field being configured to indicate the optional command terminal device transmitting the optional command no data response.

12. The method of claim 1, wherein the optional command no data response includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate that an optional command no data response condition for transmitting the optional command no data response is met.

13. The method of claim 1, wherein terminating the optional command comprises: Convert the optional command into a regular command; as well as The regular command is forwarded to the device along the optional command transaction path.

14. The method of claim 1, further comprising: The optional command is generated by the optional command request device; as well as The optional command is transmitted along the optional command transaction path.

15. The method of claim 1, wherein determining whether the optional command can be implemented includes determining whether the optional command can be implemented based on at least one of the following: the requested data is lost, the requested data exceeds the boundary for the buffer, the cost of implementing the optional command exceeds a cost threshold, the implementation of the optional command results in an anomaly, error or failure, or access to the requested location or target data is denied.

16. A computing device, comprising: An optional command terminal device is configured with optional command terminal device executable instructions for performing operations including: Request the device to receive optional commands from the optional command request; Determine whether the optional command can be implemented; Terminate the optional command in response to determining that the optional command cannot be fulfilled, wherein terminating the optional command includes preventing the optional command from being forwarded to devices along the optional command transaction path; as well as In response to determining that the optional command cannot be implemented, the optional command request device transmits an optional command no data response.

17. The computing device of claim 16, wherein the optional command terminal device is configured to perform optional command terminal device executable instructions that further include the following operations: In response to determining that the optional command cannot be implemented, a no-data response for the optional command is generated.

18. The computing device of claim 16, wherein the optional command terminal device is configured to perform optional command terminal device executable instructions that further include the following operations: Determine whether the optional command terminal device receiving the optional command is an optional command terminal device; and In response to determining that the optional command terminal device receiving the optional command is an optional command terminal device, a no-data response for the optional command is generated.

19. The computing device of claim 18, wherein the optional command terminal device is configured to perform optional command terminal device executable instructions that further include the following operations: The optional command terminal device ID field of the optional command is interpreted, wherein determining whether the optional command device receiving the optional command is an optional command terminal device is based on interpreting the optional command terminal device ID field.

20. The computing device of claim 16, wherein the optional command terminal device is configured to perform optional command terminal device executable instructions that further include the following operations: Determine whether the condition for no data response for the optional command is met; and In response to the determination that the optional command has no data response condition is met, a no data response for the optional command is generated.

21. The computing device of claim 20, wherein the optional command terminal device is configured to perform optional command terminal device executable instructions that further include the following operations: The optional command no data response condition field is interpreted, wherein determining whether the optional command no data response condition is satisfied is based on the interpretation of the optional command no data response condition field.

22. The computing device of claim 16, further comprising the optional command requesting device, wherein the optional command requesting device is configured to perform optional command requesting device executable instructions including the following operations: No data response is received from the optional command terminal device; and If no data response is received for the optional command, the optional command is reissued.

23. The computing device of claim 16, further comprising the optional command requesting device, wherein the optional command requesting device is configured to perform optional command requesting device executable instructions including the following operations: No data response is received from the optional command terminal device; and The optional command is abandoned in response to receiving no data response.

24. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing operations such that the optional command includes an optional command terminal device ID field, the optional command terminal device ID field being configured to indicate at least one optional command terminal device, the at least one optional command terminal device being allowed to respond to the optional command with an optional command no-data response.

25. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing operations such that the optional command includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate at least one condition for responding to the optional command using an optional command no data response.

26. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing an operation that causes the optional command no data response to include an optional command no data response terminal device ID field, the optional command no data response terminal device ID field being configured to indicate the optional command terminal device transmitting the optional command no data response.

27. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing an operation that causes the optional command no data response to include an optional command no data response condition field, the optional command no data response condition field being configured to indicate that an optional command no data response condition for transmitting the optional command no data response is met.

28. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing operations that cause the optional command to be terminated, including: Convert the optional command into a regular command; as well as The regular command is forwarded to the device along the optional command transaction path.

29. The computing device of claim 16, further comprising the optional command requesting device, wherein the optional command requesting device is configured to perform optional command requesting device executable instructions including the following operations: Generate the optional command; and The optional command is transmitted along the optional command transaction path.

30. The computing device of claim 16, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing operations such that determining whether the optional command can be implemented includes determining whether the optional command can be implemented based on at least one of the following: lost requested data, requested data exceeding the boundary of the buffer, cost of implementing the optional command exceeding a cost threshold, implementation of the optional command resulting in an anomaly, error, or failure, or denial of access to the requested location or target data.

31. A computing device, comprising: A component used to receive optional commands from an optional command request device; A component used to determine whether the optional command can be implemented; A component for terminating an optional command in response to determining that the optional command cannot be fulfilled, wherein terminating the optional command includes preventing the optional command from being forwarded to devices along the optional command transaction path; as well as A component for requesting the optional command device to transmit a no-data response to the optional command in response to determining that the optional command cannot be fulfilled.

32. The computing device according to claim 31, further comprising: A component for generating a no-data response for an optional command in response to determining that the optional command cannot be implemented.

33. The computing device of claim 31, further comprising: A component of the computing device used to determine whether the optional command is a component of the optional command terminal device; as well as A component for generating a no-data response to the optional command in response to determining that the component of the computing device receiving the optional command is an optional command terminal device.

34. The computing device of claim 33, further comprising: A component for interpreting the optional command terminal device ID field of the optional command, wherein the component for determining whether the computing device receiving the optional command is an optional command terminal device is based on interpreting the optional command terminal device ID field.

35. The computing device of claim 31, further comprising: A component used to determine whether the condition of no data response for an optional command is met; as well as A component for generating a no-data response for the optional command in response to determining that the condition for no-data response for the optional command is met.

36. The computing device of claim 35, further comprising: The component for interpreting the optional command no data response condition field of the optional command includes a component for determining whether the optional command no data response condition is met based on interpreting the optional command no data response condition field.

37. The computing device of claim 31, further comprising: A component for receiving a no-data response from an optional command terminal device; as well as A component for re-issuing the optional command in response to receiving no data response to the optional command.

38. The computing device of claim 31, further comprising: A component for receiving a no-data response from an optional command terminal device; as well as A component for abandoning the optional command in response to receiving no data response.

39. The computing device of claim 31, wherein the optional command includes an optional command terminal device ID field, the optional command terminal device ID field being configured to indicate at least one optional command terminal device, the at least one optional command terminal device being allowed to respond to the optional command with an optional command no data response.

40. The computing device of claim 31, wherein the optional command includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate at least one condition for responding to the optional command using an optional command no data response.

41. The computing device of claim 31, wherein the optional command no data response includes an optional command no data response terminal device ID field, the optional command no data response terminal device ID field being configured to indicate the optional command terminal device transmitting the optional command no data response.

42. The computing device of claim 31, wherein the optional command no data response includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate that an optional command no data response condition for transmitting the optional command no data response is met.

43. The computing device of claim 31, wherein the component for terminating the optional command comprises: A component for converting the optional commands into regular commands; as well as A component for forwarding the regular commands to the device along the optional command transaction path.

44. The computing device of claim 31, further comprising: Components used to generate the optional commands; as well as A component used to transmit the optional command along the optional command transaction path.

45. The computing device of claim 31, wherein the optional command terminal device is configured with optional command terminal device executable instructions for performing operations such that determining whether the optional command can be implemented includes determining whether the optional command can be implemented based on at least one of the following: lost requested data, requested data exceeding the boundary of the buffer, cost of implementing the optional command exceeding a cost threshold, implementation of the optional command resulting in an anomaly, error or failure, or denial of access to the requested location or target data.

46. ​​A non-transitory processor-readable storage medium having processor-executable instructions stored thereon, the processor-executable instructions being configured to cause a processing device of a computing device to perform operations including: Request the device to receive optional commands from the optional command request; Determine whether the optional command can be implemented; Terminate the optional command in response to determining that the optional command cannot be fulfilled, wherein terminating the optional command includes preventing the optional command from being forwarded to devices along the optional command transaction path; as well as In response to determining that the optional command cannot be implemented, the optional command request device transmits an optional command no data response.

47. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: In response to determining that the optional command cannot be implemented, a no-data response for the optional command is generated.

48. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: Determine whether a component of the computing device receiving the optional command is an optional command terminal device; and In response to determining that the component of the computing device receiving the optional command is an optional command terminal device, a no-data response for the optional command is generated.

49. The non-transitory processor-readable storage medium of claim 48, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: The optional command terminal device ID field of the optional command is interpreted, wherein determining whether a component of the computing device receiving the optional command is an optional command terminal device is based on interpreting the optional command terminal device ID field.

50. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: Determine whether the condition for no data response for the optional command is met; and In response to the determination that the optional command has no data response condition is met, a no data response for the optional command is generated.

51. The non-transitory processor-readable storage medium of claim 50, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: The optional command no data response condition field is interpreted, wherein determining whether the optional command no data response condition is satisfied is based on the interpretation of the optional command no data response condition field.

52. The non-transitory processor-readable storage medium according to claim 46, wherein: The stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation that causes the transmission of the optional command without data response to include the transmission of the optional command without data response by the optional command terminal device; and The stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations including: No data response is received from the optional command terminal device; and If no data response is received for the optional command, the optional command is reissued.

53. The non-transitory processor-readable storage medium according to claim 46, wherein: The stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation that causes the transmission of the optional command without data response to include the transmission of the optional command without data response by the optional command terminal device; and The stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations including: No data response is received from the optional command terminal device; and The optional command is abandoned in response to receiving no data response.

54. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation such that the optional command includes an optional command terminal device ID field, the optional command terminal device ID field being configured to indicate at least one optional command terminal device, the at least one optional command terminal device being allowed to respond to the optional command with an optional command no-data response.

55. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation such that the optional command includes an optional command no-data response condition field, the optional command no-data response condition field being configured to indicate at least one condition for responding to the optional command with an optional command no-data response.

56. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation such that the optional command no data response includes an optional command no data response terminal device ID field, the optional command no data response terminal device ID field being configured to indicate the optional command terminal device transmitting the optional command no data response.

57. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation such that the optional command no data response includes an optional command no data response condition field, the optional command no data response condition field being configured to indicate that an optional command no data response condition for transmitting the optional command no data response is satisfied.

58. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform an operation that terminates the optional command including: Convert the optional command into a regular command; as well as The regular command is forwarded to the device along the optional command transaction path.

59. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations further comprising: Generate the optional command; and The optional command is transmitted along the optional command transaction path.

60. The non-transitory processor-readable storage medium of claim 46, wherein the stored processor-executable instructions are configured to cause the processing device of the computing device to perform operations such that determining whether the optional command can be implemented includes determining whether the optional command can be implemented based on at least one of the following: lost requested data, requested data exceeding the boundary of the buffer, cost of implementing the optional command exceeding a cost threshold, implementation of the optional command resulting in an anomaly, error or failure, or access to the requested location or target data being denied.

Citation Information

Patent Citations

  • Portable electric device

    US5365045A