WO2014154917A1 - Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software - Google Patents

Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software Download PDF

Info

Publication number
WO2014154917A1
WO2014154917A1 PCT/ES2013/070209 ES2013070209W WO2014154917A1 WO 2014154917 A1 WO2014154917 A1 WO 2014154917A1 ES 2013070209 W ES2013070209 W ES 2013070209W WO 2014154917 A1 WO2014154917 A1 WO 2014154917A1
Authority
WO
WIPO (PCT)
Prior art keywords
instructions
fusion
candidate
macro
instruction
Prior art date
Application number
PCT/ES2013/070209
Other languages
English (en)
French (fr)
Inventor
Marc LUPON
Raul Martinez
Enric Gibert Codina
Kyriakos A. STAVROU
Grigorios Magklis
Sridhar Samudrala
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to US14/129,956 priority Critical patent/US9329848B2/en
Priority to PCT/ES2013/070209 priority patent/WO2014154917A1/es
Publication of WO2014154917A1 publication Critical patent/WO2014154917A1/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the embodiments described herein refer, in general, to computer programming. More specifically, the embodiments refer to a mechanism to facilitate the dynamic and efficient fusion of computer instructions in software programs.
  • Molten instructions eg, Combined Multiplication-Sum at Floating Point (“CMULADD”), etc.
  • CMULADD Combined Multiplication-Sum at Floating Point
  • Figure 1 illustrates a macro-fusion mechanism to facilitate the dynamic and efficient fusion of computer instructions used in a computer device according to one embodiment.
  • Figure 2A illustrates a fusion mechanism according to one embodiment.
  • Figure 2B illustrates macro-fusion operations of candidate instructions, according to one embodiment.
  • Figure 3A illustrates a location in a sequence of optimizer / compiler processes, where the macro-fusion step of the macro-fusion mechanism of Figure 1 is activated according to one embodiment.
  • Figure 3B illustrates a procedure to facilitate dynamic and efficient macro-fusion according to one embodiment.
  • Figure 4A illustrates a procedure to facilitate dynamic and efficient macro-fusion according to an embodiment.
  • Figure 4B illustrates a procedure to facilitate dynamic and efficient macro-fusion according to one embodiment.
  • Figure 5 illustrates a computer system suitable for the implementation of embodiments of the present disclosure, according to one embodiment.
  • the embodiments provide a macro-fusion mechanism to facilitate the dynamic and efficient fusion of computer instructions.
  • the conventional merger of the combination of multiple instructions is not always considered beneficial in terms of time, energy or performance.
  • Conventional merging can take more cycles than the execution time of the operations to be melted, and can end up increasing the critical path of the code executed, as well as the time and energy consumed in the sequence.
  • conventional solutions based on hardware or software, are inflexible and clumsy, and are applied blindly and indiscriminately, further complicating the processes, since improper and / or inconvenient fusion operations can be executed, further affecting the performance in a manner negative.
  • the embodiments provide a macro-fusion mechanism to facilitate the dynamic and efficient fusion of computer instructions, where the mechanism can be integrated into a dynamic binary optimizer, or a compiler (eg, the Just-In-Time Compiler (" JIT ”)) or may be generalized to be included or represented as a static compiler, or provided in other forms of macro-fusion.
  • a compiler eg, the Just-In-Time Compiler (" JIT ")
  • JIT Just-In-Time Compiler
  • Macro-fusion can refer to a dynamic, intelligent and efficient union or combination of programming computer sequences in a single instruction. Macro-fusion can be carried out by the mechanism that can be incorporated into, but not limited to, a static compiler, a hardware unit in a central user interface to dynamically melt instruction sequences, a dynamic binary optimizer or a JIT compiler, etc.
  • CMULADD instructions are used as examples throughout the entire length of the document, and the embodiments are not limited to such instructions only, and are applicable to any number and type of computer instructions (such as CMUL.ADD, Combined Multiplication-Subtraction at Floating Point (“CMULSUB”), the Sum of Integer Numbers with 3 origins ( "ADD3"), Multiplication-Sum of Packaged Whole Numbers (“XMA”), Multiplication-Fused Sum (“FMA”), Multiplication-Subtraction Fused (“FMS”), etc.), provided, for example, by a standard industrial architecture (ISA) or in an internal set of instructions in a co-designed hardware (“HW”) / sofware (“SW”) processor (so that, in the case where the fusion is applied by a dynamic binary optimizer, and where the fusion instructions are not incorporated in the ISA, the machine can be used to execute them).
  • ISA standard industrial architecture
  • HW co-designed hardware
  • SW sofware
  • Figure 1 illustrates a macro-fusion mechanism 110 to facilitate dynamic and efficient fusion of computer instructions employed in a computer device 100 according to one embodiment.
  • the computing device 100 serves as a host machine to employ the macro-fusion mechanism 110 which, in one embodiment, provides a macro-fusion optimization step that may include software, hardware, or any combination thereof, such as firmware , and be in communication with, or employed in, or integrated within, a dynamic optimizer or a 112 compiler (e.g., a JIT compiler).
  • the fusion mechanism 110 allows efficient and precise fusion of instructions with speculative execution support, operating with the available hardware and software to allow a processor 102, for example, to accelerate its compiled software applications, even those that may require precise sequences of Multiplication-Sum.
  • the computing device 100 may include mobile computing devices, such as cell phones, including smartphones (e.g., Apple® iPhone®, BlackBerry® in Research in Motion®, etc.), personal digital assistants (PDAs), etc. ., tablet computers (e.g., Apple® Pad®, Samsung® Galaxy 3®, etc.), laptops (e.g., 'notebook', 'netbook', Ultrabook TM, etc. ), e-readers (e.g., Amazon Kindle®, Barnes Nook® and Noble®, etc.), etc.
  • the computing device 100 may additionally include decoders (eg, Internet-based cable television decoders, etc.) and larger computing devices, such as desktop computers, server computers, etc.
  • the computing device 100 includes an operating system (OS) 106 that serves as an interface between any hardware or physical resources of the computing device 100 and a user.
  • the computing device 100 additionally includes one or more processors 102, memory devices 104, network devices, controllers, or the like, as well as 108 input / output (I / O) sources, such as touch screens, touch panels, touch pads, virtual or current keyboards, virtual or current mice, etc.
  • I / O input / output
  • terms such as “computing device”, “node”, “computing node”, “client”, “host”, “server”, “memory server”, “machine”, “device”, “device computer “,” computer “,” computer system “and the like can be used interchangeably throughout this document.
  • Figure 2A illustrates the fusion mechanism 110 according to one embodiment.
  • the fusion mechanism 110 includes a certain number of components, such as the monitoring logic 202 with the detection module 204, the evaluation logic 206, the decision logic 208, the execution logic 210 with the module Modification 212 and communication / compatibility module 214.
  • “logic” may be mentioned interchangeably with “component” or “module”, and may include, for example, software, hardware and / or any combination of software and hardware, such as firmware .
  • the monitoring logic 202 continuously monitors the active code regions of a computer program, where fusion or combination of instructions can be performed.
  • the program is monitored by the monitoring logic 202, its detection module 204 detects any number of operations within the active code regions, as potential candidates for the merger.
  • the simple fact that a merger operation can be carried out does not necessarily mean that the operation is timely or adequate.
  • an inappropriate, or inappropriate, or even high frequency of fusion operations can unnecessarily consume energy, waste time and / or compromise the benefits of the software program.
  • Macro-fusion of candidate instructions is illustrated in Figure 2B.
  • an evaluation logic 206 to evaluate the merger operations.
  • evaluation logic 206 evaluates each merger operation to determine whether or not it would be beneficial to start or execute the merger operation.
  • the evaluation logic 206 can evaluate all the necessary and relevant information available, referring to the candidate instructions for the merger.
  • the macro-fusion mechanism 110 may be placed and activated just before the static planning process 318, such as that performed by the melting step 316 of Figure 3A. How the merger is integrated in phase 308 of planning, accurate information about the candidate instructions can be obtained, to be evaluated by the evaluation logic 206.
  • the necessary and relevant information about the candidate instructions can be obtained before the planning of software instructions by the optimizer or compiler, and immediately after a data dependence graph ("DDG") of The active code region.
  • DDG data dependence graph
  • the evaluation logic 206 determines the criticality of each candidate instruction, as one of the metrics to measure the benefit advantage or the value of the merger candidates.
  • the activation of the macro-fusion mechanism 110 in, or around, or within, one of the last processes of the dynamic binary optimizer / compiler, as illustrated in Figure 4B allows the macro-fusion step , as facilitated by the macro-fusion mechanism 110, be executed on traditional transformations and code optimizations, such as data versions, code deletion, etc.
  • the macro-fusion step of the macro-fusion mechanism 110 is activated after the specialized code is generated, which allows the evaluation logic 206 to perform a detailed evaluation of each candidate instruction and provide the results of the evaluation to decision logic 208 to make a well-founded decision as to whether or not each merger operation should be carried out. If a merger operation is to be carried out, the decision is referred to the execution logic 210 to perform the operation, where the modifying module 212 of the execution logic 210 performs a necessary set of transformations to the DDG and modifications to the instruction structure, to leave the instructions ready for conversion. Once the instructions are ready, the fusion logic 210 completes the operation of merging the instructions.
  • the modification module 212 can modify the internal structure of the sequence of molten instructions, so that the sequence can be converted into a combined instruction or fused by the execution logic 210. This is further described with reference to Figure 4B.
  • a merger candidate instruction can be considered critical if it is detected, by the detection module 204, in a critical path of the code region active.
  • the depth of the instruction e.g., the distance from the entry node to the active code region to the instruction in the DDG
  • the height of the instruction e.g., distance from the instruction to the output node of the active code region
  • the depth and height can be calculated by the evaluation logic 206, adding the latencies of the producing / consuming chains of the instruction, following the dependencies in the DDG.
  • the critical sequences are those formed by chains of dependent critical instructions and, in order to provide some flexibility, those instructions that are close to the critical path are treated as pseudo-critical, so that the evaluation logic 206 takes them into It has macro-fusion purposes.
  • the decision logic 208 may decide, based on the evaluation data, to disallow a merger operation, because the performance of the operation would damage the programming process more than would help it, such as producing a waste of time, energy and other resources, etc.
  • the macro-merge step may be temporarily disabled if it is determined by evaluation logic 206 that would not be worthwhile, or would not be valuable (e.g., in terms of rounding failures, etc.) for a specific region of active code.
  • evaluation logic 206 may consider various pieces of information referring to candidate instructions before referring the results of the evaluation to decision logic 208. For example, on certain occasions, two or more instructions, when melted together, may end up creating more instructions, as shown in Figure 2B, and therefore such a merger can be rejected or allowed to proceed in certain circumstances, depending on the characteristics of the candidate instructions, or the end and / or anticipated result of the merger, etc. On other occasions, the fused sequences can execute the same number of instructions of the original code, although they can exercise more software components, resulting in an increase in the energy consumed in the calculation.
  • the detection logic 204 can detect more than one fusion candidate for a given program instruction.
  • the evaluation logic 206 may consider the advantages of each fusion opportunity and select the most appropriate one taking into account the timing, power or performance of the molten individual instructions, etc. For example, if an instruction can be fused with two candidates, the evaluation logic 206 can fuse the sequence with greater impact on the critical path of the active code region. This applies to mergers of the same type, or of a different type.
  • the evaluation logic 206 may consider not only power increases, but also consider well-chosen heuristic numbers (eg, using a high precision timing simulator, etc.) based on the characteristics of the candidate instructions (such as their criticality for the region and / or the global program, the number of relevant consumers, etc.), to allow decisions guided by intelligent and safe power / performance, in order to save power and increase benefits ( as indicated from latency cycles, and further illustrated with reference to Figure 2B).
  • well-chosen heuristic numbers eg, using a high precision timing simulator, etc.
  • FIG. 2B illustrates a fusion option according to one embodiment.
  • the merger option 220 includes an option that can be approved by the evaluation logic 206 and the decision logic 208, because it provides a better option where the candidate instructions of the original code 222 are merged into a single instruction, merged or combined, in macro-merger 224.
  • the merger option 230 can be evaluated as a bad option by the evaluation logic 206 and rejected by the decision logic 208, because it does not seem to be a good option, since if the Fourth candidate instruction of the original code 232 is fused in macro-fusion 234, it is shown that it results in additional instructions and, therefore, this option 230 may be rejected.
  • option 240 may not be considered good by evaluation logic 206 and be rejected by decision block 208 of Figure 2A, because macro-merging 244 of original code 242 results in an additional path in increased instruction and latency terms.
  • the smaller numbers illustrated here next to the oval bubbles represent latency cycles.
  • option 250 illustrates two possible macro-fusion results 254, 256 for the candidate instructions of the original code 252.
  • the evaluation logic 206 of Figure 2A can evaluate the two results 254, 256 and , for example, choosing result 256 over result 254 because, as illustrated, the macro-fusion result 254 provides an increased length of the sequence and adds more latency cycles, as compared to result 256 and, therefore, result 256 can be considered as superior and chosen before result 254.
  • Communication / configuration logic 214 can facilitate the ability to communicate dynamically and remain configured with various dynamic optimizers, compilers, programming codes, types of instruction and fusion, etc.
  • Communication / configuration logic 214 further facilitates the ability to communicate dynamically and remain configured with various computing devices (e.g., mobile computing devices (such as various types of smartphones and tablet computers), networks (e.g. , Internet, cloud computing networks, etc.), Internet sites (such as social network sites (eg, Facebook®, Linkedln®, Google + ®, etc.)), etc., while ensuring the compatibility with changing technologies, parameters, protocols, standards, etc.
  • computing devices e.g., mobile computing devices (such as various types of smartphones and tablet computers), networks (e.g. , Internet, cloud computing networks, etc.), Internet sites (such as social network sites (eg, Facebook®, Linkedln®, Google + ®, etc.)), etc., while ensuring the compatibility with changing technologies, parameters, protocols, standards, etc.
  • any number and type of components may be added to and / or removed from, the macro-fusion mechanism 110 to facilitate various embodiments that include the addition, removal and / or improvement of certain characteristics.
  • the macro-fusion mechanism 110 many of the standard and / or known components, such as those of a computing device, are not shown or set forth herein. It is contemplated that the embodiments, as described herein, are not limited to any specific technology, topology, system, architecture and / or standard, and are dynamic enough to adopt and adapt to any future changes.
  • Figure 3A illustrates a location in a sequence 300 of optimizer / compiler processes, where the macro-fusion step of the macro-fusion mechanism 110 of Figure 1 is activated, according to one embodiment.
  • an optimizer / compiler e.g., dynamic optimizer, JIT compiler, etc.
  • macro-fusion 316 as performed by the macro-fusion mechanism 110 of Figure 1, is located at a later stage (in one embodiment, the most recent stage) in sequence 300, so that maximum information about the candidate instructions can be obtained, in order to perform detailed calculations and achieve an intelligent and precise determination as to whether a merger operation can be performed or rejected.
  • sequence 300 lists various optimizer / compiler processes, including code formation 302, code generation 304, code optimization 306, code planning 308 and code assembly 310.
  • various processes are carried out, such as formation 312 of the included DDG, optimization 314 of critical path reduction and, just prior to static planning 318. Macro-fusion 316 is further described with reference to Figure 3B.
  • the procedure 350 may be performed by processing logic that may comprise hardware (e.g., circuits, dedicated logic, programmable logic, etc.), software (such as instructions executed in a processing device), or a combination of the same.
  • the procedure 350 may be performed by the macro-fusion mechanism 110 of Figure 1.
  • the procedure 350 begins in block 352 with the appearance of, or entry into, an active code region of the program code of software.
  • the detection module 352 of Figure 2A traverses the entire program code until a code region is found with instructions available as candidates for fusion and, upon detecting the active code region, the detection module 254 can determine whether or not macro-fusion is enabled in block 354. If macro-fusion is disabled or not active, the macro-fusion step exits the active code region in block 362. However, if the macro -fusion is active or enabled, in block 356, all candidate instruction is inspected or evaluated.
  • the process advances to block 358, where those instructions that are to be cast are selected and, in block 360, the instructions are cast to achieve a profitable fusion.
  • the process can then end in block 362 with the exit of the active code region, or the molten instructions remain available for inspection for subsequent fusion operations, and the process returns to block 356.
  • no suitable candidate instructions eg, merger is not likely to be profitable
  • the merger operation can be denied and the process can continue with block 356.
  • the process ends with the output in block 362.
  • the process can continue iterating the verification of a next merge candidate instruction in the data flow in block 356.
  • the process of block 358 is further explored with reference to Figure 4A.
  • the process of block 360 is further described with reference to Figure 4B.
  • Figure 4A illustrates a procedure 400 to facilitate dynamic and efficient macro-fusion, according to an embodiment.
  • the method 400 may be performed by processing logic that may comprise hardware (e.g., circuits, dedicated logic, programmable logic, etc.), software (such as instructions executed in a processing device), or a combination of the same.
  • the process 400 may be performed by the macro-fusion mechanism 110 of Figure 1.
  • the process continues with the inspection or detection of producers, such as the candidate instructions, or the producers / origins of the candidate instructions in block 402.
  • producers such as the candidate instructions, or the producers / origins of the candidate instructions in block 402.
  • FP floating point sum instruction
  • the process continues in block 404 with the determination of whether or not the sequence is critical. If the sequence is critical, the merger operation is performed on the candidate instruction (s) in block 408. If the sequence is not determined to be critical, another determination is made as to whether the origin it has been or not eliminated in block 406. If so, the instruction, or instructions, is merged into block 408. If it is not, the merging operation is not performed in block 410.
  • Figure 4B illustrates a method 450 for facilitating dynamic and efficient macro-fusion, according to one embodiment.
  • the method 450 may be performed by processing logic that may comprise hardware (e.g., circuits, dedicated logic, programmable logic, etc.), software (such as instructions executed in a processing device), or a combination of the same.
  • the method 450 may be performed by the macro-fusion mechanism 110 of Figure 1.
  • the process continues (e.g., multiplication in FP and sum to melt) with a check as to copies of origins in block 452. If the multiplication sources are reused in FP, the process continues with the insertion of copies of the multiplication sources in block 454. If no origin is reused, the process continues with the conversion of the instructions into a combined multiplication-sum in block 456. In the block 458, a determination is made as to whether the multiplication is in effect or not. If not, the multiplication in FP is eliminated in block 460.
  • FIG. 5 illustrates an embodiment of a computer system 500.
  • the computer system 500 represents a range of computer and electronic devices (wired or wireless) that includes, for example, desktop computer systems, portable computer systems, cell phones, digital assistants Personal (PDA), including cellularly enabled PDAs, decoders, smartphones, tablets, etc.
  • Alternative computer systems may include more, less and / or different components.
  • the computer system 500 includes the bus 505 (or a link, an interconnection, or other type of communication device or interface for communicating information) and the processor 510 coupled with the bus 505, which can process information. While the computer system 500 is illustrated with a single processor, the electronic system 500 may include multiple processors and / or coprocessors, such as one or more central processors, graphic processors, physical processors, etc.
  • the computer system 500 may additionally include random access memory (RAM) or other dynamic storage device 520 (called main memory), coupled with the bus 505, and can store information and instructions that can be executed by the processor 510.
  • RAM random access memory
  • main memory dynamic storage device 520
  • the memory Main 520 may also be used to store temporary variables or other intermediate information during the execution of instructions by the processor 510.
  • the computer system 500 may also include read-only memory (ROM) and / or other storage device 530 coupled with the bus 505, which can store static information and instructions for the processor 510.
  • the data storage device 540 may be coupled with bus 505 to store information and instructions.
  • the data storage device 540 such as a magnetic disk or optical disk, and the corresponding controller, can be coupled with the computer system 500.
  • the computer system 500 can also be coupled, via bus 505, with a device 550 of visualization, such as a cathode ray tube (CRT), a liquid crystal viewfinder (LCD) or a formation of Organic Light Emitting Diodes (OLED), to display information to a user.
  • CTR cathode ray tube
  • LCD liquid crystal viewfinder
  • OLED Organic Light Emitting Diodes
  • the 560 user input device which includes keys Alphanumeric and others, it can be coupled with bus 505 to communicate information and command selections to processor 510.
  • a cursor control 570 such as a mouse, a tracking ball, or keys. cursor address, to communicate address information and command selections to the processor 510, and to control the movement of the cursor in the viewfinder 550.
  • the formations 590 of cameras and microphones of the computer system 500 may be coupled with the bus 505 to observe gestures, record audio and video, and to receive and transmit visual and audio commands.
  • the computer system 500 may additionally include one or more network interfaces 580, to provide access to a network, such as a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN) a personal area network (PAN), Bluetooth, a cloud network, a mobile network (p. eg., 3 to Generation (3G), etc.), an intranet, Internet, etc.
  • the network interface (s) 580 may, for example, include a wireless network interface with the antenna 585, which may represent one or more antenna (s).
  • the network interface (s) 580 may also include, for example, a wired network interface for communicating with remote devices, via the network cable 587, which may be, for example, an Ethernet cable, a coaxial cable, a fiber optic cable, a serial cable or a parallel cable.
  • the network interface (s) 580 can provide access to a LAN, for example, conforming to the IEEE 802.11 by / or IEEE 802.11g standards, and / or the wireless network interface can provide access to a personal area network, for example, conforming to Bluetooth standards. Other interfaces and / or wireless network protocols, including previous and subsequent versions of the standards, may also be supported. In addition to, or instead of, communication via wireless LAN standards, the network interface (s) 580 can provide wireless communication using, for example, Time Division Multiple Access (TDMA) protocols ), Global Systems for Mobile Communications (GSM) protocols, Multiple Division Code Access (CDMA) protocols and / or any other type of wireless communications protocols.
  • TDMA Time Division Multiple Access
  • GSM Global Systems for Mobile Communications
  • CDMA Multiple Division Code Access
  • the network interface (s) 580 may include one or more communication interfaces, such as a modem, a network interface card, or other well-known interface devices, such as those used to pair with Ethernet, a witness ring, or others types of physical attachments, wired or wireless, for the purpose of providing a communication link to support a LAN or a WAN, for example.
  • the computer system can also be coupled with a certain number of peripheral devices, clients, control surfaces, consoles or servers, by means of a conventional network infrastructure, including an Intranet or Internet, for example.
  • the configuration of the computer system 500 may vary from one implementation to another, depending on numerous factors, such as price restrictions, performance requirements, technological improvements, or other circumstances.
  • Examples of the electronic device or computer system 500 may include, without limitation, a mobile device, a personal digital assistant, a mobile computing device, a smartphone, a cell phone, a handheld device, a unidirectional pager, a bidirectional pager , a messaging device, a computer, a personal computer (PC), a desktop computer, a laptop, a handheld computer, a tablet computer, a server, a server formation or server farm, a server the Network, a network server, an Internet server, a workstation, a mini-computer, a central computer, a supercomputer, a network accessory, a Network accessory, a distributed computer system, multiprocessor systems, systems based on processors, consumer electronics, programmable consumer electronics, television, digital television, a decoder,
  • the embodiments can be implemented as any one, or a combination, of: one or more microchips or interconnected integrated circuits using a motherboard, logic connected by physical wiring, software stored by a memory device and executed by a microprocessor, firmware, a application-specific integrated circuit (ASIC) and / or field programmable gate formation (FPGA).
  • logic may include, by way of example, software or hardware and / or combinations of software and hardware.
  • the embodiments may be provided, for example, as a computer program product that may include one or more machine-readable media with machine-executable instructions stored therein, than when executed by one or more more machines such as a computer, a computer network or other electronic devices may result in said machine (s) carrying out the operations according to the embodiments described herein.
  • a machine-readable medium may include, but is not limited to, floppy disks, optical discs, CD-ROM (Compact Disc - Read Only Memories) and magnetic-optical discs, ROM, RAM, EPROM (Programmable Read Only Memories and Erasable), EEPROM (Programmable and Electrically Erasable Read Only Memories), magnetic or optical cards, flash memory, or other media readable by means / machines, suitable for storing machine-executable instructions.
  • the embodiments can be downloaded as a computer program product, where the program can be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client), by means of one or more data signals made on and / or modulated by a carrier wave or other propagation medium, by means of a communication link (eg, a modem and / or network connection).
  • a remote computer e.g., a server
  • a requesting computer e.g., a client
  • a communication link e.g., a modem and / or network connection
  • references to “one embodiment”, “embodiment”, “exemplary embodiment”, “various embodiments”, etc., indicate that the embodiment (s) thus described (s) may include features, structures or features specific, but not every embodiment necessarily includes the specific features, structures or features. In addition, some embodiments may have some, all, or none of the features described for other embodiments.
  • Coupled is used to indicate that two or more elements cooperate or interact with each other, but may or may not have physical or electrical components intervening between them.
  • Some embodiments refer to a procedure comprising: monitoring a software program for a program region with candidate instructions for the merger, for a merger operation in a computer system; evaluate whether the macro-operation of the candidate instructions is valuable for the software program; and perform the merger operation if it is evaluated as valuable.
  • inventions or examples include any of the foregoing procedures, further comprising allowing the macro-operation to be performed after reviewing the evaluation results.
  • Embodiments or examples include any of the foregoing procedures, further comprising detecting candidate instructions for the fusion operation in the program region.
  • Embodiments or examples include any of the foregoing procedures, further comprising rejecting macro-fusion if the fusion operation is evaluated as not valuable to the software program.
  • Embodiments or examples include any of the foregoing procedures, further comprising selecting the most suitable candidate instruction for the merger operation, given a set of potential candidate instructions, to be applied to an individual candidate instruction.
  • Embodiments or examples include any of the foregoing procedures, further comprising modifying the candidate instructions before performing the fusion operation.
  • Embodiments or examples include any of the preceding procedures, in which the candidate instructions comprise a Combined Sum-Multiplication (CMULADD) instruction or a Combined Subtraction-Multiplication (CMULSUB) instruction.
  • CMULADD Combined Sum-Multiplication
  • CMULSUB Combined Subtraction-Multiplication
  • the embodiments or examples include any of the foregoing procedures, in which the evaluation is performed on a dynamic binary optimizer or a compiler, in which the evaluation further includes evaluating a data dependence graph (DDG) referred to the candidate instructions, to determine the depth or length of each candidate instruction, in order to further determine whether or not the merger operation is critical for the software program.
  • DDG data dependence graph
  • the embodiments or examples include any of the foregoing procedures, in which the evaluation of the DDG referred to the candidate instructions must also determine whether the fusion operation reduces or increases, either a number of executed instructions or an amount of energy consumed in The software program.
  • Embodiments or examples include any of the foregoing procedures, in which the computer system comprises one or more between a desktop computer, a server computer, a decoder, and a mobile computer that includes one or more between a smartphone, an assistant Personal digital (PDA), a tablet computer, an electronic reader and a laptop.
  • the computer system comprises one or more between a desktop computer, a server computer, a decoder, and a mobile computer that includes one or more between a smartphone, an assistant Personal digital (PDA), a tablet computer, an electronic reader and a laptop.
  • PDA Personal digital
  • Another embodiment or example includes an apparatus for performing any of the procedures mentioned above.
  • an apparatus comprises means for performing any of the procedures mentioned above.
  • At least one machine-readable storage medium comprises a plurality of instructions that, in response to being executed in a computing device, cause the computing device to carry out a procedure according to any of the procedures mentioned above. .
  • At least one non-transient, or tangible, machine-readable storage medium comprises a plurality of instructions that, in response to being executed in a computing device, cause the computing device to carry out a procedure. according to any of the procedures mentioned above.
  • a computer device is arranged to perform a procedure according to any of the procedures mentioned above.
  • Some embodiments refer to an apparatus comprising: monitoring logic for monitoring a software program, for a program region with instructions for merging, for a merging operation in a computer system; evaluation logic to evaluate whether the macro-operation of the candidate instructions is valuable for the software program: and execution logic for performing the merger operation if it is evaluated as valuable.
  • the embodiments or examples include any of the foregoing apparatus, further comprising decision logic to allow the macro-operation to be performed, after reviewing the evaluation results.
  • the monitoring logic comprises a detection module for detecting the candidate instructions for the fusion operation in the program region.
  • Embodiments or examples include any of the foregoing apparatus, in which the decision logic comprises an evaluation module to reject macro-fusion if it is evaluated that the fusion operation is not valuable to the software program.
  • Embodiments or examples include any of the above apparatuses, in which the decision logic comprises an evaluation module to select the most suitable candidate instruction for the merger operation, given a set of potential candidate instructions, to be applied on a candidate instruction individual.
  • Embodiments or examples include any of the foregoing apparatus, in which the execution logic comprises a modification module to modify the candidate instructions before performing the fusion operation.
  • Embodiments or examples include any of the above apparatuses, in which the candidate instructions comprise a Combined Sum-Multiplication (CMULADD) instruction or a Combined Subtraction-Multiplication (CMULSUB) instruction.
  • CMULADD Combined Sum-Multiplication
  • CMULSUB Combined Subtraction-Multiplication
  • Embodiments or examples include any of the above apparatuses, in which the evaluation is performed on a dynamic binary optimizer or a compiler, in which the evaluation includes evaluating a data dependence graph (DDG) referred to the candidate instructions, for determine the depth or length of each candidate instruction, in order to further determine whether or not the merger operation is critical for the software program.
  • DDG data dependence graph
  • Embodiments or examples include any of the above apparatuses, in which the evaluation logic has to additionally evaluate the DDG referred to the candidate instructions, to determine whether the fusion operation reduces or increases, either a certain number of executed instructions, or well an amount of energy consumed in the software program.
  • Embodiments or examples include any of the foregoing devices, in which the computer system comprises one or more between a desktop computer, a server computer, a decoder, and a mobile computer that includes one or more between a smartphone, an assistant Personal digital (PDA), a tablet computer, an electronic reader and a laptop.
  • Some embodiments refer to a system comprising: a computing device with a memory for storing instructions, and a processing device for executing the instructions, the computing device additionally having a mechanism for: monitoring a software program for a program region with instructions fusion candidates, for a merger operation in a computer system; evaluate whether the macro-operation of the candidate instructions is valuable to the software program or not; and perform the merger operation if it is evaluated as valuable.
  • Embodiments or examples include any of the above systems, in which the mechanism must additionally admit the completion of the fusion operation after review of the evaluation results and the detection of the candidates for fusion in the region of Program.
  • Embodiments or examples include any of the above systems, in which the mechanism must additionally reject macro-fusion if it is evaluated that the fusion operation is not valuable to the software program.
  • Embodiments or examples include any of the above systems, in which the mechanism must additionally select the most suitable instruction for the fusion operation, given a set of potential candidate instructions, to be applied on an individual candidate instruction.
  • Embodiments or examples include any of the above systems, in which the mechanism must further modify the candidate instructions before performing the fusion operation, in which the candidate instructions comprise a Combined Sum-Multiplication (CMULADD) instruction or a Multiplication-Combined Subtraction instruction (CMULSUB).
  • CMULADD Combined Sum-Multiplication
  • CMULSUB Multiplication-Combined Subtraction instruction
  • Embodiments or examples include any of the above systems, in which the mechanism must additionally perform the evaluation in a dynamic binary optimizer or compiler, in which the mechanism must additionally evaluate a data dependence graph (DDG) referred to the candidate instructions, to determine the depth or length of each candidate instruction, in order to further determine whether or not the merger operation is critical for the software program.
  • Embodiments or examples include any of the above systems, in which the mechanism has to further evaluate the DDG referred to the candidate instructions to determine whether the fusion operation reduces or increases, either a certain number of executed instructions, or an amount of energy consumed in the program software.
  • DDG data dependence graph
  • Embodiments or examples include any of the above systems, in which the computer system comprises one or more between a desktop computer, a server computer, a decoder, and a mobile computer that includes one or more between a digital telephone, an assistant Personal digital (PDA), a tablet computer, an electronic reader and a laptop.
  • the computer system comprises one or more between a desktop computer, a server computer, a decoder, and a mobile computer that includes one or more between a digital telephone, an assistant Personal digital (PDA), a tablet computer, an electronic reader and a laptop.
  • PDA Personal digital

