US6587939B1 - Information processing apparatus provided with an optimized executable instruction extracting unit for extending compressed instructions - Google Patents

Information processing apparatus provided with an optimized executable instruction extracting unit for extending compressed instructions Download PDF

Info

Publication number
US6587939B1
US6587939B1 US09/482,262 US48226200A US6587939B1 US 6587939 B1 US6587939 B1 US 6587939B1 US 48226200 A US48226200 A US 48226200A US 6587939 B1 US6587939 B1 US 6587939B1
Authority
US
United States
Prior art keywords
instruction
compressed
sequence
executable
occurrence frequency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US09/482,262
Inventor
Hiroyuki Takano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Assigned to KABUSHIKI KAISHA TOSHIBA reassignment KABUSHIKI KAISHA TOSHIBA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TAKANO, HIROYUKI
Application granted granted Critical
Publication of US6587939B1 publication Critical patent/US6587939B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Definitions

  • the present invention is related to an information processing apparatus provided with an optimized executable instruction extracting unit for extending a compressed instruction into the corresponding executable instructions in accordance with the instruction code of a target executable program.
  • the size of instruction code in the memory of a processor can influence the production cost of the entire system.
  • a smaller size of instruction code in the memory has an advantage in costs.
  • the technique of compressing the executable instructions and extending the compressed instructions is one for techniques of reducing the size of instruction code in the memory.
  • each instruction as pointed by an address register and fetched from the memory is latched by an instruction register and transferred to an instruction decoding unit through a multiplexer in order to decode the executable instructions.
  • each instruction as pointed by the address register and fetched from the memory is extended into the corresponding executable instructions and then transferred to the instruction decoding unit through the multiplexer in order to decode the executable instructions.
  • Such a compressed instruction of this kind is generated by compressing an instruction sequence which frequently occurs in the instruction codes of many application programs.
  • application programs there are a variety of application programs. Namely, while the compressed instruction set as defined by one processor is effective for a specific type of application program, it frequently becomes ineffective for another type of application program.
  • the compressed instruction set is fixedly defined for each system. For this reason, while the compressed instruction set as defined in the system is effective for a specific type of application program, it becomes ineffective for another type of application program. In this case, there is the disadvantage that the use of compressed instructions can no longer improve the performance of the system.
  • the information processing apparatus in accordance with the present invention is characterized by provision of a executable instruction extracting unit for extending a compressed instruction into a plurality of corresponding executable instructions, and a reconfiguration unit for reconfiguring and optimizing the executable instruction extracting unit suitable for the executable program.
  • the executable instruction extracting unit is reconfigured for the respective target program so that the number of the constituent instructions can be suppressed, resulting in compaction of the storage region for storing the target program.
  • FIG. 1 is a block diagram showing an information processing apparatus in accordance with a first embodiment of the present invention.
  • FIG. 2 shows an exemplary table of a compressed/executable instruction correspondence table.
  • FIG. 3 shows an example of assemble code corresponding to the executable object code as illustrated in FIG. 1 .
  • FIGS. 4A-4C show an example of a executable instruction extracting unit.
  • FIG. 5 is a block diagram showing an exemplary system comprising the processor and the main memory as illustrated in FIG. 1 .
  • FIG. 6 is an operational timing chart of signals within a processor.
  • FIG. 7 is a block diagram showing an information processing apparatus in accordance with a second embodiment of the present invention.
  • FIG. 8 is a block diagram showing an information processing apparatus in accordance with a third embodiment of the present invention.
  • FIG. 9 illustrates an assembler source file and instruction sequence occurrence frequency data as illustrated in FIG. 8 .
  • FIG. 10 shows an example of the compressed/executable instruction correspondence table as illustrated in FIG. 8 .
  • FIG. 11 shows an example of the assembler source file corresponding to the executable object code as compressed.
  • FIG. 12 illustrates other examples of the assembler source file and instruction sequence occurrence frequency data as illustrated in FIG. 8 .
  • FIG. 13 shows another example of the compressed/executable instruction correspondence table as illustrated in FIG. 8 .
  • FIG. 14 shows an example of the instruction sequence which is not compressed as a compressed instruction.
  • FIG. 15 shows another example of the assembler source file corresponding to the executable object code as compressed.
  • FIG. 16 shows a block diagram showing an information processing apparatus in accordance with a fourth embodiment of the present invention.
  • FIG. 17 shows an example of the instruction sequence pattern templates as illustrated in FIG. 16 .
  • FIG. 18 illustrates an example of the assembler source file corresponding to the executable object code as illustrated in FIG. 16 and an example of instruction sequence occurrence frequency data as illustrated in FIG. 16 .
  • FIG. 19 shows a block diagram showing an information processing apparatus in accordance with a fifth embodiment of the present invention.
  • FIG. 20 illustrates an example of an assembler source file as illustrated in FIG. 19 and an example of assembler source code corresponding to the executable object code as compressed and generated on the basis of the assembler source file.
  • FIG. 21 illustrates an example of instruction sequence occurrence frequency data as illustrated in FIG. 19 .
  • FIGS. 22A and 22B show another example of the compressed/executable instruction correspondence table as illustrated in FIG. 19 .
  • FIG. 1 shows a block diagram showing an information processing apparatus in accordance with a first embodiment of the present invention.
  • the information processing apparatus of this embodiment is provided with a processor 151 and an executable instruction extracting unit reconfiguration unit 9 .
  • the processor 151 is composed of an address register 100 , an instruction register 102 , a multiplexer 104 , an instruction cache 105 , an instruction decoding unit 12 , an instruction execution unit 13 for executing instructions as decoded by the instruction decoding unit 12 , and an executable instruction extracting unit 14 .
  • a compressed/executable instruction correspondence table 7 is input to the executable instruction extracting unit reconfiguration unit 9 .
  • the executable instruction extracting unit reconfiguration unit 9 serves to reconfigure the executable instruction extracting unit 14 on the basis of the compressed/executable instruction correspondence table 7 .
  • FIG. 2 shows an exemplary table of the compressed/executable instruction correspondence table 7 .
  • Executable object code 110 having been compressed is input to a main memory 101 .
  • FIG. 2 shows an example of assemble code corresponding to the executable object code 110 .
  • the executable instruction extracting unit 14 is designed to be reconfigurable by external means and serves to convert the constituent compressed instructions into the corresponding sequence of executable instructions by extending the respective compressed instructions.
  • the executable instruction extracting unit 14 is composed of a Field Programmable Gate Array (FPGA), Programmable Logic Array and so forth.
  • the processor 151 is defined by a class Hardware Description Languages (HDL) or a class of Description Languages for CAD or Netlist with the restriction conditions posed thereto and a variety of configuration files, the description, i.e., the configuration itself of the executable instruction extracting unit 14 is assumed to be given to allow reconfiguration.
  • HDL Hardware Description Languages
  • CAD Conceptual Description Languages
  • FIGS. 4A and 4B show an example of source code of HDL to describe the executable instruction extracting unit 14 .
  • the HDL used in Verilog which is one of the representative HDLs.
  • the same figures show an example that two compressed instructions, each of which consists of two executable instructions as illustrated in FIG. 2, are defined.
  • the file as illustrated in FIG. 4C is prepared and included by the name of “compress_extend_table” in line 3 of the source code as illustrated in FIG. 4A, and therefore the files as illustrated in FIGS. 4A, 4 B and 4 C are complied in order to construct the executable instruction extracting unit 14 .
  • the executable instruction extracting unit reconfiguration unit 9 serves to perform reconfiguration of the executable instruction extracting unit 14 by rewriting the file as illustrated in FIG. 4C which is included in the file as illustrated in FIGS. 4A and 4B.
  • the file as illustrated in FIGS. 4A and 4B itself can be rewritten to perform reconfiguration of the executable instruction extracting unit 14 .
  • the “module extender” is included in the HDL description as the definition of the entirety of the processor 151 , the included “module extender” is recognized as the executable instruction extracting unit 14 and therefore the process of generating the entirety of the “module extender” is recognized as the reconfiguration of the executable instruction extracting unit 14 .
  • the FPGA is composed of a plurality of cells arranged within the chip. Each cell in turn is composed of combination of a plurality of F/Fs (flip-flops) and switches functioning as logics.
  • the cells are arranged in a matrix array in the form of a grid with interconnection wirings between adjacent cells, i.e, across bars of the grid on which the switches are located in order to determine how to interconnect the respective cells.
  • the information of the configuration of the interconnection is input in the form of packets, and the corresponding configuration is maintained as long as the electric power is being supplied.
  • some packet is input in order to determine the states of the switches within a certain cell corresponding to a required logic while another packet is input in order to determine the states of the switches located on the interconnection between one cell and wirings. After the states of all the switches have been determined, the configuration of the FPGA is maintained.
  • an FPGA is formed within the same processor which is provided with I/O pins through which packets can be input in order to implement the reconfigurable portion of the executable instruction extracting unit 14 .
  • FIG. 5 shows a block diagram showing the connection relationship among the address register 100 , the main memory 101 , the instruction register 102 , the multiplexer 104 , the instruction cache 105 , the instruction decoding unit 12 , the instruction execution unit 13 and the executable instruction extracting unit 14 in accordance with the first embodiment.
  • each instruction as pointed by the address register 100 and fetched from the instruction cache 105 or the main memory 101 is either a executable instruction or a compressed instruction.
  • a executable instruction it is latched by the instruction register 102 and then transferred to the instruction decoding unit 12 through the multiplexer 104 in order to decode the executable instruction.
  • a compressed instruction it is extended into the corresponding executable instructions and then sequentially transferred to the instruction decoding unit 12 through the multiplexer 104 in order to decode the executable instructions.
  • FIG. 6 shows an operational timing chart of fetching executable and compressed instructions and decoding them.
  • the executable instruction extracting unit 14 serves to extend a compressed instruction B into the corresponding executable instructions b 1 , b 2 and b 3 while it transmits control signals to the multiplexer 104 in order to input to the instruction decoding unit 12 an instruction A, the instruction b 1 , the instruction b 2 and the instruction b 3 in this order in synchronism with clocks, while it transmits control signals to the address register 100 to maintain the content thereof in order that the executable instruction C next to the compressed instruction B is supplied to the instruction decoding unit 12 just after the instruction b 3 .
  • the executable instruction b 1 is directly output; the executable instruction b 2 is output through one flip-flop; and the executable instruction b 3 is output through two flip-flops.
  • the executable instruction extracting unit 14 is reconfigured on the basis of the compressed/executable instruction correspondence table 7 in order to extend each compressed instruction contained in the executable object code 110 as compressed into the corresponding executable instructions, which are then decoded by means of the instruction decoding unit 12 and executed by means of the instruction execution unit 13 .
  • the executable instruction extracting unit 14 is reconfigured on the basis of a new compressed/executable instruction correspondence table for the new compressed instructions contained in the new executable object code.
  • the executable instruction extracting unit 14 as reconfigured serves to extend each new compressed instruction into the corresponding executable instructions, which are then decoded by means of the instruction decoding unit 12 and executed by means of the instruction execution unit 13 .
  • the executable instruction extracting unit is optimally reconfigured for the respective target program so that the number of the constituent instructions can be suppressed, resulting in compaction of the storage region for storing the target program.
  • While the compressed instructions are input to the executable instruction extracting unit 14 from the main memory 101 located external to the processor through the instruction cache 105 and the instruction register 102 in the case of the first embodiment, as follows.
  • the compressed instructions are input to the executable instruction extracting unit from a main memory located external to the processor through the instruction register internal to the processor.
  • the compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through the instruction register internal to the processor.
  • the compressed instructions are input to the executable instruction extracting unit from a main memory located external to the processor through an instruction SRAM internal to the processor and the instruction register internal to the processor.
  • the compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through the instruction cache internal to the processor and the instruction register internal to the processor.
  • the compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through an instruction SRAM internal to the processor and the instruction register internal to the processor.
  • the compressed instructions are input to the executable instruction extracting unit from a ROM located internal to the processor through the instruction register internal to the processor.
  • the memory space defined by the address available in an instruction SRAM is divided into two banks. For example, instructions are transferred to the bank 1 of the SRAM from the main memory under Direct Memory Access control while the instructions saved in the bank 2 of the SRAM are transferred to the executable instruction extracting unit from the bank 2 of the SRAM through the instruction register.
  • the banks of the SRAM are switched. Namely, the address range accessed under Direct Memory Access control and the address range accessed by the instruction register are switched followed by the similar operation.
  • an instruction execution unit 22 functions also as the executable instruction extracting unit reconfiguration unit 9 and serves to reconfigure the executable instruction extracting unit 14 on the basis of the compressed/executable instruction correspondence table 7 . While the other constituents elements have the same structures and functions of the previous embodiment, detailed explanation is not repeated.
  • the compression/expansion correspondence table 7 can be referred to by several procedures, for example, by defining compressed instructions for all or part of the entries with operands registered in the compression/expansion correspondence table 7 while the executable instruction extracting unit reconfiguration unit 9 is formed with one or more instruction sequences as illustrated in FIG. 9 .
  • the table 7 is written in the main memory 101 or a data SRAM located inside of the processor and referred to by means of a load instruction and so forth.
  • the instruction execution unit 22 is designed to incorporate the table 7 within itself.
  • instruction execution unit 22 is designed to incorporate the compression/expansion correspondence table 7 within itself, it is implemented in the same manner as the executable instruction extracting unit 14 is reconfigured.
  • FIG. 8 shows a schematic diagram showing the overall configuration of the third embodiment.
  • the differences of the third embodiment from the first embodiment resides in that the compressed/executable instruction correspondence table 7 is generated by an instruction sequence occurrence frequency detecting unit 401 and a compressed instruction definition unit 601 and that executable object code 111 is generated by an object conversion unit 801 .
  • FIG. 9 illustrates an assembler source file 203 and instruction sequence occurrence frequency data 501 .
  • the instruction sequence occurrence frequency detecting unit 401 will be explained.
  • the instruction sequence occurrence frequency detecting unit 401 serves to obtain the occurrence frequency of the instruction sequences contained in the assembler source file 203 by comparing each adjacent pair of the executable instructions contained therein.
  • the occurrence frequency of the instruction sequence of the third line and the fourth line and the occurrence frequency of the instruction sequence of the fourth line and the fifth line are counted respectively in the same manner.
  • the instruction sequence occurrence frequency data 501 is generated in this manner.
  • FIG. 10 shows an example of the compressed/executable instruction correspondence table 7 .
  • the assembler source file is compressed on the basis of the compressed/executable instruction correspondence table 7 in order to generate an assembler source file as compressed.
  • FIG. 10 shows an example of the assembler source file as compressed.
  • the instruction sequence occurrence frequency detecting unit 401 serves to modify the value of a field of an instruction contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
  • the register r 2 appearing twice as operands in the instruction on the first line appears again as an operand in the instruction on the second line and therefore these operands are commonly labeled rA while the register r 3 appearing as an operand in the instruction on the second line is labeled rB.
  • the instruction on the first line of the assembler source file 203 i.e,
  • register r 9 appearing as an operand in the instruction on the eighth line and the instruction on the ninth line is labeled rA.
  • the instructions on the eighth and ninth lines are expressed also by the instruction sequence of
  • the instruction sequence occurrence frequency data 502 as illustrated in FIG. 12 is obtained in this manner.
  • the requirement of defining compressed instructions is the occurrence frequency of the corresponding sequence of executable instructions is determined as no smaller than 2, the above three candidates are defined as the compressed instructions.
  • the compressed instructions may be given arbitrary mnemonics distinctive from each other, for example,
  • the compressed instruction as actually defined has to be selected with reference to the occurrence frequencies thereof.
  • FIG. 13 shows the assembler source file obtained by compressing the assembler source file 204 as illustrated in FIG. 12 on the basis of the compressed/executable instruction correspondence table 7 .
  • the format of the compressed instructions is desirably defined in order that the bit width of the compressed instructions is equal to the bit width of the respective instructions contained in the instructions sequence as compressed.
  • bit width of the compressed instructions may be designed shorter than the bit width of the respective instructions contained in the instructions sequence as compressed, depending upon the case. However, taking into consideration the tradeoff made between the high speed operation and the compression, it may be effective to maintain the bit width of the compressed instructions in order to cope with the specification required of the application program.
  • the instruction sequence occurrence frequency detecting unit 401 serves to modify the order of instructions contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
  • the compressed/executable instruction correspondence table 7 suitable for the respective executable program can be quickly and easily generated by means of the instruction sequence occurrence frequency detecting unit 401 and the compressed instruction definition unit 601 .
  • the executable program 10 having been compressed can be quickly and easily generated by means of the compressed/executable instruction correspondence table 7 .
  • FIG. 1 shows a block diagram showing an information processing apparatus in accordance with a fourth embodiment of the present invention.
  • the differences of the fourth embodiment from the third embodiment reside in that an instruction sequence occurrence frequency detecting unit 403 serves to generate an instruction sequence occurrence frequency data 508 by the use of an instruction sequence pattern templates 3 .
  • the instruction sequence pattern templates 3 are templates which are registered in advance the patterns of the compressed instructions and the corresponding sequences of executable instructions to be compressed together with the formats of the compressed instructions for compressing the corresponding sequences of executable instructions.
  • the compressed instructions may be given arbitrary mnemonies distinctive from each other, for example, compress_inst_ 1 , compress_inst_ 2 , compress_inst_ 3 , . . .
  • the format of the compressed instructions may be defined in order that he bit width of the compressed instructions is equal to the bit width of the respective instructions contained in the instructions sequence as compressed.
  • the instruction sequence occurrence frequency detecting unit 403 referrs to the instruction sequence pattern templates 3 and compares the instruction sequences contained in the executable object code 2 of the target program desired to run by the processor 151 with the instruction sequence pattern as registered in the instruction sequence pattern templates 3 by a pattern matching algorithm in order to detect instruction sequence patterns and obtain the occurrence frequency thereof and the instruction sequence occurrence frequency data 503 .
  • the instruction sequence occurrence frequency detecting unit 403 serves to modify the value of a field of an instruction contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, in the same manner as the instruction sequence occurrence frequency detecting unit 401 , and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
  • the instruction sequence occurrence frequency detecting unit 403 serves to modify the order of instructions contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, in the same manner as the instruction sequence occurrence frequency detecting unit 401 , and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
  • the compressed instruction definition unit 6 referrs to the instruction sequence occurrence frequency data 503 as obtained by the instruction sequence occurrence frequency detecting unit 403 , defines compressed instructions by selecting instruction sequences having occurrence frequencies higher than a predetermined value on the basis of the instruction sequence occurrence frequency data 503 and then generate the compressed/executable instruction correspondence table 7 indicative of the correspondence between the compressed instructions as defined with reference to the instruction sequence pattern templates 3 and the sequences of executable instructions corresponding to the compressed instructions.
  • FIG. 17 shows an example of the instruction sequence pattern templates 3 .
  • the instruction sequence pattern template supports up to three compressed instructions compatible with the instruction pattern as illustrated and corresponding to instruction sequences each composed of two executable instructions.
  • FIG. 18 illustrates examples of an assembler source file 203 and instruction sequence occurrence frequency data corresponding to the executable object code 2 .
  • the instruction sequence occurrence frequency data 503 as illustrated in FIG. 18 is obtained.
  • the compression of the instruction sequence composed of two executable instructions is for example such that the instruction on the first line of
  • the instruction sequence having up to two operands is for example such that the instruction sequence composed of the instruction on the first line and the instruction on the second line, i.e.,
  • the candidates of the instruction sequences for definition of compressed instructions are selected on the basis of the instruction sequence occurrence frequency data in order to generate the compressed/executable instruction correspondence table 7 as illustrated in FIG. 13 .
  • the object conversion unit 8 serves to generate the executable object code 112 as compressed by referring to the compressed/executable instruction correspondence table 7 generated by the compressed instruction definition unit 6 and converting the sequences of executable instructions to be compressed into the corresponding compressed instructions.
  • the object conversion unit 8 also serves to store the executable object code 112 as compressed in the main memory 101 .
  • the executable instruction extracting unit reconfiguration unit 9 serves to reconfigure the executable instruction extracting unit 14 in order that the compressed instructions as defined are extended into the corresponding executable instructions with reference to the compressed/executable instruction correspondence table 7 generated by the compressed instruction definition unit 6 .
  • the executable instruction extracting unit reconfiguration unit 9 corresponds to the configurator of the FPGA while in the case that the executable instruction extracting unit 14 is defined in terms of a description of HDL, the executable instruction extracting unit reconfiguration unit 9 is implemented by a conversion filter which converts the description to an HDL description corresponding to the compressed/executable instruction correspondence table 7 . Also, the executable instruction extracting unit reconfiguration unit 9 serves to delete the compressed instructions previously implemented from the executable instruction extracting unit 14 .
  • the instruction sequence as registered in the instruction sequence pattern template 3 are detected in the executable object code 2 which runs in the processor 151 .
  • the instruction sequences as detected are selectively defined as compressed instructions in accordance with the occurrence frequencies thereof.
  • the compressed/executable instruction correspondence table 7 is generated by the compressed instruction definition unit 6 on the basis of the compressed instructions as defined and the corresponding sequence of executable instructions.
  • the executable instruction extracting unit 14 is reconfigured by means of the executable instruction extracting unit reconfiguration unit 9 .
  • the sequences of executable instructions within the executable object code 2 is converted into the corresponding the compressed instructions as defined in order to generate the executable object code 112 as compressed, which is then stored in the main memory 101 .
  • the executable object code 112 stored in the main memory 101 are extended into the corresponding executable instructions, which are sequentially decoded by the instruction decoding unit 12 for execution.
  • the executable instruction extracting unit 14 is reconfigured by the executable instruction extracting unit reconfiguration unit 9 after defining the compressed instruction in the same manner as explained above, and then the new executable object code 112 as compressed is run.
  • the compressed instructions can be optimally defined for the respective target program running on the same processor so that the number of the constituent instructions can be suppressed, resulting in compaction of the memory 101 for storing the target program.
  • FIG. 19 shows a block diagram showing an information processing apparatus in accordance with the fifth embodiment.
  • the apparatus as illustrated in FIG. 19 is characterized in that the target program for running on the processor 1 is defined and given in the form of the assembler source file 202 as illustrated in FIG. 20A rather than executable object code and that an object code generation unit 21 is provided in place of the object conversion unit 8 as illustrated in FIG. 16 in order to convert the sequence of executable instructions contained in the assembler source file to the corresponding compressed instruction on the basis of the compressed/executable instruction correspondence table 7 while the instruction execution unit 22 functions also as the executable instruction extracting unit reconfiguration unit 9 as illustrated in FIG. 16 for reconfiguring the executable instruction extracting unit 14 with reference to the compressed/executable instruction correspondence table 7 . While the other constituents elements have the same structures and functions of the previous embodiment, detailed explanation is not repeated.
  • FIG. 21 illustrates an example of the instruction sequence occurrence frequency of the assembler source file 202 .
  • the compressed/executable instruction correspondence table 7 generated on the basis of the instruction sequence occurrence frequency data 5 is, for example, as illustrated in FIG. 22A on the basis of which the assembler source file is converted in order to include the compressed instructions as defined.
  • the present invention is not depending upon the representation of the original instruction code and whether or not the executable instruction extracting unit reconfiguration unit 9 is implemented inside or outside of the processor.

