RU2000125538A - COMPLETE ELIMINATION OF EXCESS LOAD FOR ARCHITECTURES SUPPORTING MANAGEMENT AND DATA SPECULATION - Google Patents

COMPLETE ELIMINATION OF EXCESS LOAD FOR ARCHITECTURES SUPPORTING MANAGEMENT AND DATA SPECULATION

Info

Publication number
RU2000125538A
RU2000125538A RU2000125538/09A RU2000125538A RU2000125538A RU 2000125538 A RU2000125538 A RU 2000125538A RU 2000125538/09 A RU2000125538/09 A RU 2000125538/09A RU 2000125538 A RU2000125538 A RU 2000125538A RU 2000125538 A RU2000125538 A RU 2000125538A
Authority
RU
Russia
Prior art keywords
loading
type
load
download
operations
Prior art date
Application number
RU2000125538/09A
Other languages
Russian (ru)
Other versions
RU2220442C2 (en
Inventor
Йоуфенг ВУ
Йонг-Фонг ЛИ
Original Assignee
Интел Корпорейшн
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
Priority claimed from US09/038,755 external-priority patent/US6202204B1/en
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2000125538A publication Critical patent/RU2000125538A/en
Application granted granted Critical
Publication of RU2220442C2 publication Critical patent/RU2220442C2/en

Links

Claims (29)

1. Способ, реализуемый на компьютере, используемый при компиляции программы, включающий идентификацию множества покрывающих операций загрузки, включающего в себя по меньшей мере одну покрывающую операцию загрузки, относящуюся к первому типу загрузки, и избыточную операцию загрузки, относящуюся ко второму типу загрузки, при этом как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку и по меньшей мере одну загрузку спекулятивного типа, и избирательное устранение избыточной операции загрузки.1. A method implemented on a computer used to compile a program, comprising identifying a plurality of covering loading operations, including at least one covering loading operation related to the first type of loading, and an excessive loading operation related to the second type of loading, wherein both the first type of load and the second type of load may belong to a group of load types, including a regular load and at least one speculative type load, and selective elimination accurate loading operation. 2. Способ по п. 1, отличающийся тем, что операции загрузки спекулятивного типа включают в себя расширенную загрузку, проверочную расширенную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 2. The method according to claim 1, characterized in that the speculative type loading operations include extended loading, verifying extended loading, speculative loading and speculative extended loading. 3. Способ по п. 1, отличающийся тем, что идентификацию множества покрывающих операций загрузки и избыточной загрузки осуществляют глобально по всей функции. 3. The method according to p. 1, characterized in that the identification of many covering operations load and excess load is carried out globally throughout the function. 4. Способ по п. 1, отличающийся тем, что идентификация множества покрывающих операций загрузки предусматривает определение пересечения операций загрузки из разных блоков. 4. The method according to p. 1, characterized in that the identification of many covering loading operations involves determining the intersection of loading operations from different blocks. 5. Способ, реализуемый на компьютере, используемый при компиляции программы, включающий идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, при этом как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере, одну загрузку спекулятивного типа и, по меньшей мере, одну загрузку проверочного типа, и избирательное устранение избыточной операции загрузки. 5. The method implemented on the computer used to compile the program, including the identification of the covering download operation related to the first type of download, and redundant download operation related to the second type of download, both the first type of download and the second type of download may belong a group of load types, including a regular load, at least one speculative type load and at least one test type load, and selectively eliminate the redundant load operation. 6. Способ по п. 5, отличающийся тем, что избыточную операцию загрузки устраняют избирательно, поскольку, в зависимости от комбинации первого и второго типов загрузки, избыточная операция загрузки устраняется при выполнении определенных условий. 6. The method according to p. 5, characterized in that the redundant loading operation is eliminated selectively, because, depending on the combination of the first and second types of loading, the excessive loading operation is eliminated when certain conditions are met. 7. Способ по п. 5, отличающийся тем, что избыточную операцию загрузки устраняют избирательно, поскольку, в зависимости от комбинации первого и второго типов загрузки, избыточная операция загрузки не устраняется ни при каких условиях. 7. The method according to p. 5, characterized in that the redundant loading operation is eliminated selectively, because, depending on the combination of the first and second types of loading, the excessive loading operation is not eliminated under any conditions. 8. Способ по п. 5, отличающийся тем, что группа типов загрузки включает в себя обычную загрузку, расширенную загрузку, проверочную загрузку, проверочную расширенную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 8. The method according to p. 5, characterized in that the group of boot types includes regular download, advanced download, test download, test advanced download, speculative download and speculative advanced download. 9. Способ по п. 5, отличающийся тем, что идентифицируют более одной покрывающей операции загрузки, если существуют дополнительные покрывающие операции загрузки. 9. The method according to p. 5, characterized in that more than one covering loading operation is identified if additional covering loading operations exist. 10. Способ по п. 5, отличающийся тем, что идентификацию покрывающей и избыточной операций загрузки осуществляют глобально по всей функции. 10. The method according to p. 5, characterized in that the identification of the covering and redundant loading operations is carried out globally throughout the function. 11. Способ по п. 5, отличающийся тем, что идентифицируют более одной покрывающей операции загрузки, и каждая покрывающая операция загрузки относится к первому типу загрузки. 11. The method according to p. 5, characterized in that more than one covering loading operation is identified, and each covering loading operation refers to the first type of loading. 12. Способ по п. 5, отличающийся тем, что первый тип загрузки представляет собой обычную загрузку, и второй тип загрузки представляет собой спекулятивную расширенную загрузку. 12. The method according to p. 5, characterized in that the first type of download is a regular download, and the second type of download is a speculative advanced download. 13. Способ по п. 5, отличающийся тем, что операции загрузки проверочного типа включают в себя операцию проверочной загрузки и операцию проверочной расширенной загрузки. 13. The method according to p. 5, characterized in that the verification type loading operations include a verification loading operation and a verification extended loading operation. 14. Способ по п. 5, отличающийся тем, что устранение избыточной операции загрузки включает в себя полное устранение избыточной операции загрузки из кода программы. 14. The method according to p. 5, characterized in that the elimination of redundant loading operations includes the complete elimination of redundant loading operations from the program code. 15. Способ по п. 5, отличающийся тем, что устранение избыточной операции загрузки включает в себя устранение избыточной операции загрузки из ее позиции в коде программы и перемещение в другую позицию в коде. 15. The method according to p. 5, characterized in that the elimination of redundant loading operations includes the elimination of redundant loading operations from its position in the program code and moving to another position in the code. 16. Машинно-читаемый носитель, на котором хранятся команды, которые при обработке их процессором обуславливают выполнение процессором действий, включающих идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, причем как первый тип загрузки, так и второй тип загрузки могут принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере одну загрузку спекулятивного типа и, по меньшей мере, одну загрузку проверочного типа, и избирательное устранение избыточной операции загрузки. 16. A machine-readable medium on which instructions are stored that, when processed by their processor, cause the processor to perform actions that include identifying a covering loading operation related to the first type of loading and an excessive loading operation related to the second type of loading, moreover, as the first type of loading , and the second type of load can belong to a group of load types, including a regular load, at least one speculative type load, and at least one test type load as well, and selective removal of excess load operation. 17. Носитель по п. 16, отличающийся тем, что группа типов загрузки включает в себя обычную загрузку, расширенную загрузку, проверочную загрузку, проверочную расширенную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 17. The media according to claim 16, wherein the group of download types includes regular download, advanced download, test download, test advanced download, speculative download and speculative advanced download. 18. Способ, реализуемый на компьютере, используемый при компиляции программы, включающий идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, на определенных этапах глобально по всей функции, причем как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя, обычную загрузку и, по меньшей мере, одну загрузку спекулятивного типа, и избирательное устранение избыточной операции загрузки. 18. The method implemented on the computer used to compile the program, including the identification of the covering download operation related to the first type of download, and redundant download operation related to the second type of download, at certain stages globally throughout the function, and as the first type of download, and the second type of download may belong to a group of types of loading, including regular loading and at least one speculative type loading, and the selective elimination of redundant loading operations. 19. Способ по п. 18, отличающийся тем, что как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере, одну загрузку спекулятивного типа и, по меньшей мере, одну загрузку проверочного типа. 19. The method according to p. 18, characterized in that both the first type of load and the second type of load may belong to a group of load types, including a regular load, at least one speculative type load and at least one load test type. 20. Способ устранения операции загрузки при компиляции программы, включающий определение имени подпрограммы на основании первого типа загрузки и второго типа загрузки и выполнение подпрограммы, причем операции загрузки устраняются согласно подпрограмме. 20. A method of eliminating a load operation when compiling a program, comprising determining a subroutine name based on the first type of load and the second type of load, and executing the subroutine, wherein the load operation is eliminated according to the subroutine. 21. Способ по п. 20, отличающийся тем, что подпрограмма может вызывать другую подпрограмму. 21. The method according to p. 20, characterized in that the subroutine can call another subroutine. 22. Способ по п. 20, отличающийся тем, что определение имени подпрограммы включает в себя передачу первого и второго типов загрузки матрице комбинаций операций загрузки. 22. The method according to p. 20, characterized in that the determination of the name of the subprogram includes the transfer of the first and second types of download matrix combinations of load operations. 23. Способ по п. 22, отличающийся тем, что определение имени подпрограммы включает в себя идентификацию имени подпрограммы на пересечении первого и второго типов загрузки в матрице комбинаций операций загрузки. 23. The method according to p. 22, characterized in that the determination of the name of the subroutine includes identifying the name of the subroutine at the intersection of the first and second types of downloads in the matrix of combinations of loading operations. 24. Способ по п. 22, отличающийся тем, что матрица комбинаций операций загрузки является полной матрицей комбинаций операций загрузки. 24. The method according to p. 22, characterized in that the matrix of combinations of loading operations is a complete matrix of combinations of loading operations. 25. Способ по п. 20, отличающийся тем, что идентификатор на пересечении первого и второго типов загрузки представляет собой адрес памяти для имени подпрограммы. 25. The method according to p. 20, characterized in that the identifier at the intersection of the first and second types of downloads is a memory address for the name of the subroutine. 26. Способ по п. 20, отличающийся тем, что для некоторых комбинаций первого и второго типов загрузки, подпрограмма включает в себя только оператор возврата. 26. The method according to p. 20, characterized in that for some combinations of the first and second types of loading, the subroutine includes only the return statement. 27. Машинно-читаемый носитель, на котором хранятся команды, которые при обработке их процессором обуславливают выполнение процессором действий, включающих определение имени подпрограммы на основании первого типа загрузки и второго типа загрузки, и выполнение подпрограммы, причем операции загрузки устраняются согласно подпрограмме. 27. A machine-readable medium on which instructions are stored that, when processed by their processor, cause the processor to perform actions that include determining the name of the subprogram based on the first type of load and the second type of load, and executing the subprogram, the loading operations being eliminated according to the subprogram. 28. Носитель по п. 27, отличающийся тем, что подпрограмма использует обращение к матрице комбинаций операций загрузки. 28. The media according to claim 27, wherein the subroutine uses an access to a matrix of combinations of loading operations. 29. Носитель по п. 27, отличающийся тем, что матрица является полной матрицей комбинаций операций загрузки. 29. The medium of claim 27, wherein the matrix is a complete matrix of combinations of loading operations.
RU2000125538/09A 1998-03-11 1999-02-26 Complete elimination of redundant loading for architectures supporting control and data speculation RU2220442C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/038,755 US6202204B1 (en) 1998-03-11 1998-03-11 Comprehensive redundant load elimination for architectures supporting control and data speculation
US09/038,755 1998-03-11

Publications (2)

Publication Number Publication Date
RU2000125538A true RU2000125538A (en) 2002-11-10
RU2220442C2 RU2220442C2 (en) 2003-12-27

Family

ID=21901714

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2000125538/09A RU2220442C2 (en) 1998-03-11 1999-02-26 Complete elimination of redundant loading for architectures supporting control and data speculation

Country Status (5)

Country Link
US (1) US6202204B1 (en)
EP (1) EP1062576A4 (en)
AU (1) AU2884599A (en)
RU (1) RU2220442C2 (en)
WO (1) WO1999046677A1 (en)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11237980A (en) * 1998-02-20 1999-08-31 Hitachi Ltd Device and method for generating object-orientated optimized code
JP2000122875A (en) * 1998-10-19 2000-04-28 Internatl Business Mach Corp <Ibm> Method and system for processing exception
JP3437932B2 (en) * 1999-01-05 2003-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション Code generation method and apparatus for array range check, and versioning method and apparatus
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6367071B1 (en) * 1999-03-02 2002-04-02 Lucent Technologies Inc. Compiler optimization techniques for exploiting a zero overhead loop mechanism
US6363522B1 (en) * 1999-04-23 2002-03-26 Sun Microsystems, Inc. Method and apparatus for handling exceptions as normal control flow
US6728867B1 (en) * 1999-05-21 2004-04-27 Intel Corporation Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point
US7634635B1 (en) 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6813705B2 (en) * 2000-02-09 2004-11-02 Hewlett-Packard Development Company, L.P. Memory disambiguation scheme for partially redundant load removal
US6636960B1 (en) * 2000-02-16 2003-10-21 Hewlett-Packard Development Company, L.P. Method and apparatus for resteering failing speculation check instructions
US6823434B1 (en) * 2000-02-21 2004-11-23 Hewlett-Packard Development Company, L.P. System and method for resetting and initializing a fully associative array to a known state at power on or through machine specific state
US6775752B1 (en) * 2000-02-21 2004-08-10 Hewlett-Packard Development Company, L.P. System and method for efficiently updating a fully associative array
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US6615403B1 (en) * 2000-06-30 2003-09-02 Intel Corporation Compare speculation in software-pipelined loops
US6895579B2 (en) * 2001-07-31 2005-05-17 Intel Corporation Method and apparatus for maintaining exception reporting for register promotion
CA2359862A1 (en) 2001-10-24 2003-04-24 Ibm Canada Limited - Ibm Canada Limitee Using identifiers and counters for controlled optimization compilation
US7260217B1 (en) 2002-03-01 2007-08-21 Cavium Networks, Inc. Speculative execution for data ciphering operations
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US20040003383A1 (en) * 2002-06-28 2004-01-01 Microsoft Corporation Stripping of unnecessary information from source code
US7089400B1 (en) 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
US7467377B2 (en) * 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7555540B2 (en) 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7146606B2 (en) * 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7174428B2 (en) * 2003-12-29 2007-02-06 Intel Corporation Method and system for transforming memory location references in instructions
US20070006195A1 (en) * 2004-03-31 2007-01-04 Christof Braun Method and structure for explicit software control of data speculation
US20050223385A1 (en) * 2004-03-31 2005-10-06 Christof Braun Method and structure for explicit software control of execution of a thread including a helper subthread
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US20050268073A1 (en) * 2004-05-25 2005-12-01 Hewlett-Packard Development Company, L.P. Critical section availability
US20070130114A1 (en) * 2005-06-20 2007-06-07 Xiao-Feng Li Methods and apparatus to optimize processing throughput of data structures in programs
FR2921172B1 (en) * 2007-09-14 2015-09-04 Airbus France METHOD FOR DEBUGGING OPERATING SOFTWARE OF AN ON-BOARD AIRCRAFT SYSTEM AND DEVICE FOR IMPLEMENTING THE SAME
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set
US9239735B2 (en) * 2013-07-17 2016-01-19 Texas Instruments Incorporated Compiler-control method for load speculation in a statically scheduled microprocessor
US20180329708A1 (en) * 2015-09-19 2018-11-15 Microsoft Technology Licensing, Llc Multi-nullification

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5293631A (en) * 1991-08-06 1994-03-08 Hewlett-Packard Company Analysis and optimization of array variables in compiler for instruction level parallel processor
JP2786574B2 (en) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション Method and apparatus for improving the performance of out-of-order load operations in a computer system
US5555412A (en) * 1992-12-09 1996-09-10 International Business Machines Corporation Complier and method for alias checking in a complier
US5537620A (en) * 1994-09-16 1996-07-16 International Business Machines Corporation Redundant load elimination on optimizing compilers
US5704053A (en) * 1995-05-18 1997-12-30 Hewlett-Packard Company Efficient explicit data prefetching analysis and code generation in a low-level optimizer for inserting prefetch instructions into loops of applications
US5787285A (en) * 1995-08-15 1998-07-28 International Business Machines Corporation Apparatus and method for optimizing applications for multiple operational environments or modes
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5797013A (en) * 1995-11-29 1998-08-18 Hewlett-Packard Company Intelligent loop unrolling
US6029005A (en) * 1997-04-01 2000-02-22 Intel Corporation Method for identifying partial redundancies in a new processor architecture

Similar Documents

Publication Publication Date Title
RU2000125538A (en) COMPLETE ELIMINATION OF EXCESS LOAD FOR ARCHITECTURES SUPPORTING MANAGEMENT AND DATA SPECULATION
RU2220442C2 (en) Complete elimination of redundant loading for architectures supporting control and data speculation
US5392408A (en) Address selective emulation routine pointer address mapping system
US5465373A (en) Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
WO1997012508B1 (en) Transforming and manipulating program object code
US7290254B2 (en) Combining compilation and instruction set translation
JPH0836488A (en) Method and device for checking run-time error using dynamic patching
RU99113042A (en) Computer devices for the application program, BLOCK ADMINISTRATOR OF EVENTS computing device, a way to develop computer applications, programming model for computer applications, a way to create a library of objects, computer devices DATABASE, WORK PROCESS SYSTEM DATABASE
JPH0519173B2 (en)
KR960038600A (en) Apparatus and method for enhancing data processing system performance (METHOD AND APPARATUS FOR IMPROVING SYSTEM PERFORMANCE IN A DATA PROCESSING SYSTEM)
JP2002527815A (en) Program code conversion method
KR970062948A (en) Microprocessor Power Estimator
JPH04225431A (en) Method for compiling computer instruction for increasing instruction-cache efficiency
US6925639B2 (en) Method and system for register allocation
US6105124A (en) Method and apparatus for merging binary translated basic blocks of instructions
CN100378657C (en) Method and device for improving call speed of JAVA method
US20020174418A1 (en) Constant return optimization transforming indirect calls to data fetches
US20050283588A1 (en) Instruction control apparatus, function unit, program conversion apparatus, and language processing apparatus
US6175935B1 (en) Software debugging method and recording medium to which debugging program has been recorded
US6219825B1 (en) Profile based optimization of shared libraries
US20020032901A1 (en) Unitary data structure systems, methods, and computer program products, for global conflict determination
EP0908813A2 (en) Method and apparatus for implementing multiple return sites
US20030079210A1 (en) Integrated register allocator in a compiler
US20030188132A1 (en) Computer instruction dispatch
CA2107305A1 (en) Method and system for nonsequential instruction dispatch and execution in a superscalar processor system