Abstract

Se describe un mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas, según una realización. Un procedimiento de realizaciones, según lo descrito en la presente memoria, incluye monitorizar un programa de software para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software; y realizar la operación de fusión si se evalúa que es valiosa.

Description

Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software
Campo
Las realizaciones descritas en la presente memoria se refieren, en general, a la programación de ordenadores. Más específicamente, las realizaciones se refieren a un mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software.
Antecedentes
Las instrucciones fundidas (p. ej., la Multiplicación-Suma Combinada en Punto Flotante ("CMULADD"), etc.) son ejecutadas usualmente, pero no inteligente ni eficazmente. Usando técnicas convencionales, una operación de fusión se aplica a menudo a ciegas, independientemente de si la operación se necesita o no en el momento. Además, al encontrar múltiples oportunidades de fusión, las operaciones de fusión son ejecutadas indiscriminadamente, porque ninguna de las técnicas convencionales proporciona una priorización adecuada, desperdiciando una cantidad significativa de tiempo y recursos.
Breve descripción de los dibujos
Las realizaciones están ilustradas a modo de ejemplo, y no a modo de limitación, en las figuras de los dibujos adjuntos, en los cuales los números iguales de referencia se refieren a elementos similares La Figura 1 ilustra un mecanismo de macro-fusión para facilitar la fusión dinámica y eficaz de instrucciones informáticas empleadas en un dispositivo informático según una realización.
La Figura 2A ilustra un mecanismo de fusión según una realización.
La Figura 2B ilustra operaciones de macro-fusión de instrucciones candidatas, según una realización. La Figura 3A ilustra una ubicación en una secuencia de procesos de optimizador / compilador, donde el paso de macro-fusión del mecanismo de macro-fusión de la Figura 1 es activado según una realización.
La Figura 3B ilustra un procedimiento para facilitar la macro-fusión dinámica y eficaz según una realización. La Figura 4A ilustra un procedimiento para facilitar la macro-fusión dinámica y eficaz según una realización.
La Figura 4B ilustra un procedimiento para facilitar la macro-fusión dinámica y eficaz según una realización.
La Figura 5 ilustra un sistema de ordenador adecuado para la implementación de realizaciones de la presente revelación, según una realización.
Descripción detallada
En la siguiente descripción, se estipulan numerosos detalles específicos. Sin embargo, las realizaciones, según son descritas en la presente memoria, pueden ser puestas en práctica sin estos detalles específicos. En otros casos, circuitos, estructuras y técnicas bien conocidos no han sido mostrados en detalle, a fin de no oscurecer la comprensión de esta descripción.
Las realizaciones proporcionan un mecanismo de macro-fusión para facilitar la fusión dinámica y eficaz de instrucciones informáticas. La fusión convencional de la combinación de múltiples instrucciones no siempre es considerada como provechosa con respecto al tiempo, la energía o las prestaciones. La fusión convencional puede llevar más ciclos que el tiempo de ejecución de las operaciones a fundir, y puede acabar aumentando el trayecto crítico del código ejecutado, así como el tiempo y energía consumidos en la secuencia. Además, las soluciones convencionales, basadas en hardware o software, son inflexibles y torpes, y son aplicadas a ciegas e indiscriminadamente, complicando adicionalmente los procesos, ya que pueden ser ejecutadas operaciones de fusión inadecuadas y / o inoportunas, afectando adicionalmente las prestaciones de manera negativa.
Las realizaciones proporcionan un mecanismo de macro-fusión para facilitar la fusión dinámica y eficaz de instrucciones informáticas, donde el mecanismo puede estar integrado en un optimizador binario dinámico, o un compilador (p. ej., el Compilador Justo-A-Tiempo ("JIT")) o puede estar generalizado para ser incluido o representado como un compilador estático, o proporcionado en otras formas de macro-fusión.
La macro-fusión puede referirse a una unión o combinación dinámica, inteligente y eficaz de la programación de secuencias informáticas en una única instrucción. La macro-fusión puede ser llevada a cabo por el mecanismo que puede estar incorporado a, pero no limitado a, un compilador estático, una unidad de hardware en una interfaz central de usuario para fundir dinámicamente secuencias de instrucciones, un optimizador binario dinámico o un compilador JIT, etc. Para abreviar, clarificar y facilitar la comprensión, las instrucciones CMULADD son usadas como ejemplos en toda la extensión del documento, y las realizaciones no están limitadas solamente a tales instrucciones, y son aplicables a cualquier número y tipo de instrucciones informáticas (tales como CMUL.ADD, la Multiplicación-Resta Combinada en Punto Flotante ("CMULSUB"), la Suma de Números Enteros con 3 orígenes ("ADD3"), la Multiplicación-Suma de Números Enteros Empaquetada ("XMA"), la Multiplicación-Suma Fundida ("FMA"), la Multiplicación-Resta Fundida ("FMS"), etc.), proporcionadas, por ejemplo, por una arquitectura industrial estándar (ISA) o en un conjunto interno de instrucciones en un procesador co-diseñado de hardware ("HW") / sofware ("SW") (de modo que, en el caso en que la fusión es aplicada por un optimizador binario dinámico, y allí donde las instrucciones de fusión no están incorporadas en la ISA, la máquina pueda ser usada para ejecutarlas) .
La Figura 1 ilustra un mecanismo 110 de macro-fusión para facilitar la fusión dinámica y eficaz de instrucciones informáticas empleadas en un dispositivo informático 100 según una realización. El dispositivo informático 100 sirve como una máquina anfitriona para emplear el mecanismo 110 de macro-fusión que, en una realización, proporciona un paso de optimización de macro-fusión que puede incluir software, hardware, o cualquier combinación de los mismos, tal como firmware, y estar en comunicación con, o empleado en, o integrado dentro de, un optimizador dinámico o un compilador 112 (p. ej., un compilador JIT). El mecanismo 110 de fusión permite la fusión eficaz y precisa de instrucciones con soporte especulativo de ejecución, operando con el hardware y software disponibles para permitir a un procesador 102, por ejemplo, acelerar sus aplicaciones compiladas de software, incluso aquellas que puedan requerir secuencias precisas de Multiplicación-Suma.
El dispositivo informático 100 puede incluir dispositivos informáticos móviles, tales como teléfonos celulares, incluso teléfonos inteligentes (p. ej., iPhone® de Apple®, BlackBerry® de Research in Motion®, etc.), asistentes digitales personales (PDA), etc., ordenadores de tableta (p. ej., ¡Pad® de Apple®, Galaxy 3® de Samsung®, etc.), ordenadores portátiles (p. ej., 'notebook', 'netbook', Ultrabook™, etc.), lectores electrónicos (p. ej., Kindle® de Amazon®, Nook® de Barnes y Noble®, etc.), etc. El dispositivo informático 100 puede incluir adicionalmente decodificadores (p. ej., decodificadores de televisión por cable basados en Internet, etc.) y dispositivos informáticos más grandes, tales como ordenadores de sobremesa, ordenadores servidores, etc.
El dispositivo informático 100 incluye un sistema operativo (OS) 106 que sirve como una interfaz entre hardware o recursos físicos cualesquiera del dispositivo informático 100 y un usuario. El dispositivo informático 100 incluye adicionalmente uno o más procesadores 102, dispositivos 104 de memoria, dispositivos de red, controladores, o similares, así como fuentes 108 de entrada / salida (I / O), tales como pantallas táctiles, paneles táctiles, almohadillas táctiles, teclados virtuales o corrientes, ratones virtuales o corrientes, etc. Ha de observarse que los términos tales como "dispositivo informático", "nodo", "nodo informático", "cliente", "anfitrión", "servidor", "servidor de memoria", "máquina", "dispositivo", "dispositivo informático", "ordenador", "sistema informático" y similares pueden ser usados de manera intercambiable a lo largo de este documento.
La Figura 2A ilustra el mecanismo 110 de fusión según una realización. En una realización, el mecanismo 110 de fusión incluye un cierto número de componentes, tales como la lógica 202 de monitorización con el módulo 204 de detección, la lógica 206 de evaluación, la lógica 208 de decisión, la lógica 210 de ejecución con el módulo 212 de modificación y el módulo 214 de comunicación / compatibilidad. A lo largo de este documento, "lógica" puede ser mencionado de manera intercambiable con "componente" o "módulo", y puede incluir, a modo de ejemplo, software, hardware y / o cualquier combinación de software y hardware, tal como firmware. En una realización, la lógica 202 de monitorización monitoriza continuamente las regiones de código activo de un programa de ordenador, donde puede ser realizada la fusión o combinación de instrucciones. Según el programa es monitorizado por la lógica 202 de monitorización, su módulo 204 de detección detecta cualquier número de operaciones dentro de las regiones de código activo, como candidatas potenciales para la fusión. Según lo precitado, el simple hecho de que una operación de fusión pueda ser realizada no significa necesariamente que la operación sea oportuna o adecuada. Por ejemplo, una frecuencia inoportuna, o inadecuada, o incluso alta, de operaciones de fusión puede consumir innecesariamente energía, desperdiciar tiempo y / o comprometer las prestaciones del programa de software. La macro-fusión de instrucciones candidatas está ilustrada en la Figura 2B. Para evitar tales cuestiones, en una realización, una vez que es detectada una región de código activo con una o más operaciones de fusión pendientes o anticipadas, es remitida a una lógica 206 de evaluación para evaluar las operaciones de fusión.
En una realización, la lógica 206 de evaluación evalúa cada operación de fusión para determinar si sería o no provechoso echar a andar o ejecutar la operación de fusión. La lógica 206 de evaluación puede evaluar toda la información necesaria y relevante disponible, referida a las instrucciones candidatas para la fusión. Según lo ilustrado con referencia a la Figura 3A, en una realización, el mecanismo 110 de macro-fusión puede ser colocado y activado justo antes del proceso de planificación estática 318, tal como el realizado por el paso 316 de fusión de la Figura 3A. Como la fusión está integrada en la fase 308 de planificación, puede obtenerse información precisa acerca de las instrucciones candidatas, para ser evaluada por la lógica 206 de evaluación. Por ejemplo, la información necesaria y relevante acerca de las instrucciones candidatas puede ser obtenida antes de la planificación de instrucciones de software por parte del optimizador o compilador, e inmediatamente después de que sea desarrollado un gráfico de dependencia de datos ("DDG") de la región de código activo.
En una realización, usando la información precisa y relevante, la lógica 206 de evaluación determina la criticidad de cada instrucción candidata, como una de las métricas para medir la ventaja en prestaciones o el valor de las instrucciones candidatas a la fusión. Además, la activación del mecanismo 110 de macro-fusión en, o alrededor de, o dentro de, uno de los últimos procesos del optimizador / compilador binario dinámico, según lo ilustrado en la Figura 4B, se permite que el paso de macro-fusión, según lo facilitado por el mecanismo 110 de macro-fusión, se ejecute sobre las tradicionales transformaciones y optimizaciones de código, tales como las versiones de datos, la eliminación de código, etc. En otras palabras, el paso de macro-fusión del mecanismo 110 de macro-fusión es activado después de que se genera el código especializado, lo que permite a la lógica 206 de evaluación realizar una evaluación detallada de cada instrucción candidata y proporcionar los resultados de la evaluación a la lógica 208 de decisión para tomar una decisión fundada con respecto a si cada operación de fusión debería o no llevarse a cabo. Si ha de llevarse a cabo una operación de fusión, la decisión es remitida a la lógica 210 de ejecución para realizar la operación, donde el módulo 212 de modificación de la lógica 210 de ejecución realiza un conjunto necesario de transformaciones al DDG y modificaciones a la estructura de las instrucciones, para dejar las instrucciones listas para la conversión. Una vez que las instrucciones están listas, la lógica 210 de fusión completa la operación de fusión de las instrucciones.
Por ejemplo, en base a los resultados de evaluación, según lo proporcionado por la lógica 206 de evaluación, y lo decidido o determinado por la lógica 208 de decisión, una vez que una operación de fusión ha resultado ser práctica y valiosa, y han sido escogidas las instrucciones candidatas correctas para llevar a cabo la operación, el módulo 212 de modificación puede modificar la estructura interna de la secuencia de instrucciones fundidas, de modo que la secuencia pueda ser convertida en una instrucción combinada o fundida por la lógica 210 de ejecución. Esto se describe adicionalmente con referencia a la Figura 4B.
Por ejemplo, una instrucción candidata a la fusión puede ser considerada como crítica si es detectada, por el módulo 204 de detección, en un trayecto crítico de la región de código activo. En otras palabras, la profundidad de la instrucción (p. ej., la distancia desde el nodo de entrada a la región de código activo hasta la instrucción en el DDG), más la altura de la instrucción (p. ej., la distancia desde la instrucción hasta el nodo de salida de la región de código activo) es igual a la longitud de la cadena de dependencia más larga en la región de código activo. La profundidad y la altura pueden ser calculadas por la lógica 206 de evaluación, sumando las latencias de las cadenas productoras / consumidoras de la instrucción, siguiendo las dependencias en el DDG. Además, las secuencias críticas son aquellas formadas por cadenas de instrucciones críticas dependientes y, a fin de brindar algo de flexibilidad, aquellas instrucciones que están cerca del trayecto crítico son tratadas como seudo-críticas, de modo que la lógica 206 de evaluación las tome en cuenta con fines de macro-fusión.
En una realización, la lógica 208 de decisión puede decidir, en base a los datos de evaluación, desautorizar que se lleve a cabo una operación de fusión, porque la realización de la operación dañaría al proceso de programación más de lo que lo ayudaría, tal como produciendo un desperdicio de tiempo, energía y otros recursos, etc. Por ejemplo, el paso de macro-fusión puede ser temporalmente inhabilitado si es determinado por la lógica 206 de evaluación que no valdría la pena, o no sería valioso (p. ej., en términos de fallos de redondeo, etc.) para una región específica de código activo.
Según lo precitado, la lógica 206 de evaluación puede considerar diversos trozos de información referidos a instrucciones candidatas antes de remitir los resultados de la evaluación a la lógica 208 de decisión. Por ejemplo, en ciertas ocasiones, dos o más instrucciones, cuando se funden entre sí, pueden acabar creando más instrucciones, según se muestra en la Figura 2B, y por tanto tal fusión puede ser rechazada o permitirse que siga adelante en ciertas circunstancias, según las características de las instrucciones candidatas, o el fin y / o resultado anticipado de la fusión, etc. En otras ocasiones, las secuencias fundidas pueden ejecutar el mismo número de instrucciones del código original, aunque puedan ejercitar más componentes de software, dando como resultado un incremento de la energía consumida en el cálculo.
Además, la lógica 204 de detección puede detectar más de un candidato a la fusión para una instrucción de programa dada. En una realización, la lógica 206 de evaluación puede considerar las ventajas de cada oportunidad de fusión y seleccionar la más apropiada tomando en consideración la temporizad ón, la potencia o prestaciones de las instrucciones individuales fundidas, etc. Por ejemplo, si una instrucción puede ser fundida con dos candidatas, la lógica 206 de evaluación puede fundir la secuencia con mayor impacto en el trayecto crítico de la región de código activo. Esto vale para fusiones del mismo tipo, o de tipo distinto.
En otra realización más, la lógica 206 de evaluación puede considerar no solamente los incrementos de potencia, sino también considerar números heurísticos bien escogidos (p. ej., usando un simulador de temporización de alta precisión, etc.) en base a las características de las instrucciones candidatas (tales como su criticidad para la región y / o el programa global, el número de consumidores relevantes, etc.), para permitir decisiones guiadas por potencia / prestaciones inteligentes y seguras, a fin de ahorrar potencia y aumentar las prestaciones (según lo indicado a partir de ciclos de latencia, e ilustrado adicionalmente con referencia a la Figura 2B).
La Figura 2B ilustra una opción de fusión según una realización. La opción 220 de fusión incluye una opción que puede ser aprobada por la lógica 206 de evaluación y la lógica 208 de decisión, porque brinda una mejor opción allí donde las instrucciones candidatas del código original 222 son fundidas en una única instrucción, fundida o combinada, en la macro-fusión 224. Por el contrario, la opción 230 de fusión puede ser evaluada como una mala opción por la lógica 206 de evaluación y rechazada por la lógica 208 de decisión, porque no parece ser una buena opción, ya que si la cuarta instrucción candidata del código original 232 es fundida en la macro-fusión 234, se muestra que da como resultado instrucciones adicionales y, por tanto, esta opción 230 puede ser rechazada. De manera similar, la opción 240 puede no ser considerada como buena por la lógica 206 de evaluación y ser rechazada por el bloque 208 de decisión de la Figura 2A, porque la macro- fusión 244 del código original 242 da como resultado un trayecto adicional en términos de instrucciones y latencia aumentadas. Los números más pequeños ilustrados aquí junto a las burbujas ovales representan ciclos de latencia. Continuando con los ciclos de latencia, la opción 250 ilustra dos posibles resultados 254, 256 de macro-fusión para las instrucciones candidatas del código original 252. Aquí, la lógica 206 de evaluación de la Figura 2A puede evaluar los dos resultados 254, 256 y, por ejemplo, escoger el resultado 256 frente al resultado 254 porque, según se ilustra, el resultado 254 de macro-fusión proporciona una longitud aumentada de la secuencia y añade más ciclos de latencia, en comparación con el resultado 256 y, por tanto, el resultado 256 puede ser considerado como superior y ser escogido ante el resultado 254.
La lógica 214 de comunicación / configuración puede facilitar la capacidad de comunicarse dinámicamente y permanecer configurada con diversos optimizadores dinámicos, compiladores, códigos de programación, tipos de instrucción y fusión, etc. La lógica 214 de comunicación / configuración facilita adicionalmente la capacidad de comunicarse dinámicamente y permanecer configurada con diversos dispositivos informáticos (p. ej., dispositivos informáticos móviles (tales como diversos tipos de teléfonos inteligentes y ordenadores de tableta), redes (p. ej., Internet, redes informáticas en nube, etc.), sedes de Internet (tales como las sedes de redes sociales (p. ej., Facebook®, Linkedln®, Google+®, etc.)), etc., asegurando a la vez la compatibilidad con tecnologías, parámetros, protocolos, estándares, etc., cambiantes.
Se contempla que cualquier número y tipo de componentes pueden ser añadidos a y / o retirados de, el mecanismo 110 de macro-fusión para facilitar diversas realizaciones que incluyen el agregado, eliminación y / o mejora de ciertas características. Para mayor brevedad, claridad y facilidad de comprensión del mecanismo 110 de macro-fusión, muchos de los componentes estándar y / o conocidos, tales como los de un dispositivo informático, no se muestran o exponen aquí. Se contempla que las realizaciones, según lo descrito en la presente memoria, no están limitadas a ninguna tecnología, topología, sistema, arquitectura y / o estándar específico, y son lo bastante dinámicas como para adoptar y adaptarse a cambios futuros cualesquiera.
La Figura 3A ilustra una ubicación en una secuencia 300 de procesos de optimizador / compilador, donde el paso de macro-fusión del mecanismo 110 de macro-fusión de la Figura 1 es activado, según una realización. Para mayor brevedad, claridad y facilidad de comprensión, dado que todo número y tipo de procesos de optimizador / compilador, realizados por un optimizador / compilador (p. ej., optimizador dinámico, compilador JIT, etc.), son bien conocidos, por lo tanto, no son expuestos aquí. Según lo precitado, en una realización, la macro-fusión 316, según la realiza el mecanismo 110 de macro-fusión de la Figura 1 , está situada en una etapa posterior (en una realización, la etapa más reciente) en la secuencia 300, de modo que pueda obtenerse la máxima información acerca de las instrucciones candidatas, a fin de realizar cálculos detallados y lograr una determinación inteligente y precisa con respecto a si una operación de fusión puede ser realizada o rechazada. Por ejemplo, la secuencia 300 enumera diversos procesos de optimizador / compilador, que incluyen la formación 302 de código, la generación 304 de código, la optimización 306 de código, la planificación 308 de código y el ensamblaje 310 de código. En una realización, en la etapa 308 de planificación de código, se llevan a cabo diversos procesos, tales como la formación 312 del DDG incluido, la optimización 314 de reducción del trayecto crítico y, justo antes de la planificación estática 318, se realiza la macro-fusión 316. La macro-fusión 316 se describe adicionalmente con referencia a la Figura 3B.
Con referencia ahora a la Figura 3B, se ilustra un procedimiento 350 para facilitar la macro- fusión dinámica y eficaz, según una realización. El procedimiento 350 puede ser realizado por lógica de procesamiento que puede comprender hardware (p. ej., circuitos, lógica dedicada, lógica programable, etc.), software (tal como instrucciones ejecutadas en un dispositivo de procesamiento), o una combinación de los mismos. En una realización, el procedimiento 350 puede ser realizado por el mecanismo 110 de macro-fusión de la Figura 1. El procedimiento 350 comienza en el bloque 352 con la aparición de, o la entrada a, una región de código activo del código de programa de software. En una realización, el módulo 352 de detección de la Figura 2A recorre todo el código de programa hasta hallar una región de código con instrucciones disponibles como candidatas para la fusión y, al detectar la región de código activo, el módulo 254 de detección puede determinar si está habilitada o no la macro-fusión en el bloque 354. Si la macro-fusión está inhabilitada o no está activa, el paso de macro-fusión sale de la región de código activo en el bloque 362. Sin embargo, si la macro-fusión está activa o habilitada, en el bloque 356, toda instrucción candidata es inspeccionada o evaluada.
Tras inspeccionar / evaluar las instrucciones candidatas, el proceso avanza al bloque 358, donde son seleccionadas aquellas instrucciones que han de ser fundidas y, en el bloque 360, las instrucciones son fundidas para lograr una fusión provechosa. El proceso pueden entonces acabar en el bloque 362 con la salida de la región de código activo, o quedar las instrucciones fundidas disponibles para su inspección para operaciones subsiguientes de fusión, y el proceso vuelve al bloque 356. Con referencia nuevamente al bloque 358, si no se hallan instrucciones candidatas adecuadas (p. ej., no es probable que la fusión sea provechosa), la operación de fusión puede ser denegada y el proceso puede continuar con el bloque 356. Con referencia ahora nuevamente al bloque 356, si se detecta la última instrucción de la región de código activo, el proceso acaba con la salida en el bloque 362. Además, el proceso puede continuar iterando la comprobación de una siguiente instrucción candidata a la fusión en el flujo de datos en el bloque 356. El proceso del bloque 358 es explorado adicionalmente con referencia a la Figura 4A. El proceso del bloque 360 se describe adicionalmente con referencia a la Figura 4B.
La Figura 4A ilustra un procedimiento 400 para facilitar la macro-fusión dinámica y eficaz, según una realización. El procedimiento 400 puede ser realizado por lógica de procesamiento que puede comprender hardware (p. ej., circuitos, lógica dedicada, lógica programable, etc.), software (tal como instrucciones ejecutadas en un dispositivo de procesamiento), o una combinación de los mismos. En una realización, el procedimiento 400 puede ser realizado por el mecanismo 110 de macro-fusión de la Figura 1.
Con referencia nuevamente al bloque 358 de la Figura 3B, el proceso continúa con la inspección o detección de productores, tales como las instrucciones candidatas, o los productores / orígenes de las instrucciones candidatas en el bloque 402. Para mayor comodidad, y como una realización, supongamos una instrucción de suma en punto flotante (FP) como candidata para la fusión de CMULADD. Ninguna otra fusión es compatible con instrucciones de suma en FP. Si no sigue a una multiplicación en FP, o se detectan tamaños, máscaras o indicadores incompatibles, la operación de fusión no es realizada en el bloque 410. Si hay múltiples instrucciones candidatas, el proceso continúa con la búsqueda de una instrucción más profunda en el bloque 412 y luego sigue determinando si la secuencia es o no crítica en el bloque 404. Con referencia nuevamente al bloque 402, si hay una única candidata, el proceso continúa en el bloque 404 con la determinación de si la secuencia es o no crítica. Si la secuencia es crítica, la operación de fusión es realizada sobre la(s) instrucción(es) candidata(s) en el bloque 408. Si no se determina que la secuencia sea crítica, se toma otra determinación en cuanto a si el origen ha sido o no eliminado en el bloque 406. Si es así, la instrucción, o instrucciones, se funde(n) en el bloque 408. Si no es así, la operación de fusión no es realizada en el bloque 410.
La Figura 4B ilustra un procedimiento 450 para facilitar la macro-fusión dinámica y eficaz, según una realización. El procedimiento 450 puede ser realizado por lógica de procesamiento que puede comprender hardware (p. ej., circuitos, lógica dedicada, lógica programable, etc.), software (tal como instrucciones ejecutadas en un dispositivo de procesamiento), o una combinación de los mismos. En una realización, el procedimiento 450 puede ser realizado por el mecanismo 110 de macro-fusión de la Figura 1.
Con referencia nuevamente al bloque 360 de la Figura 3B, el proceso continúa (p. ej., multiplicación en FP y suma para fundir) con una comprobación en cuanto a copias de orígenes en el bloque 452. Si son reutilizados los orígenes de multiplicación en FP, el proceso continúa con la inserción de las copias de los orígenes de multiplicación en el bloque 454. Si no se reutiliza ningún origen, el proceso continúa con la conversión de las instrucciones en una multiplicación-suma combinada en el bloque 456. En el bloque 458, se toma una determinación en cuanto a si la multiplicación está vigente o no. Si no es así, la multiplicación en FP es eliminada en el bloque 460. Si es así, el DDG puede ser modificado en el bloque 462 (por ejemplo, por el módulo 212 de modificación de la Figura 2) y la profundidad y altura se calculan luego en el bloque 464 (reenviándolo, por ejemplo, a la lógica 206 de evaluación de la Figura 2). La Figura 5 ilustra una realización de un sistema informático 500. El sistema informático 500 representa a una gama de dispositivos informáticos y electrónicos (cableados o inalámbricos) que incluye, por ejemplo, sistemas informáticos de sobremesa, sistemas informáticos portátiles, teléfonos celulares, asistentes digitales personales (PDA), incluso los PDA celularmente habilitados, decodificadores, teléfonos inteligentes, tabletas, etc. Los sistemas informáticos alternativos pueden incluir más, menos y/o distintos componentes.
El sistema informático 500 incluye el bus 505 (o un enlace, una interconexión, u otro tipo de dispositivo o interfaz de comunicación para comunicar información) y el procesador 510 acoplado con el bus 505, que puede procesar información. Si bien el sistema informático 500 está ilustrado con un único procesador, el sistema electrónico 500 puede incluir múltiples procesadores y / o coprocesadores, tales como uno o más procesadores centrales, procesadores gráficos, procesadores físicos, etc.
El sistema informático 500 puede incluir adicionalmente memoria de acceso aleatorio (RAM) u otro dispositivo 520 de almacenamiento dinámico (denominado memoria principal), acoplado con el bus 505, y puede almacenar información e instrucciones que pueden ser ejecutadas por el procesador 510. La memoria principal 520 también puede ser usada para almacenar variables temporales u otra información intermedia durante la ejecución de instrucciones por el procesador 510.
El sistema informático 500 también puede incluir memoria de sólo lectura (ROM) y / u otro dispositivo 530 de almacenamiento acoplado con el bus 505, que puede almacenar información estática e instrucciones para el procesador 510. El dispositivo 540 de almacenamiento de datos puede estar acoplado con el bus 505 para almacenar información e instrucciones. El dispositivo 540 de almacenamiento de datos, tal como un disco magnético o disco óptico, y el correspondiente controlador, pueden estar acoplados con el sistema informático 500. El sistema informático 500 también puede estar acoplado, mediante el bus 505, con un dispositivo 550 de visualización, tal como un tubo de rayos catódicos (CRT), un visor de cristal líquido (LCD) o una formación de Diodos Orgánicos Emisores de Luz (OLED), para exhibir información a un usuario. El dispositivo 560 de entrada de usuario, que incluye teclas alfanuméricas y otras, puede estar acoplado con el bus 505 para comunicar información y selecciones de comandos al procesador 510. Otro tipo de dispositivo 560 de entrada de usuario es un control 570 de cursor, tal como un ratón, una bola de rastreo, o teclas de dirección de cursor, para comunicar información de dirección y selecciones de comandos al procesador 510, y para controlar el movimiento del cursor en el visor 550. Las formaciones 590 de cámaras y micrófonos del sistema informático 500 pueden estar acopladas con el bus 505 para observar gestos, registrar audio y vídeo, y para recibir y transmitir comandos visuales y de audio.
El sistema informático 500 puede incluir adicionalmente una o más interfaces 580 de red, para proporcionar acceso a una red, tal como una red de área local (LAN), una red de área amplia (WAN), una red de área metropolitana (MAN), una red de área personal (PAN), Bluetooth, una red en nube, una red móvil (p. ej., de 3a Generación (3G), etc.), una intranet, Internet, etc. La(s) interfaz(es) 580 de red puede(n) incluir, por ejemplo, una interfaz de red inalámbrica con la antena 585, que puede representar a una o más antena(s). La(s) interfaz(es) 580 de red también puede(n) incluir, por ejemplo, una interfaz de red cableada para comunicarse con dispositivos remotos, mediante el cable 587 de red, que puede ser, por ejemplo, un cable Ethernet, un cable coaxial, un cable de fibra óptica, un cable en serie o un cable paralelo.
La(s) interfaz(es) 580 de red puede(n) proporcionar acceso a una LAN, por ejemplo, siendo conforme(s) a los estándares IEEE 802.11 b y / o IEEE 802.11g, y / o la interfaz de red inalámbrica puede proporcionar acceso a una red de área personal, por ejemplo, siendo conforme a los estándares de Bluetooth. Otras interfaces y / o protocolos de red inalámbrica, incluso las versiones anteriores y subsiguientes de los estándares, también pueden disponer de soporte. Además de, o en lugar de, la comunicación mediante los estándares de LAN inalámbrica, la(s) interfaz(es) 580 de red puede(n) proporcionar comunicación inalámbrica usando, por ejemplo, protocolos de Acceso Múltiple por División del Tiempo (TDMA), protocolos de los Sistemas Globales para las Comunicaciones Móviles (GSM), protocolos de Acceso Múltiple por División de Código (CDMA) y / o cualquier otro tipo de protocolos de comunicaciones inalámbricas.
La(s) interfaz(es) 580 de red pueden incluir una o más interfaces de comunicación, tales como un módem, una tarjeta de interfaz de red, u otros dispositivos de interfaz bien conocidos, tales como los usados para acoplarse con Ethernet, un anillo con testigo, u otros tipos de anexos físicos, cableados o inalámbricos, con fines de proporcionar un enlace de comunicación para prestar soporte a una LAN o una WAN, por ejemplo. De esta manera, el sistema de ordenador también puede estar acoplado con un cierto número de dispositivos periféricos, clientes, superficies de control, consolas o servidores, mediante una infraestructura de red convencional, incluso una Intranet o Internet, por ejemplo.
Ha de apreciarse que un sistema menos o más equipado que el ejemplo descrito anteriormente puede ser preferido para ciertas implementaciones. Por lo tanto, la configuración del sistema informático 500 puede variar de una implementación a otra, según numerosos factores, tales como restricciones de precios, requisitos de rendimiento, mejoras tecnológicas, u otras circunstancias. Los ejemplos del dispositivo electrónico o sistema 500 de ordenador pueden incluir, sin limitación, un dispositivo móvil, un asistente digital personal, un dispositivo informático móvil, un teléfono inteligente, un teléfono celular, un equipo de mano, un buscapersonas unidireccional, un buscapersonas bidireccional, un dispositivo de mensajería, un ordenador, un ordenador personal (PC), un ordenador de sobremesa, un ordenador portátil, un ordenador de mano, un ordenador de tableta, un servidor, una formación de servidores o granja de servidores, un servidor de la Red, un servidor de red, un servidor de Internet, una estación de trabajo, un mini-ordenador, un ordenador central, un superordenador, un accesorio de red, un accesorio de la Red, un sistema informático distribuido, sistemas multiprocesadores, sistemas basados en procesadores, equipos electrónicos de consumo, equipos electrónicos programables de consumo, la televisión, la televisión digital, un decodificador, un punto de acceso inalámbrico, una estación base, una estación de abonado, un centro de abonado móvil, un controlador de red de radio, un encaminador, un concentrador, una pasarela, un puente, un conmutador, una máquina o combinaciones de los mismos. Las realizaciones pueden ser implementadas como una cualquiera, o una combinación, de: uno o más microchips o circuitos integrados interconectados usando una placa madre, lógica conectada por cableado físico, software almacenado por un dispositivo de memoria y ejecutado por un microprocesador, firmware, un circuito integrado específico de la aplicación (ASIC) y / o una formación de compuertas programables en el terreno (FPGA). El término "lógica" puede incluir, a modo de ejemplo, software o hardware y / o combinaciones de software y hardware.
Las realizaciones pueden ser proporcionadas, por ejemplo, como un producto de programa de ordenador que puede incluir uno o más medios legibles por máquina con instrucciones ejecutables por máquina almacenadas en los mismos, que cuando son ejecutadas por una o más máquinas tales como un ordenador, una red de ordenadores u otros dispositivos electrónicos, pueden dar como resultado que dicha(s) máquina(s) lleve(n) a cabo las operaciones según las realizaciones descritas en la presente memoria. Un medio legible por máquina puede incluir, pero no se limita a, disquetes flexibles, discos ópticos, CD-ROM (Disco Compacto - Memorias de Sólo Lectura) y discos magnético-ópticos, ROM, RAM, EPROM (Memorias de Sólo Lectura Programables y Borrables), EEPROM (Memorias de Sólo Lectura Programables y Eléctricamente Borrables), tarjetas magnéticas u ópticas, memoria flash, u otro tipo de medio legible por medios / máquinas, adecuado para almacenar instrucciones ejecutables por máquina. Además, las realizaciones pueden ser descargadas como un producto de programa de ordenador, en donde el programa puede ser transferido desde un ordenador remoto (p. ej., un servidor) a un ordenador solicitante (p. ej., un cliente), por medio de una o más señales de datos realizadas en y / o moduladas por una onda portadora u otro medio de propagación, mediante un enlace de comunicación (p. ej., una conexión por módem y / o red).
Las referencias a "una realización", "realización", "realización ejemplar", "diversas realizaciones", etc., indican que la(s) realización(es) así descrita(s) puede(n) incluir características, estructuras o características específicas, pero no toda realización incluye necesariamente las características, estructuras o características específicas. Además, algunas realizaciones pueden tener algunas, todas, o ninguna de las características descritas para otras realizaciones.
En la descripción y reivindicaciones siguientes, puede usarse el término "acoplado", junto con sus derivaciones. "Acoplado" se usa para indicar que dos o más elementos cooperan o interactúan entre sí, pero pueden o no tener componentes físicos o eléctricos intervinientes entre ellos.
Según se utilizan en las reivindicaciones, a menos que se especifique lo contrario, el uso de los adjetivos ordinales "primero", "segundo", "tercero", etc., para describir un elemento común, indica meramente que se está haciendo referencia a distintos casos de elementos iguales, y no está concebido para implicar que los elementos así descritos deben estar en una secuencia dada, ya sea temporalmente, espacialmente, en una clasificación, o de cualquier otra manera.
Las siguientes cláusulas y / o ejemplos corresponden a realizaciones o ejemplos adicionales. Los detalles específicos en los ejemplos pueden ser usados en cualquier parte en una o más realizaciones. Las diversas características de las distintas realizaciones o ejemplos pueden estar diversamente combinadas, con algunas características incluidas y otras excluidas, para adecuarse a una cierta variedad de distintas aplicaciones. Algunas realizaciones remiten a un procedimiento que comprende: monitorizar un programa de software para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; evaluar si la macro-operación de las instrucciones candidatas es valiosa para el programa de software; y realizar la operación de fusión si es evaluada como valiosa.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, comprendiendo adicionalmente permitir la realización de la macro-operación tras la revisión de los resultados de la evaluación.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, comprendiendo adicionalmente detectar instrucciones candidatas para la operación de fusión en la región de programa.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, comprendiendo adicionalmente rechazar la macro-fusión si la operación de fusión es evaluada como no valiosa para el programa de software.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, comprendiendo adicionalmente seleccionar la instrucción candidata más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar a una instrucción candidata individual.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, comprendiendo adicionalmente modificar las instrucciones candidatas antes de realizar la operación de fusión.
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, en los cuales las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMULADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, en los cuales la evaluación es realizada en un optimizador binario dinámico o un compilador, en los cuales la evaluación incluye adicionalmente evaluar un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es o no crítica para el programa de software. Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, en los cuales la evaluación del DDG referido a las instrucciones candidatas además ha de determinar si la operación de fusión reduce o aumenta, bien un número de instrucciones ejecutadas o bien una cantidad de energía consumida en el programa de software. Las realizaciones o ejemplos incluyen cualquiera de los procedimientos precedentes, en los cuales el sistema informático comprende uno o más entre un ordenador de sobremesa, un ordenador servidor, un decodificador, y un ordenador móvil que incluye uno o más entre un teléfono inteligente, un asistente digital personal (PDA), un ordenador de tableta, un lector electrónico y un ordenador portátil. Otra realización o ejemplo incluye un aparato para realizar cualquiera de los procedimientos mencionados anteriormente.
En otra realización o ejemplo, un aparato comprende medios para realizar cualquiera de los procedimientos mencionados anteriormente.
En otra realización o ejemplo más, al menos un medio de almacenamiento legible por máquina comprende una pluralidad de instrucciones que, en respuesta a ser ejecutadas en un dispositivo informático, hacen que el dispositivo informático lleve a cabo un procedimiento según cualquiera de los procedimientos mencionados anteriormente.
En otra realización o ejemplo más, al menos un medio de almacenamiento no transitorio, o tangible, legible por máquina, comprende una pluralidad de instrucciones que, en respuesta a ser ejecutadas en un dispositivo informático, hacen que el dispositivo informático lleve a cabo un procedimiento según cualquiera de los procedimientos mencionados anteriormente.
En otra realización o ejemplo más, un dispositivo informático está dispuesto para realizar un procedimiento según cualquiera de los procedimientos mencionados anteriormente.
Algunas realizaciones remiten a un aparato que comprende: lógica de monitorización para monitorizar un programa de software, para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; lógica de evaluación para evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software: y lógica de ejecución para realizar la operación de fusión si se evalúa que es valiosa. Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, comprendiendo adicionalmente lógica de decisión para permitir la realización de la macro-operación, tras la revisión de los resultados de la evaluación. Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la lógica de monitorización comprende un módulo de detección para detectar las instrucciones candidatas para la operación de fusión en la región de programa.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la lógica de decisión comprende un módulo de evaluación para rechazar la macro-fusión si se evalúa que la operación de fusión no es valiosa para el programa de software.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la lógica de decisión comprende un módulo de evaluación para seleccionar la instrucción candidata más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar sobre una instrucción candidata individual.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la lógica de ejecución comprende un módulo de modificación para modificar las instrucciones candidatas antes de realizar la operación de fusión.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMULADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la evaluación es realizada en un optimizador binario dinámico o un compilador, en los cuales la evaluación incluye evaluar un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es o no crítica para el programa de software.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales la lógica de evaluación ha de evaluar adicionalmente el DDG referido a las instrucciones candidatas, para determinar si la operación de fusión reduce o aumenta, bien un cierto número de instrucciones ejecutadas, o bien una cantidad de energía consumida en el programa de software.
Las realizaciones o ejemplos incluyen cualquiera de los aparatos anteriores, en los cuales el sistema informático comprende uno o más entre un ordenador de sobremesa, un ordenador servidor, un decodificador, y un ordenador móvil que incluye uno o más entre un teléfono inteligente, un asistente digital personal (PDA), un ordenador de tableta, un lector electrónico y un ordenador portátil. Algunas realizaciones remiten a un sistema que comprende: un dispositivo informático con una memoria para almacenar instrucciones, y un dispositivo de procesamiento para ejecutar las instrucciones, teniendo adicionalmente el dispositivo informático un mecanismo para: monitorizar un programa de software para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software; y realizar la operación de fusión si se evalúa que es valiosa.
Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de admitir adicionalmente la realización de la operación de fusión tras la revisión de los resultados de la evaluación y la detección de las instrucciones candidatas a la fusión en la región de programa.
Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de rechazar adicionalmente la macro-fusión si se evalúa que la operación de fusión no es valiosa para el programa de software. Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de seleccionar adicionalmente la instrucción más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar sobre una instrucción candidata individual.
Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de modificar adicionalmente las instrucciones candidatas antes de realizar la operación de fusión, en los cuales las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMULADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de realizar adicionalmente la evaluación en un optimizador binario dinámico o compilador, en los cuales el mecanismo ha de evaluar adicionalmente un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es o no crítica para el programa de software. Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el mecanismo ha de evaluar adicionalmente el DDG referido a las instrucciones candidatas para determinar si la operación de fusión reduce o aumenta, bien un cierto número de instrucciones ejecutadas, o bien una cantidad de energía consumida en el programa de software.
Las realizaciones o ejemplos incluyen cualquiera de los sistemas anteriores, en los cuales el sistema informático comprende uno o más entre un ordenador de sobremesa, un ordenador servidor, un decodificador, y un ordenador móvil que incluye uno o más entre un teléfono digital, un asistente digital personal (PDA), un ordenador de tableta, un lector electrónico y un ordenador portátil.
Los dibujos y la descripción precedente dan ejemplos de realizaciones. Los expertos en la técnica apreciarán que uno o más de los elementos descritos bien puede(n) ser combinado(s) en un único elemento funcional. Alternativamente, ciertos elementos pueden ser divididos en múltiples elementos funcionales. Los elementos de una realización pueden ser añadidos a otra realización. Por ejemplo, los órdenes de los procesos descritos en la presente memoria pueden ser cambiados, y no están limitados a la manera descrita en la presente memoria. Además, las acciones de cualquier diagrama de flujo no necesariamente han de implementarse en el orden mostrado; ni tampoco todas las acciones deben ser realizadas necesariamente. Además, aquellas acciones que no dependen de otras acciones pueden ser realizadas en paralelo con las otras acciones. El alcance de las realizaciones no está limitado en modo alguno por estos ejemplos específicos. Son posibles numerosas variaciones, ya sean dadas explícitamente en la especificación o no, tales como diferencias en la estructura, la dimensión y el uso del material. El alcance de las realizaciones es al menos tan amplio como el dado por las siguientes reivindicaciones.

Claims

REIVINDICACIONES
1. Un aparato para facilitar la macro-fusión, que comprende: lógica de monitorización, para monitorizar un programa de software, para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; lógica de evaluación, para evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software; y lógica de ejecución, para realizar la operación de fusión si está evaluada como valiosa.
2. El aparato de la reivindicación 1 , que comprende adicionalmente lógica de decisión para permitir la realización de la macro-operación tras la revisión de los resultados de la evaluación.
3. El aparato de la reivindicación 1 , en el cual la lógica de monitorización comprende un módulo de detección para detectar las instrucciones candidatas para la operación de fusión en la región de programa.
4. El aparato de la reivindicación 1 o 2, en el cual la lógica de decisión comprende un módulo de evaluación para rechazar la macro-fusión si se evalúa que la operación de fusión no es valiosa para el programa de software.
5. El aparato de la reivindicación 1 o 2, en el cual la lógica de decisión comprende un módulo de evaluación para seleccionar la instrucción candidata más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar sobre una instrucción candidata individual.
6. El aparato de la reivindicación 1 , en el cual la lógica de ejecución comprende un módulo de modificación para modificar las instrucciones candidatas antes de realizar la operación de fusión.
7. El aparato de la reivindicación 1 , en el cual las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMUL.ADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
8. El aparato de la reivindicación 1 , en el cual la evaluación es realizada en un optimizador binario dinámico o un compilador, y en el cual la lógica de evaluación ha de evaluar adicionalmente un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es crítica o no para el programa de software.
9. El aparato de la reivindicación 1 u 8, en el cual la evaluación del DDG referido a las instrucciones candidatas ha de determinar adicionalmente si la operación de fusión reduce o aumenta, bien un cierto número de instrucciones ejecutadas, o bien una cantidad de energía consumida en el programa de software.
10. El aparato de la reivindicación 1 , en el cual el sistema informático comprende uno o más entre un ordenador de sobremesa, un ordenador servidor, un decodificador, y un ordenador móvil que incluye uno o más entre un teléfono inteligente, un asistente digital personal (PDA), un ordenador de tableta, un lector electrónico y un ordenador portátil.
11. Un procedimiento para facilitar la macro-fusión, que comprende: monitorizar un programa de software para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software; y realizar la operación de fusión si se evalúa que es valiosa.
12. El procedimiento de la reivindicación 11 , que comprende adicionalmente permitir la realización de la macro-operación tras la revisión de los resultados de la evaluación.
13. El procedimiento de la reivindicación 11 , que comprende adicionalmente detectar instrucciones candidatas para la operación de fusión en la región de programa; rechazar la macro-fusión si se evalúa que la operación de fusión no es valiosa para el programa de software; y seleccionar la instrucción candidata más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar sobre una instrucción candidata individual.
14. El procedimiento de la reivindicación 11 , que comprende adicionalmente modificar las instrucciones candidatas antes de realizar la operación de fusión, en donde las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMUL.ADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
15. El procedimiento de la reivindicación 11 , en el cual la evaluación es realizada en un optimizador binario dinámico o un compilador, y en el cual la evaluación incluye adicionalmente evaluar un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es o no crítica para el programa de software.
16. El procedimiento de la reivindicación 11 , en el cual la evaluación del DDG referido a las instrucciones candidatas ha de determinar adicionalmente si la operación de fusión reduce o aumenta, bien un cierto número de instrucciones ejecutadas, o bien una cantidad de energía consumida en el programa de software.
17. Un sistema para facilitar la macro-fusión, que comprende: un dispositivo informático con una memoria para almacenar instrucciones, y un dispositivo de procesamiento para ejecutar las instrucciones, teniendo adicionalmente el dispositivo informático un mecanismo para: monitorizar un programa de software para una región de programa con instrucciones candidatas a la fusión, para una operación de fusión en un sistema informático; evaluar si la macro-operación de las instrucciones candidatas es o no valiosa para el programa de software; y realizar la operación de fusión si se evalúa que es valiosa.
18. El sistema de la reivindicación 17, en el cual el mecanismo ha de permitir adicionalmente la realización de la operación de fusión tras la revisión de los resultados de la evaluación, y la detección de las instrucciones candidatas a la fusión en la región de programa.
19. El sistema de la reivindicación 17 o 18, en el cual el mecanismo ha de rechazar adicionalmente la macro-fusión si se evalúa que la operación de fusión no es valiosa para el programa de software, y en el cual el mecanismo ha de seleccionar adicionalmente la instrucción más adecuada para la operación de fusión, dado un conjunto de instrucciones candidatas potenciales, a aplicar sobre una instrucción candidata individual.
20. El sistema de la reivindicación 17, en el cual el mecanismo ha de modificar adicionalmente las instrucciones candidatas antes de realizar la operación de fusión, en donde las instrucciones candidatas comprenden una instrucción de Multiplicación-Suma Combinada (CMULADD) o una instrucción de Multiplicación-Resta Combinada (CMULSUB).
21. El sistema de la reivindicación 17, en el cual el mecanismo ha de realizar adicionalmente la evaluación en un optimizador binario dinámico o un compilador, en donde el mecanismo ha de evaluar adicionalmente un gráfico de dependencia de datos (DDG) referido a las instrucciones candidatas, para determinar la profundidad o longitud de cada instrucción candidata, a fin de determinar adicionalmente si la operación de fusión es o no crítica para el programa de software, en donde el mecanismo ha de evaluar adicionalmente el DDG referido a las instrucciones candidatas para determinar si la operación de fusión reduce o aumenta, bien un cierto número de instrucciones ejecutadas, o bien una cantidad de energía consumida en el programa de software.
22. Un aparato configurado para realizar un procedimiento según cualquiera de las reivindicaciones 11 a 16.
23. Un aparato que comprende medios para realizar un procedimiento según cualquiera de las reivindicaciones 11 a 16.
24. Al menos un medio legible por máquina que comprende una pluralidad de instrucciones que, en respuesta a ser ejecutadas en un dispositivo informático, hacen que el dispositivo informático lleve a cabo un procedimiento según una cualquiera de las reivindicaciones 11 a 16.
25. Un dispositivo de comunicaciones dispuesto para realizar un procedimiento según cualquiera de las reivindicaciones 11 a 16.
PCT/ES2013/070209 2013-03-27 2013-03-27 Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software WO2014154917A1 (es)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/129,956 US9329848B2 (en) 2013-03-27 2013-03-27 Mechanism for facilitating dynamic and efficient fusion of computing instructions in software programs
PCT/ES2013/070209 WO2014154917A1 (es) 2013-03-27 2013-03-27 Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2013/070209 WO2014154917A1 (es) 2013-03-27 2013-03-27 Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software

Publications (1)

Publication Number Publication Date
WO2014154917A1 true WO2014154917A1 (es) 2014-10-02

Family

ID=48790482

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2013/070209 WO2014154917A1 (es) 2013-03-27 2013-03-27 Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software

Country Status (2)

Country Link
US (1) US9329848B2 (es)
WO (1) WO2014154917A1 (es)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112947997A (zh) * 2019-12-11 2021-06-11 阿里巴巴集团控股有限公司 数据处理方法、装置以及指令融合方法、代码生成方法
CN112965710A (zh) * 2019-12-13 2021-06-15 阿里巴巴集团控股有限公司 计算图的处理方法、装置和系统
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014154917A1 (es) * 2013-03-27 2014-10-02 Intel Corporation Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software
US10324724B2 (en) * 2015-12-16 2019-06-18 Intel Corporation Hardware apparatuses and methods to fuse instructions
US9798527B1 (en) * 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
US11157280B2 (en) 2017-12-07 2021-10-26 International Business Machines Corporation Dynamic fusion based on operand size
US11256509B2 (en) 2017-12-07 2022-02-22 International Business Machines Corporation Instruction fusion after register rename
US11294685B2 (en) * 2019-06-04 2022-04-05 International Business Machines Corporation Instruction fusion using dependence analysis
US10956167B2 (en) 2019-06-06 2021-03-23 International Business Machines Corporation Mechanism for instruction fusion using tags

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392228A (en) * 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US6889318B1 (en) * 2001-08-07 2005-05-03 Lsi Logic Corporation Instruction fusion for digital signal processor
US7039909B2 (en) * 2001-09-29 2006-05-02 Intel Corporation Method and apparatus for performing compiler transformation of software code using fastforward regions and value specialization
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US8423979B2 (en) * 2006-10-12 2013-04-16 International Business Machines Corporation Code generation for complex arithmetic reduction for architectures lacking cross data-path support
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US8990282B2 (en) * 2009-09-21 2015-03-24 Arm Limited Apparatus and method for performing fused multiply add floating point operation
US8914801B2 (en) * 2010-05-27 2014-12-16 International Business Machine Corporation Hardware instructions to accelerate table-driven mathematical computation of reciprocal square, cube, forth root and their reciprocal functions, and the evaluation of exponential and logarithmic families of functions
US20130173237A1 (en) * 2011-12-29 2013-07-04 Equifax, Inc. Score fusion based on the gravitational force between two objects
US9195466B2 (en) * 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9746392B2 (en) * 2012-08-07 2017-08-29 The Boeing Company Systems and methods to determine navigation states of a platform
US20140047221A1 (en) * 2012-08-07 2014-02-13 Qualcomm Incorporated Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
WO2014154917A1 (es) * 2013-03-27 2014-10-02 Intel Corporation Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software
CN103268223B (zh) * 2013-04-26 2016-06-29 深圳中微电科技有限公司 在编译过程中改善乘加类指令执行性能的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LEUPERS R ET AL: "Instruction selection for embedded DSPs with complex instructions", PROCEEDINGS OF EURO-DAC '96: EUROPEAN DESIGN AUTOMATION CONFERENCE WITH EURO-VDL '96 AND EXHIBITION. GENEVA, SEPT. 16 - 20, 1996; [PROCEEDINGS OF EURO-DAC : EUROPEAN DESIGN AUTOMATION CONFERENCE WITH EURO-VDL AND EXHIBITION], LOS ALAMITOS, IEEE COMP., 16 September 1996 (1996-09-16), pages 200 - 205, XP010198599, ISBN: 978-0-8186-7573-7, DOI: 10.1109/EURDAC.1996.558205 *
LUÂ Y-S ET AL: "Optimal subgraph covering for customisable VLIW processors", IET COMPUTERS AND DIGITAL TECHNIQUES,, vol. 3, no. 1, 12 January 2009 (2009-01-12), pages 14 - 23, XP006032326, ISSN: 1751-861X, DOI: 10.1049/IET-CDT:20070104 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112947997A (zh) * 2019-12-11 2021-06-11 阿里巴巴集团控股有限公司 数据处理方法、装置以及指令融合方法、代码生成方法
CN112965710A (zh) * 2019-12-13 2021-06-15 阿里巴巴集团控股有限公司 计算图的处理方法、装置和系统
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN116302114B (zh) * 2023-02-24 2024-01-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法

Also Published As

Publication number Publication date
US20150026671A1 (en) 2015-01-22
US9329848B2 (en) 2016-05-03

Similar Documents

Publication Publication Date Title
WO2014154917A1 (es) Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software
KR102380576B1 (ko) 그래픽 프레임 프로세싱에서 전력 소비를 감소시키기 위한 cpu/gpu dcvs 공동 최적화
US9727318B2 (en) Techniques to identify and purge unused code
US10608877B2 (en) Mechanism for facilitating dynamic and trusted cloud-based extension upgrades for computing systems
US10394561B2 (en) Mechanism for facilitating dynamic and efficient management of instruction atomicity volations in software programs at computing systems
KR101712846B1 (ko) 컴퓨팅 시스템의 저장 디바이스에 대한 효율적인 작업 경로를 용이하게 하는 메커니즘
US20150261366A1 (en) Mechanism for facilitating flexible wraparound displays for computing devices
US11546857B2 (en) Wireless sensor network for pipeline fluid leakage measurement
US20150178496A1 (en) Protection system including machine learning snapshot evaluation
US11366466B1 (en) Predictive maintenance techniques and analytics in hybrid cloud systems
US20150185260A1 (en) Power adapter detection
US9696892B2 (en) Mechanism for facilitating dynamic change orientation for edit modes at computing devices
US9565164B2 (en) Techniques to rate-adjust data usage with a virtual private network
US20110138234A1 (en) Automated information technology error and service request correlation
US20160349934A1 (en) Electronic device and method for generating multiple interfaces in the electronic device
US9684503B2 (en) Electronic device and method for saving power in the electronic device
US10117178B2 (en) Simultaneous power control among multiple devices per context
CN110837720A (zh) 指令执行的方法、装置及相关产品
CN104794077A (zh) 一种链表存储方法及系统
You et al. Dynamic power management for embedded processors in system‐on‐chip designs
Kim et al. Time-based power control architecture for application processors in smartphones
TWI442220B (zh) 具有省電機制之電子裝置與其方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14129956

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13736932

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13736932

Country of ref document: EP

Kind code of ref document: A1