Abstract

An information processing apparatus is provided with a executable instruction extracting unit which is reconfigured by means of a executable instruction extracting unit reconfiguration unit with reference to a compressed/executable instruction correspondence table optimized for the respective executable program, which has been made up with an compressed instruction. The compressed instruction is extended into the corresponding executable instructions by means of the executable instruction extracting unit as reconfigured.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is related to an information processing apparatus provided with an optimized executable instruction extracting unit for extending a compressed instruction into the corresponding executable instructions in accordance with the instruction code of a target executable program.
2. Description of the Related Art
In the field of control systems with embedded microcomputers, the size of instruction code in the memory of a processor can influence the production cost of the entire system. A smaller size of instruction code in the memory has an advantage in costs. The technique of compressing the executable instructions and extending the compressed instructions is one for techniques of reducing the size of instruction code in the memory.
In the case of the executable instructions, each instruction as pointed by an address register and fetched from the memory is latched by an instruction register and transferred to an instruction decoding unit through a multiplexer in order to decode the executable instructions.
On the other hand, in the case of the compressed instructions, each instruction as pointed by the address register and fetched from the memory is extended into the corresponding executable instructions and then transferred to the instruction decoding unit through the multiplexer in order to decode the executable instructions.
In accordance with “Intel Architecture Optimization Manual”, 1997, Intel Corporation, a “macro-instruction” stored in the instruction memory of the processor as discussed therein is generally extended into a plurality of corresponding “micro-ops”. Furthermore, in accordance with “TMS320C3x User's Guide”, 1997, TEXAS INSTRUMENTS, two instructions of “MPYI3” and “ADDIY3” for example are compressed as a compressed instruction “MPYI3| |ADDIY3” by imposing restrictions upon the usage such as the restrictions upon the usage the range of the register number available within the register field in the instruction format.
Such a compressed instruction of this kind is generated by compressing an instruction sequence which frequently occurs in the instruction codes of many application programs. However, in the actual case, there are a variety of application programs. Namely, while the compressed instruction set as defined by one processor is effective for a specific type of application program, it frequently becomes ineffective for another type of application program.
In order to improve the shortcomings, it has been contemplated to change the processor for the respective application program under question in order to make use of the compressed instruction set as optimized for the application program. However, it is ineffective to use different processors for different application programs. This is because the programmers are requested to understand the basic architecture of the processor and the software development environment each time as a new processor is employed. On the other hand, it is frequently the case that there is no processor available supporting the compressed instructions which a user desires. This is because many processors are designed in order to support the compressed instructions suitable for major application programs of which a substantial output of copies are expected.
As explained above, in the case of the prior art information processing apparatuses, the compressed instruction set is fixedly defined for each system. For this reason, while the compressed instruction set as defined in the system is effective for a specific type of application program, it becomes ineffective for another type of application program. In this case, there is the disadvantage that the use of compressed instructions can no longer improve the performance of the system.
SUMMARY OF THE INVENTION
It is an object of the present invention to provide an information processing apparatus having a compact storage region required of an executable program with a reduced number of instructions constituting the executable program.
Particularly, the information processing apparatus in accordance with the present invention is characterized by provision of a executable instruction extracting unit for extending a compressed instruction into a plurality of corresponding executable instructions, and a reconfiguration unit for reconfiguring and optimizing the executable instruction extracting unit suitable for the executable program.
In accordance with the present invention, the executable instruction extracting unit is reconfigured for the respective target program so that the number of the constituent instructions can be suppressed, resulting in compaction of the storage region for storing the target program.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram showing an information processing apparatus in accordance with a first embodiment of the present invention.
FIG. 2 shows an exemplary table of a compressed/executable instruction correspondence table.
FIG. 3 shows an example of assemble code corresponding to the executable object code as illustrated in FIG. 1.
FIGS. 4A-4C show an example of a executable instruction extracting unit.
FIG. 5 is a block diagram showing an exemplary system comprising the processor and the main memory as illustrated in FIG. 1.
FIG. 6 is an operational timing chart of signals within a processor.
FIG. 7 is a block diagram showing an information processing apparatus in accordance with a second embodiment of the present invention.
FIG. 8 is a block diagram showing an information processing apparatus in accordance with a third embodiment of the present invention.
FIG. 9 illustrates an assembler source file and instruction sequence occurrence frequency data as illustrated in FIG. 8.
FIG. 10 shows an example of the compressed/executable instruction correspondence table as illustrated in FIG. 8.
FIG. 11 shows an example of the assembler source file corresponding to the executable object code as compressed.
FIG. 12 illustrates other examples of the assembler source file and instruction sequence occurrence frequency data as illustrated in FIG. 8.
FIG. 13 shows another example of the compressed/executable instruction correspondence table as illustrated in FIG. 8.
FIG. 14 shows an example of the instruction sequence which is not compressed as a compressed instruction.
FIG. 15 shows another example of the assembler source file corresponding to the executable object code as compressed.
FIG. 16 shows a block diagram showing an information processing apparatus in accordance with a fourth embodiment of the present invention.
FIG. 17 shows an example of the instruction sequence pattern templates as illustrated in FIG. 16.
FIG. 18 illustrates an example of the assembler source file corresponding to the executable object code as illustrated in FIG. 16 and an example of instruction sequence occurrence frequency data as illustrated in FIG. 16.
FIG. 19 shows a block diagram showing an information processing apparatus in accordance with a fifth embodiment of the present invention.
FIG. 20 illustrates an example of an assembler source file as illustrated in FIG. 19 and an example of assembler source code corresponding to the executable object code as compressed and generated on the basis of the assembler source file.
FIG. 21 illustrates an example of instruction sequence occurrence frequency data as illustrated in FIG. 19.
FIGS. 22A and 22B show another example of the compressed/executable instruction correspondence table as illustrated in FIG. 19.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
Hereinbelow, several preferred embodiments in accordance with the present invention will be explained in conjunction with the accompanied drawings.
[EMBODIMENT 1]
FIG. 1 shows a block diagram showing an information processing apparatus in accordance with a first embodiment of the present invention.
In the figure, the information processing apparatus of this embodiment is provided with a processor 151 and an executable instruction extracting unit reconfiguration unit 9. The processor 151 is composed of an address register 100, an instruction register 102, a multiplexer 104, an instruction cache 105, an instruction decoding unit 12, an instruction execution unit 13 for executing instructions as decoded by the instruction decoding unit 12, and an executable instruction extracting unit 14.
A compressed/executable instruction correspondence table 7 is input to the executable instruction extracting unit reconfiguration unit 9. The executable instruction extracting unit reconfiguration unit 9 serves to reconfigure the executable instruction extracting unit 14 on the basis of the compressed/executable instruction correspondence table 7.
FIG. 2 shows an exemplary table of the compressed/executable instruction correspondence table 7.
Executable object code 110 having been compressed is input to a main memory 101.
FIG. 2 shows an example of assemble code corresponding to the executable object code 110.
The executable instruction extracting unit 14 is designed to be reconfigurable by external means and serves to convert the constituent compressed instructions into the corresponding sequence of executable instructions by extending the respective compressed instructions. For example, in the case that the processor 151 is fixedly designed, the executable instruction extracting unit 14 is composed of a Field Programmable Gate Array (FPGA), Programmable Logic Array and so forth. Alternatively, in the case that the processor 151 is defined by a class Hardware Description Languages (HDL) or a class of Description Languages for CAD or Netlist with the restriction conditions posed thereto and a variety of configuration files, the description, i.e., the configuration itself of the executable instruction extracting unit 14 is assumed to be given to allow reconfiguration.
FIGS. 4A and 4B show an example of source code of HDL to describe the executable instruction extracting unit 14. The HDL used in Verilog, which is one of the representative HDLs. Also, the same figures show an example that two compressed instructions, each of which consists of two executable instructions as illustrated in FIG. 2, are defined.
The file as illustrated in FIG. 4C is prepared and included by the name of “compress_extend_table” in line 3 of the source code as illustrated in FIG. 4A, and therefore the files as illustrated in FIGS. 4A, 4B and 4C are complied in order to construct the executable instruction extracting unit 14.
The executable instruction extracting unit reconfiguration unit 9 serves to perform reconfiguration of the executable instruction extracting unit 14 by rewriting the file as illustrated in FIG. 4C which is included in the file as illustrated in FIGS. 4A and 4B.
Also, the file as illustrated in FIGS. 4A and 4B itself can be rewritten to perform reconfiguration of the executable instruction extracting unit 14. Namely, if the “module extender” is included in the HDL description as the definition of the entirety of the processor 151, the included “module extender” is recognized as the executable instruction extracting unit 14 and therefore the process of generating the entirety of the “module extender” is recognized as the reconfiguration of the executable instruction extracting unit 14.
Next, the executable instruction extracting unit 14 will be explained in the case that it is implemented by an FPGA.
The FPGA is composed of a plurality of cells arranged within the chip. Each cell in turn is composed of combination of a plurality of F/Fs (flip-flops) and switches functioning as logics. The cells are arranged in a matrix array in the form of a grid with interconnection wirings between adjacent cells, i.e, across bars of the grid on which the switches are located in order to determine how to interconnect the respective cells. The information of the configuration of the interconnection is input in the form of packets, and the corresponding configuration is maintained as long as the electric power is being supplied. In other words, some packet is input in order to determine the states of the switches within a certain cell corresponding to a required logic while another packet is input in order to determine the states of the switches located on the interconnection between one cell and wirings. After the states of all the switches have been determined, the configuration of the FPGA is maintained.
In accordance with the present invention, an FPGA is formed within the same processor which is provided with I/O pins through which packets can be input in order to implement the reconfigurable portion of the executable instruction extracting unit 14.
Next, referring to FIG. 5 and FIG. 6, expansion of the compressed instruction into the corresponding executable instructions will be explained.
FIG. 5 shows a block diagram showing the connection relationship among the address register 100, the main memory 101, the instruction register 102, the multiplexer 104, the instruction cache 105, the instruction decoding unit 12, the instruction execution unit 13 and the executable instruction extracting unit 14 in accordance with the first embodiment.
In FIG. 5, each instruction as pointed by the address register 100 and fetched from the instruction cache 105 or the main memory 101 is either a executable instruction or a compressed instruction. In the case of a executable instruction, it is latched by the instruction register 102 and then transferred to the instruction decoding unit 12 through the multiplexer 104 in order to decode the executable instruction. On the other hand, in the case of a compressed instruction, it is extended into the corresponding executable instructions and then sequentially transferred to the instruction decoding unit 12 through the multiplexer 104 in order to decode the executable instructions.
FIG. 6 shows an operational timing chart of fetching executable and compressed instructions and decoding them.
As illustrated in FIG. 6, the executable instruction extracting unit 14 serves to extend a compressed instruction B into the corresponding executable instructions b1, b2 and b3 while it transmits control signals to the multiplexer 104 in order to input to the instruction decoding unit 12 an instruction A, the instruction b1, the instruction b2 and the instruction b3 in this order in synchronism with clocks, while it transmits control signals to the address register 100 to maintain the content thereof in order that the executable instruction C next to the compressed instruction B is supplied to the instruction decoding unit 12 just after the instruction b3.
In order to extend the compressed instruction B into the corresponding executable instructions b1, b2 and b3 and transferred in the appropriate order as illustrated in FIG. 6 by appropriate hardwired control, the executable instruction b1 is directly output; the executable instruction b2 is output through one flip-flop; and the executable instruction b3 is output through two flip-flops.
As explained above, in accordance with the first embodiment, the executable instruction extracting unit 14 is reconfigured on the basis of the compressed/executable instruction correspondence table 7 in order to extend each compressed instruction contained in the executable object code 110 as compressed into the corresponding executable instructions, which are then decoded by means of the instruction decoding unit 12 and executed by means of the instruction execution unit 13.
When the executable object code 110 as compressed is replaced by new executable object code as compressed, the executable instruction extracting unit 14 is reconfigured on the basis of a new compressed/executable instruction correspondence table for the new compressed instructions contained in the new executable object code. The executable instruction extracting unit 14 as reconfigured serves to extend each new compressed instruction into the corresponding executable instructions, which are then decoded by means of the instruction decoding unit 12 and executed by means of the instruction execution unit 13.
As explained above, in accordance with the first embodiment, the executable instruction extracting unit is optimally reconfigured for the respective target program so that the number of the constituent instructions can be suppressed, resulting in compaction of the storage region for storing the target program.
While the compressed instructions are input to the executable instruction extracting unit 14 from the main memory 101 located external to the processor through the instruction cache 105 and the instruction register 102 in the case of the first embodiment, as follows.
The compressed instructions are input to the executable instruction extracting unit from a main memory located external to the processor through the instruction register internal to the processor.
The compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through the instruction register internal to the processor.
The compressed instructions are input to the executable instruction extracting unit from a main memory located external to the processor through an instruction SRAM internal to the processor and the instruction register internal to the processor.
The compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through the instruction cache internal to the processor and the instruction register internal to the processor.
The compressed instructions are input to the executable instruction extracting unit from a ROM located external to the processor through an instruction SRAM internal to the processor and the instruction register internal to the processor.
The compressed instructions are input to the executable instruction extracting unit from a ROM located internal to the processor through the instruction register internal to the processor.
Usually, the memory space defined by the address available in an instruction SRAM is divided into two banks. For example, instructions are transferred to the bank 1 of the SRAM from the main memory under Direct Memory Access control while the instructions saved in the bank 2 of the SRAM are transferred to the executable instruction extracting unit from the bank 2 of the SRAM through the instruction register. When the execution of the instructions saved in the bank 2 of the SRAM has been finished, the banks of the SRAM are switched. Namely, the address range accessed under Direct Memory Access control and the address range accessed by the instruction register are switched followed by the similar operation.
[Embodiment 2]
Next, a second embodiment of the present invention will be explained with reference to FIG. 7. As illustrated in the same figure, the differences of the second embodiment from the first embodiment resides in that an instruction execution unit 22 functions also as the executable instruction extracting unit reconfiguration unit 9 and serves to reconfigure the executable instruction extracting unit 14 on the basis of the compressed/executable instruction correspondence table 7. While the other constituents elements have the same structures and functions of the previous embodiment, detailed explanation is not repeated.
The compression/expansion correspondence table 7 can be referred to by several procedures, for example, by defining compressed instructions for all or part of the entries with operands registered in the compression/expansion correspondence table 7 while the executable instruction extracting unit reconfiguration unit 9 is formed with one or more instruction sequences as illustrated in FIG. 9. Also, in accordance with another of the alternative techniques for referring to the compression/expansion correspondence table 7, the table 7 is written in the main memory 101 or a data SRAM located inside of the processor and referred to by means of a load instruction and so forth. Furthermore, in accordance with a further one of the alternative techniques for referring to the compression/expansion correspondence table 7, the instruction execution unit 22 is designed to incorporate the table 7 within itself.
In the case that the instruction execution unit 22 is designed to incorporate the compression/expansion correspondence table 7 within itself, it is implemented in the same manner as the executable instruction extracting unit 14 is reconfigured.
Also in accordance with the second embodiment of this design, there are similar advantages as in the first embodiment.
[Embodiment 3]
Next, a third embodiment of the present invention will be explained with reference to FIGS. 8 to 15.
FIG. 8 shows a schematic diagram showing the overall configuration of the third embodiment. The differences of the third embodiment from the first embodiment resides in that the compressed/executable instruction correspondence table 7 is generated by an instruction sequence occurrence frequency detecting unit 401 and a compressed instruction definition unit 601 and that executable object code 111 is generated by an object conversion unit 801.
FIG. 9 illustrates an assembler source file 203 and instruction sequence occurrence frequency data 501. With reference to the same figure, the instruction sequence occurrence frequency detecting unit 401 will be explained.
The instruction sequence occurrence frequency detecting unit 401 serves to obtain the occurrence frequency of the instruction sequences contained in the assembler source file 203 by comparing each adjacent pair of the executable instructions contained therein.
For example, from the instruction on the first line of the assembler source file 203, i.e,
sll r2, r2, 16
and the instruction on the second line, i.e,
lw r3, 0(r2),
the instruction sequence of
sll r2, r2, 16 and
lw r3, 0(2)
is counted as the occurrence frequency=1.
Also, from the instruction on the second line of the assembler source file 203, i.e,
lw r3, 0(r2)
and the instruction on the third line, i.e,
lw r3, 0(5)
the instruction sequence of
lw r3, 0(r2) and
lw r3, 0(5)
is counted as the occurrence frequency=1.
The occurrence frequency of the instruction sequence of the third line and the fourth line and the occurrence frequency of the instruction sequence of the fourth line and the fifth line are counted respectively in the same manner.
Next, the instruction on the fifth line, i.e,
sll r2, r2, 16
is identical to the instruction on the first line while the instruction on the sixth line, i.e,
lw r3, 0(r2)
is identical to the instruction on the second line.
Accordingly, the instruction sequence of
sll r2, r2, 16 and
lw r3, 0(2)
is counted as the occurrence frequency=2
The instruction sequence occurrence frequency data 501 is generated in this manner.
For example, the instruction sequence of
sll r2, r2, 16
lw r3, 0(r2)
is compressed as a compressed instruction as “compress_inst 0 r2, r3”0 and registered in the compressed/executable instruction correspondence table 7.
FIG. 10 shows an example of the compressed/executable instruction correspondence table 7. The assembler source file is compressed on the basis of the compressed/executable instruction correspondence table 7 in order to generate an assembler source file as compressed. FIG. 10 shows an example of the assembler source file as compressed.
Next, an exemplary modification of the instruction sequence occurrence frequency detecting unit 401 will be explained.
Namely, the instruction sequence occurrence frequency detecting unit 401 serves to modify the value of a field of an instruction contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
More specifically speaking with reference to FIG. 12, when the instructions on the first and second lines of the assembler source file 204 are taken into consideration, the register r2 appearing twice as operands in the instruction on the first line appears again as an operand in the instruction on the second line and therefore these operands are commonly labeled rA while the register r3 appearing as an operand in the instruction on the second line is labeled rB.
The instruction on the first line of the assembler source file 203, i.e,
sll r2, r2, 16
and the instruction on the second line, i.e,
lw r3, 0(r2),
are then represented by the instruction sequence of
sll rA, rA, 16 and
lw rB, 0(rA)
which is then counted as the occurrence frequency=1.
Also, the instructions on the fifth and sixth lines are expressed by the instruction sequence of
sll rA, rA, 16
lw rB, 0(rA)
which is then counted as the occurrence frequency=1 in the same manner.
Furthermore, the register r9 appearing as an operand in the instruction on the eighth line and the instruction on the ninth line is labeled rA. The instructions on the eighth and ninth lines are expressed also by the instruction sequence of
sll rA, rA, 16
lw rB, 0(rA)
which is then counted as the occurrence frequency=3.
The instruction sequence of the instruction on the sixth line, i.e,
lw r3, 0(r2)
and the instruction on the seventh line, i.e,
addu r3, r3, r2
and the instruction sequence of the instruction on the ninth line, i.e,
lw r3, 0(r9)
and the instruction on the tenth line, i.e,
addu r3, r3, r9
are commonly expressed by the instruction sequence of
lw rA, 0(rB)
addu rA, rA, rB
which is then counted as the occurrence frequency=2.
The instruction sequence of the instruction on the eleventh line, i.e,
mult r4, r7, r4
and the instruction on the twelve line, i.e,
sra r4, r4, 15
and the instruction sequence of the instruction on the fifteenth line, i.e,
mult r3, r7, r3
and the instruction on the sixteenth line, i.e,
sra r3, r3, 15
are commonly expressed by the instruction sequence of
mult rA, rB, rA
sra rA, rA, 15
which is then counted as the occurrence frequency=2.
The remaining instruction sequences are counted as the occurrence frequency=1. The instruction sequence occurrence frequency data 502 as illustrated in FIG. 12 is obtained in this manner.
As a result, two instruction sequences of
sll rA, rA, 16
lw rB, 0(rA)
and
mult rA, rB, rA
sra rA, rA, 15
as illustrated in FIG. 13 and one instruction sequence of
lw rA, 0(rB)
addu rA, rA, rB
as illustrated in FIG. 14 are the candidates of the compressed instructions.
In the case that the requirement of defining compressed instructions is the occurrence frequency of the corresponding sequence of executable instructions is determined as no smaller than 2, the above three candidates are defined as the compressed instructions.
On the other hand, in the case that the requirement of compressed instructions is the occurrence frequency of the corresponding sequence of executable instructions is no smaller than 3, only the candidate of
sll rA, rA, 16
lw rB, 0(rA)
is defined as the compressed instruction.
The compressed instructions may be given arbitrary mnemonics distinctive from each other, for example,
compress_inst_1 rA, rB={sll rA, rA, 16; lw rB, 0(rA)}
compress_inst_2 rA, rB={lw rA, 0(rB); addu rA, rA, rB}
compress_inst_3 rA, rB={mult rA, rB, rA; sra rA, rA, 15}
Meanwhile, in the case that there is a executable instruction contained in a plurality of candidates of compressed instructions, the compressed instruction as actually defined has to be selected with reference to the occurrence frequencies thereof.
More specifically speaking, the instruction on the ninth line, i.e,
lw r3, 0(r9)
is contained in two candidates of compressed instructions, i.e,
compress_inst_1 rA, rB={sll rA, rA, 16; lw rB, 0(rA)}
compress_inst_2 rA, rB={lw rA, 0(rB); addu rA, rA, rB}
and therefore the candidate having a higher occurrence frequency, i.e,
compress_inst_1 rA, rB={sll rA, rA, 16; lw rB, 0(rA)}
is defined as a compressed instruction while the other candidate, i.e,
compress_inst_2 rA, rB={lw rA, 0(rB); addu rA, rA, rB}
is not defined as a compressed instruction.
FIG. 13 shows the assembler source file obtained by compressing the assembler source file 204 as illustrated in FIG. 12 on the basis of the compressed/executable instruction correspondence table 7.
Furthermore, the format of the compressed instructions is desirably defined in order that the bit width of the compressed instructions is equal to the bit width of the respective instructions contained in the instructions sequence as compressed.
The advantages of the same bit width are as follows. In the case of RISC (Reduced Instruction Set Computer) processors, the improvement of the processing speed (i.e., elevation of the operational frequency) is implemented partly by simplifying the instruction fetch control and the decoding control. One of the measures of the simplification is the fixed bit width of the instructions. By this configuration, the operation code and the register number can be directly accessed from fixed positions of the instruction register without particular operation, and therefore, the hardwired operation can be accelerated by the time of the access operation. Alternatively, while the present invention is related to the compression of the instruction sequences, the bit width of the compressed instructions may be designed shorter than the bit width of the respective instructions contained in the instructions sequence as compressed, depending upon the case. However, taking into consideration the tradeoff made between the high speed operation and the compression, it may be effective to maintain the bit width of the compressed instructions in order to cope with the specification required of the application program.
Also, the instruction sequence occurrence frequency detecting unit 401 serves to modify the order of instructions contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
For example, either of the instruction sequence of
addu r1,r2,r3
addu r4,r5,r6
and the instruction sequence of
addu r4,r5,r6
addu r1,r2,r3
can be inversed in order to arrange the same order.
Also in accordance with the third embodiment of this design, there are similar advantages as in the first embodiment. Furthermore, the compressed/executable instruction correspondence table 7 suitable for the respective executable program can be quickly and easily generated by means of the instruction sequence occurrence frequency detecting unit 401 and the compressed instruction definition unit 601. Furthermore, the executable program 10 having been compressed can be quickly and easily generated by means of the compressed/executable instruction correspondence table 7.
[Embodiment 4]
Next, a fourth embodiment of the present invention will be explained.
FIG. 1 shows a block diagram showing an information processing apparatus in accordance with a fourth embodiment of the present invention. The differences of the fourth embodiment from the third embodiment reside in that an instruction sequence occurrence frequency detecting unit 403 serves to generate an instruction sequence occurrence frequency data 508 by the use of an instruction sequence pattern templates 3.
The instruction sequence pattern templates 3 are templates which are registered in advance the patterns of the compressed instructions and the corresponding sequences of executable instructions to be compressed together with the formats of the compressed instructions for compressing the corresponding sequences of executable instructions. The compressed instructions may be given arbitrary mnemonies distinctive from each other, for example, compress_inst_1, compress_inst_2, compress_inst_3, . . . Furthermore, the format of the compressed instructions may be defined in order that he bit width of the compressed instructions is equal to the bit width of the respective instructions contained in the instructions sequence as compressed.
The instruction sequence occurrence frequency detecting unit 403 referrs to the instruction sequence pattern templates 3 and compares the instruction sequences contained in the executable object code 2 of the target program desired to run by the processor 151 with the instruction sequence pattern as registered in the instruction sequence pattern templates 3 by a pattern matching algorithm in order to detect instruction sequence patterns and obtain the occurrence frequency thereof and the instruction sequence occurrence frequency data 503.
Also in this case, the instruction sequence occurrence frequency detecting unit 403 serves to modify the value of a field of an instruction contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, in the same manner as the instruction sequence occurrence frequency detecting unit 401, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
Furthermore, the instruction sequence occurrence frequency detecting unit 403 serves to modify the order of instructions contained in the instruction sequence as detected under the condition that the result of execution of the executable program is not influenced by the modification, in the same manner as the instruction sequence occurrence frequency detecting unit 401, and as a result if the instruction sequence as detected is identical to one of the instruction sequences previously detected, the occurrence frequency of said one of the instruction sequences is counted up.
The compressed instruction definition unit 6 referrs to the instruction sequence occurrence frequency data 503 as obtained by the instruction sequence occurrence frequency detecting unit 403, defines compressed instructions by selecting instruction sequences having occurrence frequencies higher than a predetermined value on the basis of the instruction sequence occurrence frequency data 503 and then generate the compressed/executable instruction correspondence table 7 indicative of the correspondence between the compressed instructions as defined with reference to the instruction sequence pattern templates 3 and the sequences of executable instructions corresponding to the compressed instructions.
FIG. 17 shows an example of the instruction sequence pattern templates 3. The instruction sequence pattern template supports up to three compressed instructions compatible with the instruction pattern as illustrated and corresponding to instruction sequences each composed of two executable instructions.
FIG. 18 illustrates examples of an assembler source file 203 and instruction sequence occurrence frequency data corresponding to the executable object code 2. When searching the instruction sequences as illustrated in FIG. 17, i.e., the instruction sequences having up to two operands, among from the instruction sequences contained in the assembler source file 201, the instruction sequence occurrence frequency data 503 as illustrated in FIG. 18 is obtained.
In this case, “the compression of the instruction sequence composed of two executable instructions” is for example such that the instruction on the first line of
sll r4, r4, 16
and the instruction on the first line of
lw r7, 0(r4)
constitutes the instruction sequence of
sll r4, r4, 16
lw r7, 0(r4)
which is compressed.
Also, “the instruction sequence having up to two operands” is for example such that the instruction sequence composed of the instruction on the first line and the instruction on the second line, i.e.,
sll r4, r4, 16
lw r7, 0(r4)
has two operands of r4 and r7 so that it is an instruction sequence of this kind. However, the instruction sequence composed of the instruction on the second line and the instruction on the third line, i.e.,
lw r7,0(r4)
lw r3,0(r5)
has four operands of r3, r4, r5 and r7 so that it is not an instruction sequence of this kind.
The candidates of the instruction sequences for definition of compressed instructions are selected on the basis of the instruction sequence occurrence frequency data in order to generate the compressed/executable instruction correspondence table 7 as illustrated in FIG. 13.
The object conversion unit 8 serves to generate the executable object code 112 as compressed by referring to the compressed/executable instruction correspondence table 7 generated by the compressed instruction definition unit 6 and converting the sequences of executable instructions to be compressed into the corresponding compressed instructions. The object conversion unit 8 also serves to store the executable object code 112 as compressed in the main memory 101.
The executable instruction extracting unit reconfiguration unit 9 serves to reconfigure the executable instruction extracting unit 14 in order that the compressed instructions as defined are extended into the corresponding executable instructions with reference to the compressed/executable instruction correspondence table 7 generated by the compressed instruction definition unit 6.
In the case that the executable instruction extracting unit 14 is implemented by an FPGA, the executable instruction extracting unit reconfiguration unit 9 corresponds to the configurator of the FPGA while in the case that the executable instruction extracting unit 14 is defined in terms of a description of HDL, the executable instruction extracting unit reconfiguration unit 9 is implemented by a conversion filter which converts the description to an HDL description corresponding to the compressed/executable instruction correspondence table 7. Also, the executable instruction extracting unit reconfiguration unit 9 serves to delete the compressed instructions previously implemented from the executable instruction extracting unit 14.
In this configuration, the instruction sequence as registered in the instruction sequence pattern template 3 are detected in the executable object code 2 which runs in the processor 151. The instruction sequences as detected are selectively defined as compressed instructions in accordance with the occurrence frequencies thereof. The compressed/executable instruction correspondence table 7 is generated by the compressed instruction definition unit 6 on the basis of the compressed instructions as defined and the corresponding sequence of executable instructions. On the basis of the compressed/executable instruction correspondence table 7 as generated, the executable instruction extracting unit 14 is reconfigured by means of the executable instruction extracting unit reconfiguration unit 9. Also, on the basis of the compressed/executable instruction correspondence table 7, the sequences of executable instructions within the executable object code 2 is converted into the corresponding the compressed instructions as defined in order to generate the executable object code 112 as compressed, which is then stored in the main memory 101. The executable object code 112 stored in the main memory 101 are extended into the corresponding executable instructions, which are sequentially decoded by the instruction decoding unit 12 for execution. On the other hand, when other executable object code than the previous executable object code is to run, the executable instruction extracting unit 14 is reconfigured by the executable instruction extracting unit reconfiguration unit 9 after defining the compressed instruction in the same manner as explained above, and then the new executable object code 112 as compressed is run.
In this manner, in accordance with the fourth embodiment, the compressed instructions can be optimally defined for the respective target program running on the same processor so that the number of the constituent instructions can be suppressed, resulting in compaction of the memory 101 for storing the target program.
[Embodiment 5]
Next, a fifth embodiment of the present invention will be explained. FIG. 19 shows a block diagram showing an information processing apparatus in accordance with the fifth embodiment.
In contrast to the information processing apparatus as illustrated in FIG. 16, the apparatus as illustrated in FIG. 19 is characterized in that the target program for running on the processor 1 is defined and given in the form of the assembler source file 202 as illustrated in FIG. 20A rather than executable object code and that an object code generation unit 21 is provided in place of the object conversion unit 8 as illustrated in FIG. 16 in order to convert the sequence of executable instructions contained in the assembler source file to the corresponding compressed instruction on the basis of the compressed/executable instruction correspondence table 7 while the instruction execution unit 22 functions also as the executable instruction extracting unit reconfiguration unit 9 as illustrated in FIG. 16 for reconfiguring the executable instruction extracting unit 14 with reference to the compressed/executable instruction correspondence table 7. While the other constituents elements have the same structures and functions of the previous embodiment, detailed explanation is not repeated.
FIG. 21 illustrates an example of the instruction sequence occurrence frequency of the assembler source file 202. The compressed/executable instruction correspondence table 7 generated on the basis of the instruction sequence occurrence frequency data 5 is, for example, as illustrated in FIG. 22A on the basis of which the assembler source file is converted in order to include the compressed instructions as defined.
In this manner, the present invention is not depending upon the representation of the original instruction code and whether or not the executable instruction extracting unit reconfiguration unit 9 is implemented inside or outside of the processor.
Also in accordance with this embodiment of this design, there are similar advantages as in the fourth embodiment.

