To Macro-instruction Routine Patents (Class 712/242)
  • Patent number: 11941401
    Abstract: An apparatus includes a processor circuit that includes a return address stack circuit, a return prediction circuit, and a fetch control circuit. The return prediction circuit is configured to store, for previously accessed return addresses, fetch parameters for next fetch addresses. The fetch control circuit is configured to in response to a fetch of a call instruction, push a return address onto the return address stack circuit. In response to a fetch of a return instruction that corresponds to the call instruction, the fetch control circuit is further configured to retrieve the return address from the return address stack circuit, and to create, using the return address and fetch parameters retrieved from the return prediction circuit, a next fetch request to retrieve instructions subsequent to the return instruction.
    Type: Grant
    Filed: June 9, 2022
    Date of Patent: March 26, 2024
    Assignee: Apple Inc.
    Inventors: Pruthivi Vuyyuru, Ian D. Kountanis
  • Patent number: 11762566
    Abstract: An apparatus comprises processing circuitry to perform data processing in response to instructions, and memory access circuitry to perform a tag-guarded memory access operation in response to a target address. The tag-guarded memory access operation comprises comparing an address tag associated with the target address with a guard tag stored in a memory system in association with a block of one or more memory locations comprising an addressed location identified by the target address, and generating an indication of whether a match is detected between the guard tag and the address tag. The memory access circuitry determines, according to a programmable mapping, a mapping of guard tag storage locations for storing guard tags for corresponding blocks of memory locations.
    Type: Grant
    Filed: July 8, 2021
    Date of Patent: September 19, 2023
    Assignee: Arm Limited
    Inventors: Richard Roy Grisenthwaite, Graeme Peter Barnes
  • Patent number: 11687353
    Abstract: A method is described for controlling an electronic device with a programmable control unit based upon a plurality of operative parameters and a series of rules that these operative parameters shall satisfy. The method includes the following steps: associating a firmware with the electronic device; providing the firmware with a file containing the values of the operative parameters and the rules these operative parameters shall satisfy; and controlling the device by using the operative parameters and the rules contained in the file.
    Type: Grant
    Filed: September 28, 2016
    Date of Patent: June 27, 2023
    Assignee: Marici Holdings The Netherlands B.V.
    Inventors: Filippo Vernia, Claudio Tacchini, Lorenzo Bianchi, Davide Tazzari
  • Patent number: 11307861
    Abstract: A method performed in a processor, includes: receiving, in the processor, a branch instruction in the processing; determining, by the processor, an address of an instruction after the branch instruction as a candidate for speculative execution, the address including an object identification and an offset; and determining, by the processor, whether or not to perform speculative execution of the instruction after the branch instruction based on the object identification of the address.
    Type: Grant
    Filed: July 29, 2020
    Date of Patent: April 19, 2022
    Assignee: Micron Technology, Inc.
    Inventor: Steven Jeffrey Wallach
  • Patent number: 11016878
    Abstract: A system and method are provided for data collection and analysis of information related to applications. Specifically, the developer of the application may install analytic software, which may be embodied as a software development kit (SDK), on an integrated development environment (“IDE”) associated with the developer, wherein the analytic software may be installed with a wizard-like interface having a series of easy to follow instructions. Once installed, the application, with the analytic software incorporated therein, may be provided and installed on a plurality of end user devices. Thereafter, the analytic software may work in conjunction with analytic processing logic to assist the developer in obtaining pertinent information related to bugs associated with the application that is being executed on an end user device.
    Type: Grant
    Filed: March 21, 2017
    Date of Patent: May 25, 2021
    Assignee: Google LLC
    Inventors: Wayne Chang, Jeffrey H. Seibert, Jr.
  • Patent number: 10698726
    Abstract: Various technologies and techniques are disclosed for switching threads within routines. A controller routine receives a request from an originating routine to execute a coroutine, and executes the coroutine on an initial thread. The controller routine receives a response back from the coroutine when the coroutine exits based upon a return statement. Upon return, the coroutine indicates a subsequent thread that the coroutine should be executed on when the coroutine is executed a subsequent time. The controller routine executes the coroutine the subsequent time on the subsequent thread. The coroutine picks up execution at a line of code following the return statement. Multiple return statements can be included in the coroutine, and the threads can be switched multiple times using this same approach. Graphical user interface logic and worker thread logic can be co-mingled into a single routine.
    Type: Grant
    Filed: June 26, 2018
    Date of Patent: June 30, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Krzysztof Cwalina
  • Patent number: 10474618
    Abstract: A method, apparatus, and system are provided for implementing debug data saving in host memory on a Peripheral Component Interconnect Express (PCIE) solid state drive (SSD). Upon Power Loss Interruption (PLI) event detected in a solid state drive (SSD), the SSD transfers debug data directly to the host system main (DRAM) memory via a Peripheral Component Interconnect Express (PCIE) bus.
    Type: Grant
    Filed: September 4, 2014
    Date of Patent: November 12, 2019
    Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
    Inventors: Michael J. Anderson, Adam Michael Espeseth, Brandon William Schulz, Lee Anton Sendelbach
  • Patent number: 10360373
    Abstract: Disclosed in some examples are methods, systems, and machine readable media for encrypting return addresses with a cryptographic key. The call and return operations may be changed to incorporate an XOR operation on the return address with the cryptographic key. Upon calling a function, the return address may be XORed with the key which encrypts the return address. The encrypted return address may then be placed upon the stack. Upon returning from the function, the return address may be retrieved from the stack and XORed with the cryptographic key which then decrypts the return address. The processor may then return control to the address indicated by the unencrypted return address. This method makes modifications of the return address useless as an attack vector because the result of modifying the return address will be unpredictable to the attacker as a result of the XOR operation done on the return address.
    Type: Grant
    Filed: September 28, 2016
    Date of Patent: July 23, 2019
    Assignee: Intel Corporation
    Inventor: Rodrigo R. Branco
  • Patent number: 10185595
    Abstract: An example method includes partitioning a software application into two or more instruction blocks each containing one or more software instructions. The two or more instruction blocks are arranged in a sequence defining an order in which to execute the two or more instruction blocks. The method may also involve storing, in a first block of the two or more instruction blocks, a first identifier of the first block and storing, in a second block of the two or more instruction blocks, (i) a second identifier of the second block, (ii) the first identifier of the first block, and (iii) a one-way cryptographic hash of contents of the first block. The first block is adjacent to the second block in the sequence. The method may additionally include transmitting, to a computing device, the two or more instruction blocks for execution by the computing device in the defined order.
    Type: Grant
    Filed: June 4, 2018
    Date of Patent: January 22, 2019
    Assignee: Confia Systems, Inc.
    Inventors: Nadaradjane Ramatchandirane, Vandana Upadhyay
  • Patent number: 10157268
    Abstract: Each program thread running on a computing device has an associated data stack and control stack. A stack displacement value is generated, which is the difference between the memory address of the base of the data stack and the memory address of the base of the control stack, and is stored in a register of a processor of the computing device that is restricted to operating system kernel use. For each thread on which return flow guard is enabled, prologue and epilogue code is added to each function of the thread (e.g., by a memory manager of the computing device). The data stack and the control stack each store a return address for the function, and when the function completes the epilogue code allows the function to return only if the return addresses on the data stack and the control stack match.
    Type: Grant
    Filed: September 27, 2016
    Date of Patent: December 18, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Jordan Thomas Rabet, Kenneth D. Johnson, Matthew R. Miller, Adam M. Zabrocki, Shawn Daniel Hoffman, Landy Wang, Yevgeniy M. Bak
  • Patent number: 10088812
    Abstract: A functional unit includes: a parameter reception unit that classifies a parameter as a first parameter or as a second parameter; a first-parameter analysis unit that analyzes the classified first parameter; a second-parameter analysis unit that analyzes the classified second parameter; a first-parameter storage unit that stores therein the first parameter analyzed by the first-parameter analysis unit; a second-parameter storage unit that stores therein the second parameter analyzed by the second-parameter analysis unit; a first processing unit that controls the first function in accordance with the first parameter stored in the first-parameter storage unit; and a second processing unit that controls the second function in accordance with the second parameter stored in the second-parameter storage unit, wherein the functional unit is controlled by a plurality of controllers.
    Type: Grant
    Filed: April 25, 2014
    Date of Patent: October 2, 2018
    Assignee: Mitsubishi Electric Corporation
    Inventor: Yoshiyuki Kubota
  • Patent number: 9990233
    Abstract: Technologies for partial binary translation on multi-core platforms include a shared translation cache, a binary translation thread scheduler, a global installation thread, and a local translation thread and analysis thread for each processor core. On detection of a hotspot, the thread scheduler first resumes the global thread if suspended, next activates the global thread if a translation cache operation is pending, and last schedules local translation or analysis threads for execution. Translation cache operations are centralized in the global thread and decoupled from analysis and translation. The thread scheduler may execute in a non-preemptive nucleus, and the translation and analysis threads may execute in a preemptive runtime. The global thread may be primarily preemptive with a small non-preemptive nucleus to commit updates to the shared translation cache. The global thread may migrate to any of the processor cores. Forward progress is guaranteed. Other embodiments are described and claimed.
    Type: Grant
    Filed: June 28, 2013
    Date of Patent: June 5, 2018
    Assignee: Intel Corporation
    Inventors: Abhik Sarkar, Jiwei Lu, Palanivelrajan Rajan Shanmugavelayutham, Jason M. Agron, Koichi Yamada
  • Patent number: 9921816
    Abstract: A computer-implemented method includes, in a code transformation system, identifying save-to-return code instructions, function call code instructions, comparison code instructions, and exceptional code instructions. The function call code instructions are associated with the save-to-return code instructions. The comparison code instructions are associated with the save-to-return code instructions. The exceptional code instructions are associated with the comparison code instructions. A predefined proximity range based on a predefined proximity value as well as a proximity eligibility indicator are determined. The proximity eligibility indicator denotes whether the save-to-return code instructions and the comparison code instructions are within the predefined proximity range.
    Type: Grant
    Filed: March 8, 2016
    Date of Patent: March 20, 2018
    Assignee: International Business Machines Corporation
    Inventors: Iain A. Ireland, Allan H. Kielstra, Muntasir A. Mallick
  • Patent number: 9916141
    Abstract: A computer-implemented method includes, in a code transformation system, identifying save-to-return code instructions, function call code instructions, comparison code instructions, and exceptional code instructions. The function call code instructions are associated with the save-to-return code instructions. The comparison code instructions are associated with the save-to-return code instructions. The exceptional code instructions are associated with the comparison code instructions. A predefined proximity range based on a predefined proximity value as well as a proximity eligibility indicator are determined. The proximity eligibility indicator denotes whether the save-to-return code instructions and the comparison code instructions are within the predefined proximity range.
    Type: Grant
    Filed: October 15, 2015
    Date of Patent: March 13, 2018
    Assignee: International Business Machines Corporation
    Inventors: Iain A. Ireland, Allan H. Kielstra, Muntasir A. Mallick
  • Patent number: 9582312
    Abstract: Context information associated with asynchronous tasks executing in a multithread computer processing environment can be captured. An identifier block having context information associated with tasks executed in the thread is stored in a call stack of a thread. For asynchronous tasks that execute in the thread, a context trace component causes the thread to place an identifier block in the stack of the thread. The identifier block stores context information associated with the currently executing task and with one or more previously executed tasks. Context information currently stored in an identifier block can be retrieved and stored in subsequent identifier blocks, thereby enabling capture of a sequential context trace of asynchronous tasks that execute in the thread. The context trace information stored in the identifier block can be retrieved to support failure analysis when a task fails to execute properly.
    Type: Grant
    Filed: February 4, 2015
    Date of Patent: February 28, 2017
    Assignee: Amazon Technologies, Inc.
    Inventor: Jari Juhani Karppanen
  • Patent number: 9268559
    Abstract: The invention relates to a method for detecting a subroutine call stack modification, including the steps of, when calling a subroutine, placing a return address at the top of the stack; at the end of the subroutine, using the address at the top of the stack as the return address, and removing the address from the stack; when calling the subroutine, accumulating the return address in a memory location with a first operation; at the end of the subroutine, accumulating the address from the top of the stack in the memory location with a second operation, reciprocal of the first operation; and detecting a change when the content of the memory location is different from its initial value.
    Type: Grant
    Filed: July 31, 2013
    Date of Patent: February 23, 2016
    Assignee: INSIDE SECURE
    Inventor: Florian Galdo
  • Patent number: 9213551
    Abstract: Techniques and structures are disclosed relating to predicting return addresses in multithreaded processors. In one embodiment, a processor is disclosed that includes a return address prediction unit. The return address prediction unit is configured to store return addresses for different ones of a plurality of threads executable on the processor. The return address prediction unit is configured to receive a request for a predicted return address for one of the plurality of threads. The first request includes an identification of the requesting thread. The return address prediction unit is configured to provide the predicted return address to the requesting thread. In some embodiments, the return address prediction unit is configured to store the return addresses in a memory that has a plurality of dedicated portions. In some embodiments, the return address prediction unit is configured to store the return addresses in a memory that has dynamically allocable entries.
    Type: Grant
    Filed: March 11, 2011
    Date of Patent: December 15, 2015
    Assignee: Oracle International Corporation
    Inventors: Manish K. Shah, Gregory F. Grohoski, Zeid H. Samoail
  • Patent number: 8990546
    Abstract: Embodiments of a system and method are disclosed that can include a memory unit, and a memory management unit coupled to the memory unit. The memory management unit can include address mapping circuitry and access control circuitry operable to: provide address mappings for at least a frame stack and a link stack in the memory unit for programs being executed by the processing unit, and provide an access permission indicator applicable to any segment of the memory unit. A processing unit can save context information for a program to the frame stack, and execute a savelink instruction subsequent to the execution of a branch and link instruction. If the access permission indicator is set, the savelink instruction saves to the link stack a return address provided by the branch and link instruction.
    Type: Grant
    Filed: October 31, 2011
    Date of Patent: March 24, 2015
    Assignee: Freescale Semiconductor, Inc.
    Inventor: Peter J. Wilson
  • Patent number: 8959317
    Abstract: A microcomputer includes: a plurality of register lists having a plurality of register patterns, respectively, wherein each of plurality of register patterns designates registers, data of which are to be saved in a data memory; an instruction fetch control circuit configured to fetch instruction code from an instruction memory in response to an interrupt request issued based on occurrence of an interrupt factor; and a register data saving control circuit configured to acquire one register pattern from one of the plurality of register lists in response to the interrupt request, and issue a microinstruction based on the acquired register pattern in response to the interrupt request. An instruction executing section is configured to execute the microinstruction prior to the fetched instruction code, to save the data of registers designated based on the acquired register pattern in the data memory.
    Type: Grant
    Filed: April 12, 2011
    Date of Patent: February 17, 2015
    Assignee: Renesas Electronics Corporation
    Inventor: Hideki Matsuyama
  • Patent number: 8943300
    Abstract: An apparatus for emulating the branch prediction behavior of an explicit subroutine call is disclosed. The apparatus includes a first input which is configured to receive an instruction address and a second input. The second input is configured to receive predecode information which describes the instruction address as being related to an implicit subroutine call to a subroutine. In response to the predecode information, the apparatus also includes an adder configured to add a constant to the instruction address defining a return address, causing the return address to be stored to an explicit subroutine resource, thus, facilitating subsequent branch prediction of a return call instruction.
    Type: Grant
    Filed: July 31, 2008
    Date of Patent: January 27, 2015
    Assignee: QUALCOMM Incorporated
    Inventors: Brian Michael Stempel, James Norris Dieffenderfer, Thomas Andrew Sartorius, Rodney Wayne Smith
  • Patent number: 8694760
    Abstract: A branch prediction mechanism within an information processing device comprises a call stack where function arguments are stacked when function calls are performed. The call stack stores arguments relating to branch instructions within the function. The branch prediction mechanism stores the branch instruction address, the leading value of the call stack, and the branch destination address at branch instruction execution time, which are in correspondence, in a branch result buffer. A branch prediction unit obtains the branch instruction address and leading value of the call stack when notified of branch instruction execution, searches the branch result buffer for a branch destination corresponding to the address and leading value, and predicts the search result as the branch destination of the executed branch instruction. An instruction fetch unit fetches instructions from the branch destination predicted by the branch prediction unit.
    Type: Grant
    Filed: May 19, 2010
    Date of Patent: April 8, 2014
    Assignee: Panasonic Corporation
    Inventor: Katsushige Amano
  • Patent number: 8555041
    Abstract: Various embodiments include methods and related media for performing operations including a return operation. One such method includes testing a content of a return value register and setting status flags. Testing the content of the return value register and setting the status flags are performed in response to a single instruction.
    Type: Grant
    Filed: June 7, 2010
    Date of Patent: October 8, 2013
    Assignee: Atmel Corporation
    Inventors: Erik K. Renno, Oyvind Strom, Morten W. Lund
  • Patent number: 8438372
    Abstract: Whenever a link address is written to the link stack, the prior value of the link stack entry is saved, and is restored to the link stack after a link stack push operation is speculatively executed following a mispredicted branch. This condition is detected by maintaining an incrementing tag register which is incremented by each link stack write instruction entering the pipeline, and a snapshot of the incrementing tag register, associated with each branch instruction. When a branch is evaluated and determined to have been mispredicted, the snapshot associated with it is compared to the incrementing tag register. A discrepancy indicates a link stack write instruction was speculatively issued into the pipeline after the mispredicted branch instruction, and pushed a link address onto the link stack, thus corrupting the link stack. The prior link address is restored to the link stack from the link stack restore buffer.
    Type: Grant
    Filed: August 18, 2011
    Date of Patent: May 7, 2013
    Assignee: QUALCOMM Incorporated
    Inventors: James Norris Dieffenderfer, Brian Michael Stempel, Rodney Wayne Smith
  • Patent number: 8438371
    Abstract: Whenever a link address is written to the link stack, the prior value of the link stack entry is saved, and is restored to the link stack after a link stack push operation is speculatively executed following a mispredicted branch. This condition is detected by maintaining a count of the total number of uncommitted link stack write instructions in the pipeline, and a count of the number of uncommitted link stack write instructions ahead of each branch instruction. When a branch is evaluated and determined to have been mispredicted, the count associated with it is compared to the total count. A discrepancy indicates a link stack write instruction was speculatively issued into the pipeline after the mispredicted branch instruction, and pushed a link address onto the link stack. The prior link address is restored to the link stack from the link stack restore buffer.
    Type: Grant
    Filed: May 16, 2011
    Date of Patent: May 7, 2013
    Assignee: QUALCOMM Incorporated
    Inventors: James Norris Dieffenderfer, Brian Michael Stempel, Rodney Wayne Smith
  • Patent number: 8423968
    Abstract: Method, system and computer program product for template-based vertical microcode instruction trace generation. An exemplary embodiment includes an instruction trace generation method, including generating a testcase for a millicoded instruction in an instruction trace pool, wherein the millicoded instruction is included in a parent instruction trace, processing the testcase to generate a millicode instruction trace snippet, editing the millicode instruction trace snippet to generate a templatized millimode snippet, processing the parent instruction trace, accessing the templatized millimode snippet, updating the templatized millimode snippet with a value from the parent instruction trace, and generating a millicoded instruction trace from the updated templatized millimode snippet.
    Type: Grant
    Filed: February 11, 2008
    Date of Patent: April 16, 2013
    Assignee: International Business Machines Corporation
    Inventors: David S. Hutton, Jane H Bartik
  • Patent number: 8296750
    Abstract: A method and apparatus for optimizing a target program including a pattern of instructions to be replaced. The method is performed by execution of program code by a processor of an information processing apparatus that includes an output device and a computer readable storage medium storing the program code. At least one transformation is performed on the target program to generate a transformed target subprogram in which dependencies among the instructions included in the target subprogram are matched with dependencies in the pattern to be replaced. The transformed target subprogram is replaced, with a post-replacement instruction stream determined to correspond to the pattern to be replaced, to generate a replaced target subprogram. An optimized target program that includes the replaced target subprogram is outputted to the output device. The at least one transformation includes a first transformation, a loop transformation, or both the first transformation and the loop transformation.
    Type: Grant
    Filed: September 12, 2007
    Date of Patent: October 23, 2012
    Assignee: International Business Machines Corporation
    Inventor: Motohiro Kawahito
  • Patent number: 8250349
    Abstract: A branch prediction control device, in an information processing unit which performs a pipeline process, generates a branch prediction address used for verification of an instruction being speculatively executed. The branch prediction control device includes a first return address storage unit storing the prediction return address, a second return address storage unit storing a return address to be generated depending on an execution result of the call instruction, and a branch prediction address storage unit sending a stored prediction return address as a branch prediction address and storing the sent branch prediction address. When the branch prediction address differs from a return address, which is generated after executing a branch instruction or a return instruction, contents stored in the second return address storage unit are copied to the first return address storage unit.
    Type: Grant
    Filed: June 3, 2008
    Date of Patent: August 21, 2012
    Assignee: Renesas Electronics Corporation
    Inventor: Tomoo Inoue
  • Patent number: 8087018
    Abstract: A computer implemented method and apparatus to manage multithread resources in a multiple instruction set architectures environment comprising initializing a first thread from a first context. The initialization of the first thread is suspended at a position in response to an operating system request call to create the first thread. A second thread from a host environment is created based on the position. After the second thread is created, completion of the initialization of the first thread based on the position is then performed. Other embodiments are described in the claims.
    Type: Grant
    Filed: March 31, 2006
    Date of Patent: December 27, 2011
    Assignee: Intel Corporation
    Inventors: Zach Yoav, Chen Miaobo, Valery E. Ushakov, Vasily Levchenko, Polevic Stanislav
  • Publication number: 20110167248
    Abstract: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.
    Type: Application
    Filed: January 7, 2010
    Publication date: July 7, 2011
    Applicant: Microsoft Corporation
    Inventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson
  • Patent number: 7971044
    Abstract: Whenever a link address is written to the link stack, the prior value of the link stack entry is saved, and is restored to the link stack after a link stack push operation is speculatively executed following a mispredicted branch. This condition is detected by maintaining a count of the total number of uncommitted link stack write instructions in the pipeline, and a count of the number of uncommitted link stack write instructions ahead of each branch instruction. When a branch is evaluated and determined to have been mispredicted, the count associated with it is compared to the total count. A discrepancy indicates a link stack write instruction was speculatively issued into the pipeline after the mispredicted branch instruction, and pushed a link address onto the link stack. The prior link address is restored to the link stack from the link stack restore buffer.
    Type: Grant
    Filed: October 5, 2007
    Date of Patent: June 28, 2011
    Assignee: QUALCOMM Incorporated
    Inventors: James Norris Dieffenderfer, Brian Michael Stempel, Rodney Wayne Smith
  • Patent number: 7900027
    Abstract: A computer implemented method, a processor chip, a computer program product, and a data processing system managing a link stack. The data processing system utilizes speculative pushes onto and pops from the link stack. The link stack comprises a set of entries, and each entry comprises a set of state bits. A speculative push of a first instruction is received onto the data stack, and the first instruction is stored into a first entry of the set of entries. A first bit is set to indicate that the first instruction is a valid instruction. A second bit is set to indicate that the first instruction has been speculatively pushed onto the link stack. The link stack pointer control is updated to indicate that the first entry is a top-of-data stack entry.
    Type: Grant
    Filed: January 31, 2008
    Date of Patent: March 1, 2011
    Assignee: International Business Machines Corporation
    Inventors: Ronald P. Hall, Michael Lance Karm, David Mui, Albert James Van Norstrand, Jr.
  • Patent number: 7882338
    Abstract: A method, system and computer program product for performing an implicit predicted return from a predicted subroutine are provided. The system includes a branch history table/branch target buffer (BHT/BTB) to hold branch information, including a target address of a predicted subroutine and a branch type. The system also includes instruction buffers, and instruction fetch controls to perform a method including fetching a branch instruction at a branch address and a return-point instruction. The method also includes receiving the target address and the branch type, and fetching a fixed number of instructions in response to the branch type. The method further includes referencing the return-point instruction within the instruction buffers such that the return-point instruction is available upon completing the fetching of the fixed number of instructions absent a re-fetch of the return-point instruction.
    Type: Grant
    Filed: February 20, 2008
    Date of Patent: February 1, 2011
    Assignee: International Business Machines Corporation
    Inventors: Khary J. Alexander, James J. Bonanno, Brian R. Prasky, Anthony Saporito, III, Robert J. Sonnelitter, III, Charles F. Webb
  • Patent number: 7836290
    Abstract: A technique recovers return address stack (RAS) content and restores alignment of a RAS top-of-stack (TOS) pointer for occurrences of mispredictions due to speculative operation, out-of-order instruction processing, and exception handling. In at least one embodiment of the invention, an apparatus includes a speculative execution processor pipeline, a first structure for maintaining return addresses relative to instruction flow at a first stage of the pipeline, at least a second structure for maintaining return addresses relative to instruction flow at a second stage of the pipeline. The second stage of the pipeline is deeper in the pipeline than the first stage. The apparatus includes circuitry operable to reproduce at least return addresses from the second structure to the first structure.
    Type: Grant
    Filed: February 28, 2006
    Date of Patent: November 16, 2010
    Assignee: Oracle America, Inc.
    Inventors: Shailender Chaudhry, Quinn A. Jacobson, Paul Caprioli, Marc Tremblay
  • Patent number: 7831660
    Abstract: The present invention relates to a network system providing a wireless website and method for providing and connecting the wireless website using the same, the network system including a contents providing system using a mobile terminal including at least one terminal device receiving contents information for the wireless website through a wired means or a wireless means, thereby transmitting the contents information or connecting to the wireless website, a macro server storing the wireless website created by using the contents information inputted from the terminal device, wherein the macro server includes scripts corresponding to the created wireless website, a database for storing information of the wireless website in a table form, and phone page information for displaying the wireless website, and an execution server searching the database so as to provide contents corresponding to each wireless website, in accordance with a connection of the terminal device.
    Type: Grant
    Filed: March 2, 2007
    Date of Patent: November 9, 2010
    Assignee: Mtome Co., Ltd.
    Inventor: Se Jin Park
  • Patent number: 7793086
    Abstract: A method for link stack misprediction resolution using a rename structure for tracking the link stack processing, in order to quickly resolve link stack corruption from mispredicted function returns. The method comprises establishing a set of physical data structures forming a common pool and an operation control table. Maintaining, within the common pool, a plurality of entries for a plurality of speculative instructions and a plurality of non-speculative instructions. And determining one speculative instruction to be a bad prediction speculative entry, identifying related entries to form a collection, and discarding the collection.
    Type: Grant
    Filed: September 10, 2007
    Date of Patent: September 7, 2010
    Assignee: International Business Machines Corporation
    Inventor: Gregory W. Alexander
  • Patent number: 7685404
    Abstract: An apparatus is provided for processing data under control of a program having program instructions and subgraph suggestion information identifying respective sequences of program instructions corresponding to computational subgraphs identified within the program. A memory stores a program formed of separate program instructions. Processing logic executes respective separate program instructions from said program. Accelerator logic, in response to reaching an execution point within the program associated with a subgraph suggestion, executes a sequence of program instructions corresponding to the subgraph suggestion as an accelerated operation instead of executing the sequence of program instructions as respective separate program instructions with the processing logic.
    Type: Grant
    Filed: June 5, 2007
    Date of Patent: March 23, 2010
    Assignees: ARM Limited, University of Michigan
    Inventors: Stuart David Biles, Krisztian Flautner, Scott Mahlke, Nathan Clark
  • Patent number: 7647489
    Abstract: A data processing system 2 is provided which includes an instruction decoder 18 responsive to a handler branch instruction HLB, HBLP which includes an index value field to calculate a handler pointer in dependence upon a handler base address HBA and the index value field and then to branch to that handler pointer position. A handler program 24, 26 at the branch target is then executed following which a return is made to an address following the handler branch instruction using a link address value stored when the handler branch instruction was executed.
    Type: Grant
    Filed: March 14, 2005
    Date of Patent: January 12, 2010
    Assignee: ARM Limited
    Inventor: David John Butcher
  • Patent number: 7617388
    Abstract: An extendable instruction set architecture is provided. In an embodiment, a microprocessor includes a memory, a virtual instruction expansion store, and substitution logic. The memory stores at least one virtual instruction that includes an index and at least one parameter. The virtual instruction expansion store includes at least one instruction template and at least one parameter selector. The substitution logic forms a sequence of at least one expanded instruction. In an example, each expanded instruction is based on an instruction template and includes a new parameter for use with the instruction template. The new parameter is generated by performing a logical operation from the parameter selector on one or more parameter of the virtual instruction.
    Type: Grant
    Filed: December 22, 2006
    Date of Patent: November 10, 2009
    Assignee: MIPS Technologies, Inc.
    Inventor: Kevin D. Kissell
  • Patent number: 7581089
    Abstract: A method of protecting a return address on a computer stack is disclosed. Two stacks are created, the first a normal stack, and the second, or shadow, having shadow frames containing the return address upon a subroutine call, the address on the first stack where the return address is stored, and a user-definable state variable which is used to identify a shadow frame as a return address. Before returning from a subroutine, the two return addresses are compared, and if they do not match, the second stack is searched down, and then up, for a matching return address. If there is a match, the shadow is re-synchronized with the first stack by comparing the stored values of the first stack pointer with the first stack pointer and adjusting appropriately the shadow stack pointer. The matching shadow frame must also be a return address datatype of return address.
    Type: Grant
    Filed: April 18, 2007
    Date of Patent: August 25, 2009
    Assignee: The United States of America as represented by the Director of the National Security Agency
    Inventor: Andrew H. White
  • Patent number: 7526638
    Abstract: Processor logic gates are used to modify microcode instructions, while they are being executed. The results of previous operations are used by the hardware to modify subsequent instructions in a microcode routine. This gives the effect of branching and also reduces the number of instructions that are executed. Different examples and embodiments are also discussed.
    Type: Grant
    Filed: March 16, 2008
    Date of Patent: April 28, 2009
    Assignee: International Business Machines Corporation
    Inventor: Glen H. Handlogten
  • Patent number: 7478228
    Abstract: An apparatus for emulating the branch prediction behavior of an explicit subroutine call is disclosed. The apparatus includes a first input which is configured to receive an instruction address and a second input. The second input is configured to receive predecode information which describes the instruction address as being related to an implicit subroutine call to a subroutine. In response to the predecode information, the apparatus also includes an adder configured to add a constant to the instruction address defining a return address, causing the return address to be stored to an explicit subroutine resource, thus, facilitating subsequent branch prediction of a return call instruction.
    Type: Grant
    Filed: August 31, 2006
    Date of Patent: January 13, 2009
    Assignee: QUALCOMM Incorporated
    Inventors: Brian Michael Stempel, James Norris Dieffenderfer, Thomas Andrew Sartorius, Rodney Wayne Smith
  • Patent number: 7472259
    Abstract: In one embodiment, a pipelined processor is described that includes an execution pipeline having a plurality of stages and a multi-cycle instruction (MCI) controller adapted to assert a stall signal to stall the multi-cycle instruction within one of the stages of the execution pipeline. The MCI controller is adapted to issue a plurality of instructions to subsequent stages in the pipeline while the multi-cycle instruction is stalled.
    Type: Grant
    Filed: December 6, 2000
    Date of Patent: December 30, 2008
    Assignee: Analog Devices, Inc.
    Inventors: Gregory A. Overkamp, Charles P. Roth, Ravi P. Singh
  • Patent number: 7444501
    Abstract: An apparatus for recognizing a subroutine call is disclosed. The apparatus includes a circuit comprising a first input for receiving contents of a register, a second input for receiving a non-sequential change in program flow, and a third input for receiving the next sequential address after the non-sequential change in program flow. The circuit is configured to compare the next sequential address and the contents of the register to determine whether the non-sequential change in program flow is a subroutine call.
    Type: Grant
    Filed: November 28, 2006
    Date of Patent: October 28, 2008
    Assignee: QUALCOMM Incorporated
    Inventor: Michael William Morrow
  • Patent number: 7412593
    Abstract: A processor for processing a program with commands, which has a mother program with a sub-program jump command and a sub-program, which is to be processed in response to the sub-program jump command. The processor has a command processor, which is adapted in the mother program upon occurrence of the sub-program jump command, to extract back-up information about data required in the mother program after processing the sub-program from the sub-program jump command, to back-up data required in the mother program after execution of the sub-program based on the back-up information, to extract a destination address from the sub-program jump command, which refers to the sub-program, and to effect the continuation of the processing of the program with the sub-program based on the destination address.
    Type: Grant
    Filed: March 28, 2005
    Date of Patent: August 12, 2008
    Assignee: Infineon Technologies AG
    Inventors: Gerd Dirscherl, Berndt Gammel, Michael Smola
  • Patent number: 7409479
    Abstract: When needing to make write accesses to both upper and lower sides of a counter in a timer, a CPU accesses the lower side last, and accesses the lower side first when needing to make read accesses thereto. The timer stores data of the data bus in the write buffer at the write access to the upper side, and writes the data of the data bus to the lower side and writes the data of the write buffer to the upper side at the write access to the lower side. At the read access to the lower side of the counter, the timer reads the data of the lower side for output to the data bus and reads the data of the upper side for storage in the read buffer. At the read access to the upper side, it outputs data of the read buffer to the data bus.
    Type: Grant
    Filed: June 20, 2005
    Date of Patent: August 5, 2008
    Assignee: Fujitsu Limited
    Inventor: Satoshi Matsui
  • Patent number: 7401210
    Abstract: Following execution of a subroutine, a return instruction is executed having an address as an input operand thereto. This input operand is compared with one or more predetermined values to detect a match and the return instruction response is selected in dependence upon whether or not a match is detected. Thus, the return address value can be used to invoke differing return instruction responses, such as an exception return response or a procedure return response. The one or more predetermined addresses may be conveniently allocated to the highest memory addresses within the memory map.
    Type: Grant
    Filed: March 30, 2005
    Date of Patent: July 15, 2008
    Assignee: Arm Limited
    Inventors: Richard Roy Grisenthwaite, Paul Kimelman, David James Seal
  • Patent number: 7386709
    Abstract: A data processing apparatus is provided with an execute block instruction EMB which specifies a memory location of a block of program instructions to be executed as well as the length of that block of program instructions. When the end of that block of program instructions has been reached as tracked in response to the specified length value, a return to the main program flow is triggered. The instruction decoder can include a block counter register to keep track of the position within the block of program instructions being called. The block of program instructions are fetched by a prefetch unit into the instruction pipeline following the execute block instruction and are treated as having a program counter value corresponding to the execute block instruction whilst the block counter value keeps track of their separate positions within the block of program instructions.
    Type: Grant
    Filed: January 13, 2004
    Date of Patent: June 10, 2008
    Assignee: ARM Limited
    Inventor: Vladimir Vasekin
  • Patent number: 7383425
    Abstract: This invention is directed to a method and apparatus for providing low, predictable latencies in processing IP packets. The apparatus provides a specialized microprocessor or hardwired circuitry to process IP packets for video communications and control of the video source without an operating system. The method relates to operation of a microprocessor which is suitably arranged to carry out the steps of the method. The method includes details of operation of the specialized microprocessor.
    Type: Grant
    Filed: February 27, 2004
    Date of Patent: June 3, 2008
    Assignee: Pleora Technologies Inc.
    Inventors: Eric Boisvert, Alain Rivard, George Chamberlain
  • Patent number: 7343482
    Abstract: There is provided an apparatus for processing data under control of a program having program instructions and subgraph suggestion information identifying respective sequences of program instructions corresponding to computational subgraphs identified within said program, said apparatus comprising: a memory operable to store a program formed of separate program instructions; processing logic operable to execute respective separate program instructions from said program; and accelerator logic operable in response to reaching an execution point within said program associated with a subgraph suggestion to execute a sequence of program instructions corresponding to said subgraph suggestion as an accelerated operation instead of executing said sequence of program instructions as respective separate program instructions with said processing logic.
    Type: Grant
    Filed: January 31, 2005
    Date of Patent: March 11, 2008
    Assignees: ARM Limited, University of Michigan
    Inventors: Stuart David Biles, Krisztian Flautner, Scott Mahlke, Nathan Clark
  • Publication number: 20080059780
    Abstract: An apparatus for emulating the branch prediction behavior of an explicit subroutine call is disclosed. The apparatus includes a first input which is configured to receive an instruction address and a second input. The second input is configured to receive predecode information which describes the instruction address as being related to an implicit subroutine call to a subroutine. In response to the predecode information, the apparatus also includes an adder configured to add a constant to the instruction address defining a return address, causing the return address to be stored to an explicit subroutine resource, thus, facilitating subsequent branch prediction of a return call instruction.
    Type: Application
    Filed: August 31, 2006
    Publication date: March 6, 2008
    Inventors: Brian Michael Stempel, James Norris Dieffenderfer, Thomas Andrew Sartorius, Rodney Wayne Smith