Claims (12)

What is claimed is:
1. An information processing apparatus comprising:
an instruction sequence occurrence frequency detecting means for detecting occurrence frequencies of patterns of sequences of executable instructions in an executable program;
a compressed instruction definition means for selecting a sequence of executable instructions to be compressed on the basis of the occurrence frequencies as detected by the instruction sequence occurrence frequency detecting unit, defining a compressed instruction of the sequence of executable instructions as selected, and generating a compressed/executable instruction correspondence table indicative of the correspondence between the compressed instruction as defined and the sequence of executable instructions corresponding to the compressed instruction;
a conversion means for converting the sequence of executable instructions contained in the executable program into the corresponding compressed instruction on the basis of the compressed/executable instruction correspondence table as generated by the compressed instruction definition unit;
an executable instruction extracting means for extending the compressed instruction contained in the executable program into the sequence of corresponding executable instructions in advance of decoding the executable program; and
a reconfiguration means for reconfiguring the executable instruction extracting means on the basis of the compressed/executable instruction correspondence table in order that the compressed instruction as defined is extended into the sequence of the corresponding executable instructions by means of the executable instruction extracting unit.
2. The information processing apparatus as claimed in claim 1 wherein the reconfiguration means includes an instruction execution means for executing instructions as decoded.
3. The information processing apparatus as claimed in claim 2 further comprising:
an instruction sequence pattern template in which are registered the pattern of the instruction sequence to be compressed (the sequence of executable instructions) and a format of the corresponding compressed instruction as compressed,
wherein the instruction sequence occurrence frequency detecting means serves to search the pattern of the sequence of executable instructions as registered and detects the occurrence frequency thereof; and
the compressed instruction definition unit serves to select the pattern of the sequence of executable instructions to be compressed on the basis of the occurrence frequency as detected by the instruction sequence occurrence frequency detecting means, defining a compressed instruction corresponding to the sequence of executable instructions as selected, and generating a compressed/executable instruction correspondence table indicative of the correspondence between the compressed instruction as defined and the sequence of executable instructions corresponding to the compressed instruction.
4. The information processing apparatus as claimed in claim 3 wherein the instruction sequence occurrence frequency detecting means serves to modify at least one of the value of a field of an instruction contained in the instruction sequence as detected and the order of instructions contained in the instruction sequence as detected
under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence is identical to an instruction sequence previously detected in the executable program, the occurrence frequency of the previously detected instruction sequence is counted up.
5. The information processing apparatus as claimed in claim 2 wherein the instruction sequence occurrence frequency detecting means serves to modify at least one of the value of a field of an instruction contained in the instruction sequence as detected and the order of instructions contained in the instruction sequence as detected
under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to an instruction sequence previously detected in the executable program, the occurrence frequency of the previously detected instruction sequence is counted up.
6. The information processing apparatus as claimed in claim 1 further comprising:
an instruction sequence pattern template in which are registered a pattern of the instruction sequence to be compressed (the sequence of executable instructions) and a format of the corresponding compressed instruction,
wherein the instruction sequence occurrence frequency detecting means serves to search the pattern of the sequence of executable instructions as registered and detects the occurrence frequency thereof and the compressed instruction definition means serves to select the pattern of the sequence of executable instructions to be compressed on the basis of the occurrence frequency as detected by the instruction sequence occurrence frequency detecting means, defining a compressed instruction corresponding to the sequence of executable instructions as selected, and generating a compressed/executable instruction correspondence table indicative of the correspondence between the compressed instruction as defined and the sequence of executable instructions corresponding to the compressed instruction.
7. The information processing apparatus as claimed in claim 6 wherein
the instruction sequence occurrence frequency detecting means serves to modify at least one of the value of a field of an instruction contained in the instruction sequence as detected and the order of instructions contained in the instruction sequence as detected
under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to an instruction sequence previously detected in the executable program, the occurrence frequency of the previously detected instruction sequence is counted up.
8. The information processing apparatus as claimed in claim 1 wherein the instruction sequence occurrence frequency detecting means serves to modify at least one of the value of a field of an instruction contained in the instruction sequence as detected and the order of instructions contained in the instruction sequence as detected
under the condition that the result of execution of the executable program is not influenced by the modification, and as a result if the instruction sequence as detected is identical to an instruction sequence previously detected in the executable program, the occurrence frequency of the previously detected instruction sequence is counted up.
9. The information processing apparatus as claimed in claim 1 wherein the bit width of the respective instructions contained in the instruction sequence as compressed is equal to the bit width of the compressed instructions.
10. The information processing apparatus as claimed in claim 1 wherein the executable instruction extracting means is composed of a Field Programmable Gate Array (FPGA).
11. The information processing apparatus as claimed in claim 1 wherein the executable instruction extracting means is designed in Hardware Description Language (HDL).
12. An information processing apparatus comprising:
(a) an instruction sequence occurrence frequency detecting unit configured to:
obtain a first line instruction, a second line instruction, a third line instruction, a fourth line instruction and a fifth line instruction in an executable program;
count a first occurrence frequency of a first instruction sequence comprising the first line instruction and the second line instruction as 1;
compare the first instruction sequence with a second instruction sequence comprising the second line instruction and the third line instruction;
count up the first occurrence frequency if the first instruction sequence is identical to the second instruction sequence;
compare the first instruction sequence with a third instruction sequence comprising the third line instruction and the fourth line instruction;
count up the first occurrence frequency if the first instruction sequence is identical to the third instruction sequence;
compare the first instruction sequence with a fourth instruction sequence comprising the fourth line instruction and the fifth line instruction; and
count up the first occurrence frequency if the first instruction sequence is identical to the fourth instruction sequence;
(b) a compressed instruction definition unit configured to:
receive the first occurrence frequency from the instruction sequence occurrence frequency detecting unit;
compare the first occurrence frequency with a threshold value;
define a first compressed instruction corresponding to the first instruction sequence if the first occurrence frequency is more than the threshold value; and
generate a compressed/executable instruction correspondence table indicative of a correspondence between the first compressed instruction and the first instruction sequence;
(c) a conversion unit configured to:
receive the compressed/executable instruction correspondence table from the compressed instruction definition unit; and
convert the first instruction sequence contained in the executable program into the first compressed instruction on the basis of the compressed/executable instruction correspondence table;
(d) an executable instruction extracting unit configured to extend the first compressed instruction contained in the executable program into the first instruction sequence in advance of decoding the executable program; and
(e) a reconfiguration unit configured to reconfigure the executable instruction extracting unit on the basis of the compressed/executable instruction correspondence table in order that the first compressed instruction is extended into the first instruction sequence by means of the executable instruction extracting unit.
US09/482,262 1999-01-13 2000-01-13 Information processing apparatus provided with an optimized executable instruction extracting unit for extending compressed instructions Expired - Fee Related US6587939B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP692099 1999-01-13
JP11-006920 1999-01-13
JP2000002353A JP3585800B2 (en) 1999-01-13 2000-01-11 Information processing equipment
JP2000-002353 2000-01-11

Publications (1)

Publication Number Publication Date
US6587939B1 true US6587939B1 (en) 2003-07-01

Family

ID=26341144

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/482,262 Expired - Fee Related US6587939B1 (en) 1999-01-13 2000-01-13 Information processing apparatus provided with an optimized executable instruction extracting unit for extending compressed instructions

Country Status (2)

Country Link
US (1) US6587939B1 (en)
JP (1) JP3585800B2 (en)

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013691A1 (en) * 2000-03-15 2002-01-31 Peter Warnes Method and apparatus for processor code optimization using code compression
US20020169946A1 (en) * 2000-12-13 2002-11-14 Budrovic Martin T. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US20030135845A1 (en) * 2001-12-14 2003-07-17 Mitsubishi Denki Kabushiki Kaisha Instruction code conversion apparatus creating an instruction code including a second code converted from a first code
US20030212914A1 (en) * 2001-07-28 2003-11-13 Paul Webster Power efficiency in microprocessor systems
US20040088679A1 (en) * 2002-11-01 2004-05-06 Grala Darius A. Software development system for editable executables
US20050086462A1 (en) * 2001-03-05 2005-04-21 Martin Vorbach Methods and devices for treating and/or processing data
US7010667B2 (en) * 1997-02-11 2006-03-07 Pact Xpp Technologies Ag Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity
US20060253631A1 (en) * 2005-05-03 2006-11-09 International Business Machines Corporation System/tool for resource-conservative installation of compressed archives
US20070106889A1 (en) * 2001-02-21 2007-05-10 Mips Technologies, Inc. Configurable instruction sequence generation
US20070150656A1 (en) * 2002-10-28 2007-06-28 Quicksilver Technology, Inc. Cache for instruction set architecture using indexes to achieve compression
US20070180434A1 (en) * 2006-02-02 2007-08-02 Microsoft Corporation Software support for dynamically extensible processors
US20080178021A1 (en) * 2001-05-19 2008-07-24 At&T Corp. Power efficiency in microprocessors
US7650448B2 (en) 1996-12-20 2010-01-19 Pact Xpp Technologies Ag I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7782087B2 (en) 2002-09-06 2010-08-24 Martin Vorbach Reconfigurable sequencer structure
US7822881B2 (en) 1996-12-27 2010-10-26 Martin Vorbach Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like)
US7822968B2 (en) 1996-12-09 2010-10-26 Martin Vorbach Circuit having a multidimensional structure of configurable cells that include multi-bit-wide inputs and outputs
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging reconfigurable architectures
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7860911B2 (en) 2001-02-21 2010-12-28 Mips Technologies, Inc. Extended precision accumulator
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US8099618B2 (en) 2001-03-05 2012-01-17 Martin Vorbach Methods and devices for treating and processing data
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
USRE43619E1 (en) 2001-08-11 2012-08-28 Ramsle Technology Group Gmbh, Llc Universal computer architecture
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US8812820B2 (en) 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
US8819505B2 (en) 1997-12-22 2014-08-26 Pact Xpp Technologies Ag Data processor having disabled cores
US20140297948A1 (en) * 2001-06-20 2014-10-02 Pact Xpp Technologies Ag Method for processing data
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US20160171025A1 (en) * 2014-12-12 2016-06-16 International Business Machines Corporation Method and apparatus for object storage
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4986431B2 (en) * 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 Processor
JP2007226615A (en) 2006-02-24 2007-09-06 Matsushita Electric Ind Co Ltd Information processor, compression program generation method, and information processing system
JP2011243134A (en) * 2010-05-21 2011-12-01 Mitsubishi Electric Corp Program compression device, program execution device and program
JP5965262B2 (en) * 2012-09-12 2016-08-03 株式会社日立情報通信エンジニアリング Microprocessor and program compilation method
CN104142510A (en) * 2014-07-29 2014-11-12 豪芯微电子科技(上海)有限公司 Data acquisition circuit with variable sampling rate

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835679A (en) 1985-01-24 1989-05-30 Hitachi, Ltd. Microprogram control system
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5768597A (en) * 1996-05-02 1998-06-16 Starfish Software, Inc. System and methods for improved installation of compressed software programs
US5790874A (en) 1994-09-30 1998-08-04 Kabushiki Kaisha Toshiba Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction
US5819097A (en) * 1996-12-09 1998-10-06 Allen Bradley Company, Llc Industrial controller compiler with expandable instruction set
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
US6131192A (en) * 1998-06-18 2000-10-10 Microsoft Corporation Software installation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835679A (en) 1985-01-24 1989-05-30 Hitachi, Ltd. Microprogram control system
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5790874A (en) 1994-09-30 1998-08-04 Kabushiki Kaisha Toshiba Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
US5768597A (en) * 1996-05-02 1998-06-16 Starfish Software, Inc. System and methods for improved installation of compressed software programs
US5819097A (en) * 1996-12-09 1998-10-06 Allen Bradley Company, Llc Industrial controller compiler with expandable instruction set
US6131192A (en) * 1998-06-18 2000-10-10 Microsoft Corporation Software installation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Intel Architecture Optimization Manual, Order No. 242816-003, Intel Corporation, 1997, pp. 1-2 through 3-35.
TMS320C3x, Digital Signal Processing Solutions, Texas Instruments, 1997, pp. 13-1 through 13-166.

Cited By (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822968B2 (en) 1996-12-09 2010-10-26 Martin Vorbach Circuit having a multidimensional structure of configurable cells that include multi-bit-wide inputs and outputs
US8156312B2 (en) 1996-12-09 2012-04-10 Martin Vorbach Processor chip for reconfigurable data processing, for processing numeric and logic operations and including function and interconnection control units
US7650448B2 (en) 1996-12-20 2010-01-19 Pact Xpp Technologies Ag I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures
US8195856B2 (en) 1996-12-20 2012-06-05 Martin Vorbach I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures
US7899962B2 (en) 1996-12-20 2011-03-01 Martin Vorbach I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures
US7822881B2 (en) 1996-12-27 2010-10-26 Martin Vorbach Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like)
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE44383E1 (en) 1997-02-08 2013-07-16 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
US7010667B2 (en) * 1997-02-11 2006-03-07 Pact Xpp Technologies Ag Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity
US8819505B2 (en) 1997-12-22 2014-08-26 Pact Xpp Technologies Ag Data processor having disabled cores
US8468329B2 (en) 1999-02-25 2013-06-18 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US9690747B2 (en) 1999-06-10 2017-06-27 PACT XPP Technologies, AG Configurable logic integrated circuit having a multidimensional structure of configurable elements
US8726250B2 (en) 1999-06-10 2014-05-13 Pact Xpp Technologies Ag Configurable logic integrated circuit having a multidimensional structure of configurable elements
US8312200B2 (en) 1999-06-10 2012-11-13 Martin Vorbach Processor chip including a plurality of cache elements connected to a plurality of processor cores
US7774768B2 (en) 2000-03-15 2010-08-10 Arc International, Plc Method and apparatus for processor code optimization using code compression
US20020013691A1 (en) * 2000-03-15 2002-01-31 Peter Warnes Method and apparatus for processor code optimization using code compression
US7051189B2 (en) * 2000-03-15 2006-05-23 Arc International Method and apparatus for processor code optimization using code compression
US20060212863A1 (en) * 2000-03-15 2006-09-21 Peter Warnes Method and apparatus for processor code optimization using code compression
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US8471593B2 (en) 2000-10-06 2013-06-25 Martin Vorbach Logic cell array and bus system
US9256575B2 (en) 2000-10-06 2016-02-09 Pact Xpp Technologies Ag Data processor chip with flexible bus system
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US20020169946A1 (en) * 2000-12-13 2002-11-14 Budrovic Martin T. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US6865664B2 (en) * 2000-12-13 2005-03-08 Conexant Systems, Inc. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US7860911B2 (en) 2001-02-21 2010-12-28 Mips Technologies, Inc. Extended precision accumulator
US20070106889A1 (en) * 2001-02-21 2007-05-10 Mips Technologies, Inc. Configurable instruction sequence generation
US8447958B2 (en) 2001-02-21 2013-05-21 Bridge Crossing, Llc Substituting portion of template instruction parameter with selected virtual instruction parameter
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US8312301B2 (en) 2001-03-05 2012-11-13 Martin Vorbach Methods and devices for treating and processing data
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US8099618B2 (en) 2001-03-05 2012-01-17 Martin Vorbach Methods and devices for treating and processing data
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US8145881B2 (en) 2001-03-05 2012-03-27 Martin Vorbach Data processing device and method
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US20050086462A1 (en) * 2001-03-05 2005-04-21 Martin Vorbach Methods and devices for treating and/or processing data
US20080178021A1 (en) * 2001-05-19 2008-07-24 At&T Corp. Power efficiency in microprocessors
US20100095094A1 (en) * 2001-06-20 2010-04-15 Martin Vorbach Method for processing data
US20140297948A1 (en) * 2001-06-20 2014-10-02 Pact Xpp Technologies Ag Method for processing data
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US10031733B2 (en) * 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US20030212914A1 (en) * 2001-07-28 2003-11-13 Paul Webster Power efficiency in microprocessor systems
US7076775B2 (en) * 2001-07-28 2006-07-11 At&T Laboratories Cambridge Ltd. Power efficiency in microprocessor systems
USRE43619E1 (en) 2001-08-11 2012-08-28 Ramsle Technology Group Gmbh, Llc Universal computer architecture
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US8407525B2 (en) 2001-09-03 2013-03-26 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US8429385B2 (en) 2001-09-03 2013-04-23 Martin Vorbach Device including a field having function cells and information providing cells controlled by the function cells
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging reconfigurable architectures
US8069373B2 (en) 2001-09-03 2011-11-29 Martin Vorbach Method for debugging reconfigurable architectures
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20030135845A1 (en) * 2001-12-14 2003-07-17 Mitsubishi Denki Kabushiki Kaisha Instruction code conversion apparatus creating an instruction code including a second code converted from a first code
US6871274B2 (en) * 2001-12-14 2005-03-22 Renesas Technology Corp. Instruction code conversion apparatus creating an instruction code including a second code converted from a first code
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
US10579584B2 (en) 2002-03-21 2020-03-03 Pact Xpp Schweiz Ag Integrated data processing core and array data processor and method for processing algorithms
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US8281265B2 (en) 2002-08-07 2012-10-02 Martin Vorbach Method and device for processing data
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8310274B2 (en) 2002-09-06 2012-11-13 Martin Vorbach Reconfigurable sequencer structure
US8803552B2 (en) 2002-09-06 2014-08-12 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7928763B2 (en) 2002-09-06 2011-04-19 Martin Vorbach Multi-core processing system
US7782087B2 (en) 2002-09-06 2010-08-24 Martin Vorbach Reconfigurable sequencer structure
US9274984B2 (en) 2002-09-06 2016-03-01 Pact Xpp Technologies Ag Multi-processor with selectively interconnected memory units
US10296488B2 (en) 2002-09-06 2019-05-21 Pact Xpp Schweiz Ag Multi-processor with selectively interconnected memory units
US7568086B2 (en) * 2002-10-28 2009-07-28 Nvidia Corporation Cache for instruction set architecture using indexes to achieve compression
US20070150656A1 (en) * 2002-10-28 2007-06-28 Quicksilver Technology, Inc. Cache for instruction set architecture using indexes to achieve compression
US6904591B2 (en) * 2002-11-01 2005-06-07 Oz Development, Inc. Software development system for editable executables
US20040088679A1 (en) * 2002-11-01 2004-05-06 Grala Darius A. Software development system for editable executables
US8812820B2 (en) 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
US20060253631A1 (en) * 2005-05-03 2006-11-09 International Business Machines Corporation System/tool for resource-conservative installation of compressed archives
US7478386B2 (en) * 2005-05-03 2009-01-13 International Business Machines Corporation Resource-conservative installation of compressed archives
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US7757224B2 (en) * 2006-02-02 2010-07-13 Microsoft Corporation Software support for dynamically extensible processors
US20070180434A1 (en) * 2006-02-02 2007-08-02 Microsoft Corporation Software support for dynamically extensible processors
US20160171025A1 (en) * 2014-12-12 2016-06-16 International Business Machines Corporation Method and apparatus for object storage
US10089338B2 (en) * 2014-12-12 2018-10-02 International Business Machines Corporation Method and apparatus for object storage

Also Published As

Publication number Publication date
JP2000267848A (en) 2000-09-29
JP3585800B2 (en) 2004-11-04

Similar Documents

Publication Publication Date Title
US6587939B1 (en) Information processing apparatus provided with an optimized executable instruction extracting unit for extending compressed instructions
Marwedel et al. Code generation for embedded processors
KR100300001B1 (en) Dynamic conversion between different instruction codes by recombination of instruction elements
US7934179B2 (en) Systems and methods for logic verification
CN103582871B (en) The method and apparatus of the storage and translation that are entropy encoded software for being embedded in memory hierarchy
US7926061B2 (en) iMEM ASCII index registers
Hu et al. An approach for implementing efficient superscalar CISC processors
US8745631B2 (en) Intelligent memory device with ASCII registers
DE102015002383A1 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
US7203935B2 (en) Hardware/software platform for rapid prototyping of code compression technologies
US20050223384A1 (en) iMEM ASCII architecture for executing system operators and processing data operators
US20040162964A1 (en) Processor capable of switching/reconstituting architecture
US7908603B2 (en) Intelligent memory with multitask controller and memory partitions storing task state information for processing tasks interfaced from host processor
Buyukkurt et al. Impact of high-level transformations within the ROCCC framework
US7594232B2 (en) Intelligent memory device for processing tasks stored in memory or for storing data in said memory
US7823161B2 (en) Intelligent memory device with variable size task architecture
Corliss et al. A DISE implementation of dynamic code decompression
Gruian et al. Bluejep: a flexible and high-performance java embedded processor
Fajardo Jr et al. Towards a multiple-ISA embedded system
US7823159B2 (en) Intelligent memory device clock distribution architecture
Corliss et al. The implementation and evaluation of dynamic code decompression using DISE
Cong et al. Architecture and compiler optimizations for data bandwidth improvement in configurable processors
Zhang et al. A Scaleable DSP System for ASIP Design
Gibert et al. Local scheduling techniques for memory coherence in a clustered VLIW processor with a distributed data cache
CN1318172A (en) Method and system for updating user memory in emulator systems

Legal Events

Date Code Title Description
AS Assignment

Owner name: KABUSHIKI KAISHA TOSHIBA, JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TAKANO, HIROYUKI;REEL/FRAME:010517/0084

Effective date: 20000111

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20150701