CN1107909C - 带临时保存目标处理器状态的装置的主处理器 - Google Patents
带临时保存目标处理器状态的装置的主处理器 Download PDFInfo
- Publication number
- CN1107909C CN1107909C CN97182374A CN97182374A CN1107909C CN 1107909 C CN1107909 C CN 1107909C CN 97182374 A CN97182374 A CN 97182374A CN 97182374 A CN97182374 A CN 97182374A CN 1107909 C CN1107909 C CN 1107909C
- Authority
- CN
- China
- Prior art keywords
- memory
- instruction
- execution
- unscheduled event
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
while{ (n--)>0) { *s++=c } ====================================== Win32 x86 instructions produced by a compiler compiling this C code. mov %ecx,[%ebp+0×c] // load c from memory address into the %ecx mov %eax,[%ebp+0×8] // load s from memory address into the %eax mov [%eax],%ecx // store c into memory address s held in %esx add %eax,#4 // increment s by 4. mov [%ebp+0×8],%eax // store(s+4)back into memory mov %eax,[%ebp+0×10] // load n from memory address into the %eax lea %ecx,[%eax-1] // decrement n and store the result in %ecx mov [%ebp+0×10],%ecx // store(n-1)into memory and %eax,%eax // test n to set the condition codes jg .-0×1b // branch to the top of this section if ″n>0″
Shows each X86 Instruction shown above followed by the host instructions necesary to implement the X86 Instruction. <dp n="d24"/> mov %ecx,[%ebp+0×c] //load c from memory address into ecx add R0,Rebp,0×c ;form the memory address and put it in R0 ld Recx,[R0] ;load c from memory address in R0 into Recx mov %eax,[%ebp+0×8] //load s from memory address·into %eax add R2,Rebp,0×8 ;form the memory address and put it in R2 ld Reax,[R2] ;load s from memory address in R2 into Recx mov [%eax],%ecx //atore c into memory address s held in %eax st [Reax],Recx ;store c into memory address s held in Reax add %eax,#4 //increment s by 4 add Reax,Reax,4 ;increment s by 4 mov [%ebp+0×8],%eax //store(s+4)back into memory add R5,Rebp,0×8 ;form the memory address add put it in R5 st [R5],Reax ;store (s+4) back into memory mov %eax,[%ebp+0×10] //load n from memory address into %eax add R7,Rebp,0×10 ;form the memory address and put it in R7 ld Reax,[R7] ;load n from memory address into the Reax lea %ecx,[%eax-1] //decrement n and store the result in %ecx sub Recx, Reax,1 ;decrement n and store the result in Recx mov [%ebp+0×10],%ecx //store (n-1) into memory add R9,Rebp,0×10 ;form the memory address and put it in R9 st [R9] ,Recx ;store (n-1) into memory and %eax,%eax //test n to set the condition codes andcc R11,Reax,Reax ;test n to set the condition codes jg .-0×1b //branch to the top of this section if ″n>0″ jg mainloop,mainloop ;jump to the main loop <dp n="d25"/> Host Instruction key; ld=load add=ADD st=store sub=subtract jg=jump if condition codes indicate greater andcc=and set the condition codes
Adds host instructions necessary to perform X86 address computation and upper and lower segment limit checks. mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c ;form lcgical address ino R0 chkl R0,Rss_limit ;Check the logical address against segment lower limit chku R0,R_FFFFFFFF ;Check the logical address against segment upper limit add R1,R0,Rss_base ;add the segment base to form the linear address ld Recx,[R1] ;load c from memory address in R1 into Recx mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 ;form logical address into R0 chkl R2,Rss_limit ;Check the logical address against segment lower limit chku R2,R_FFFFFFFF ;Check the logical address against segment upper limit add R3,R2,Rss_base ;add the segment base to form the linear address ld Reax,[R3] ;load s from memory address in R3 into mov [%eax],%ecx //store c into [s] chku Reax,Rds_limit ;Check the logical addess against aegment upper limit add R4,Reax,Rds_base ;add the segment base to form the linear address st [R4],Recx ;store c into memory address s add %eax,#4 //increment s by 4 addcc Reax,Reax,4 ;increment s by 4 mov [%ebp+0×8],%eax //store(s+4)to memory add R5,Rebp,0×8 ;form logical address into R5 chkl R5,Rss_limit ;Check the logical address against segment <dp n="d26"/> lower limit chku R5,R_FFFFFFFF ;Check the logical address against segment upper limit add R6,R5,Rss_base ;add the segment base to form the linear address st [R6],Reax ;store (s+4) to memory address in R6 mov %eax,[%ebp+0×10] //load n add R7,Rebp,0×10 ;form logical address into R7 chkl R7,Rss_limit ;Check the logical address against segment lower limit chku R7,R_FFFFFFFF ;Check the logical address against segment upper limit add R8,R7,Rss_base ;add the segment base to form the linear address ld Reax,[R8] ;load n from memory address in R8 into Reax lea %ecx,[%eax-1] //decrement n sub Recx,Reax,1 ;decrement n mov [%ebp+0×10],%ecx //store (n-1) add R9,Rebp,0×10 ;form logical address into R9 chkl R9,Rss_limit ;Check the logical address against segment lower limit chku R9,R_FFFFFFFF ;Check the logical address against segment upper limit add R10,R9,Rss_base ;add the segment base to form the linear address st [R10],Recx ;store n-1 in Recx into memory using address in R10 and %eax,%eax // test n to set the condition codes andcc R11,Reax,Reax ;test n to set the condition codes jg .-0×1b // branch to the top of this section if ″n>0″ jg mainloop,mainloop ;jump to the main loop Host Instruction key: chkl+check lower limit chku=check upper limit
Adds instructions to maintain the target X86 instruction pointer“eip”and the commit instructions that use the special morph host hardware to update X86 state. mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c chkl R0,Rss_limit chku R0,R_FFFFFFFF add R1,R0,Rss_base ld Recx,[R1] add Reip,Reip,3 ;add X86 instruction length to eip in Reip commit ;commits working state to official state mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 chkl R2,Rss_limit chku R2,R_FFFFFFFF add R3,R2,Rss_base ld Reax,[R3] add Reip,Reip,3 ;add X86 instruction length to eip in Reip commit ;commits working state to official state mov [%eax],%ecx //store c into [s] chku Reax,Rds_limit add R4,Reax,Rds_base st [R4],Recx add Reip,Reip,2 ;add X86 instruction length to eip in Reip commit ;commits working state to official state add %eax,#4 //increment s by 4 addcc Reax,Reax,4 add Reip,Reip,5 ;add X86 instruction length to eip in Reip commit ;commits working state to official state mov [%ebp+0×8],%eax //store(s+4) add R5,Rebp,0×8 chkl R5,Rss_limit chku R5,R_FFFFFFFF add R6,R5,Rss_base st [R6],Reax add Reip,Reip,3 ;add X86 instruction length to eip in Reip commit ;commits working state to official state <dp n="d28"/> mov %eax,[%ebp+0×10] //load n add R7,Rebp,0×10 chkl R7,Rss_limit chku R7,R_FFFFFFFF add R8,R7,Rss_base ld Reax,[R8] add Reip,Reip,3 ;add X86 instruction length to eip in Reip commit ;commits working state to official state lea %ecx,[%eax-1] //decrement n sub Recx,Reax,1 add Reip,Reip,3 ;add X86 instruction length to eip in Reip commit ;commits working state to official state mov [%ebp+0×10],%ecx //store(n-1) add R9,Rebp,0×10 chkl R9,Rss_limit chku R9,FFFFFFFF add R10,R9,Rss_base st [R10],Recx add Reip,Reip,3 add X86 instruction length to eip in Reip commit ;commits working state to official state and %eax,%eax //test n andcc R11,Reax,Reax add Reip,Reip,3 commit ;commits working state to official state jg .-0×1b //branch ″n>0″ add Rseq,Reip,Length(jg) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit ;commits working state to official state jg mainloop,mainloop Host Instruction key: commit=copy the contents of the working registers to the official target registers and send working stores to memory
Optimization ======================================== Assumes 32 bit flat address space which allows the elimination of segment base additions and some limit checks. Win32 uses Flat 32b segmentation Record Assumptions: Rss_base==0 Rss_limit==0 Rds_base==0 Rds_limit==FFFFFFFF SS and DS protection check <dp n="d30"/> mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c chku R0,R_FFFFFFFF ld Recx,[R0] add Reip,Reip,3 commit mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 chku R2,R_FFFFFFFF ld Reax,[R2] add Reip,Reip,3 commit mov [%eax],%ecx //store c into [s] chku Reax,R_FFFFFFFF st [Reax],Recx add Reip,Reip,2 commit add %eax,#4 //increment s by 4 addcc Reax,Reax,4 add Reip,Reip,5 commit mov [%ebp+0×8],%eax //store(s+4) add R5,Rebp,0×8 chku R5,R_FFFFFFFF st [R5],Reax add Reip,Reip,3 commit mov %eax,[%ebp+0×10] //load n add R7,Rebp,0×10 <dp n="d31"/> chku R7,R_FFFFFFFF ld Reax,[R7] add Reip,Reip,3 commit lea %ecx,[%eax-1] // decrement n sub Recx,Reax,1 add Reip,Reip,3 commit mov [%ebp+0×10],%ecx // store(n-1) add R9,Rebp,0×10 chku R9,R_FFFFFFFF st [R9],Recx add Reip,Reip,3 commit and %eax,%eax //test n andcc R11,Reax,Reax add Reip,Reip,3 commit jg .-0×1b //branch ″n>0″ add Rseq,Reip,Length(jg) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit jg mainloop,mainloop
Assume data addressed includes no bytes outside of computer memory limits which can only occur on unaligned page crossing memory references at the upper memory limit,and can be handled by special case software or hardware. mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c ld Recx,[R0] add Reip,Reip,3 commit mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 ld Reax,[R2] add Reip,Reip,3 commit mov [%eax],%ecx //store c into [s] st [Reax],Recx add Reip,Reip,2 commit add %eax,#4 //increment s by 4 addcc Reax,Reax,4 add Reip,Reip,5 committ mov [%ebp+0×8],%eax //store(s+4) add R5,Rebp,0×8 st [R5],Reax add Reip,Reip,3 committ mov %eax,[%ebp+0×10] //load n <dp n="d33"/> add R7,Rebp,0×10 ld Reax,[R7] add Reip,Reip,3 commit lea %ecx,[%eax-1] //decrement n sub Recx,Reax,1 add Reip,Reip,3 commit mov [%ebp+0×10],%ecx //store(n-1) add R9,Rebp,0×10 st [R9],Recx add Reip,Reip,3 commit and %eax,%eax //test n andcc R11,Reax,Reax add Reip,Reip,3 commit jg .-0×1b //branch ″n>0″ add Rseq,Reip,Length (jg) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit ig mainloop,mainloop Host Instruction key: selcc=Select one of the source registers and copy its contents to the destination register based on the condition codes.
Detect and eliminate redundant address calculations.The example shows the code after eliminating the redundant operations. mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c ld Recx,[R0] add Reip,Reip,3 commit mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 ld Reax,[R2] add Reip,Reip,3 commit mov [%eax],%ecx //store c into[s] st [Reax],Recx add Reip,Reip,2 committ add %eax,#4 //increment s by 4 addcc Reax,Reax,4 add Reip,Reip,5 commit mov [%ebp+0×8],%eax //store(s+4) st [R2],Reax add Reip,Reip,3 commit mov %eax,[%ebp+0×10] //load n add R7,Rebp,0×10 ld Reax,[R7] add Reip,Reip,3 commit lea %ecx,[%eax-1] //decrement n sub Recx,Reax,1 add Reip,Reip,3 commit mov [%ebp+0×10],%ecx //store (n-1) st [R7],Recx add Reip,Reip,3 commit and %eax,%eax //test n andcc R11,Reax,Reax add Reip,Reip,3 commit <dp n="d35"/> jg .-0×1b //branch ″n>0″ add Rseq,Reip,Length(jg) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit jg mainloop,mainloop
Assume that target exceptions will not occur within the translation so delay updating eip and target state. mov %ecx,[%ebp+0×c] //load c add R0,Rebp,0×c ld Recx,[R0] mov %eax,[%ebp+0×8] //load s add R2,Rebp,0×8 ld Reax,[R2] mov [%eax],%ecx //store c into [s] st [Reax],Recx add %eax,#4 //increment a by 4 add Reax,Reax,4 mov [%ebp+0×8],%eax //store(s+4) <dp n="d36"/> st [R2],Reax mov %eax,[%ebp+0×10] //load n add R7,Rebp,0×10 ld Reax,[R7] lea %ecx,[%eax-1] //decrement n sub Recx,Reax,1 mov [%ebp+0×10],%ecx //store (n-1) st [R7],Recx and %eax,%eax //test n andcc R11,Reax,Reax jg .-0×1b //branch″n>0″ add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit jg mainloop,mainloop
In summary: add R0,Rebp,0×c ld Recx,[R0] add R2,Rebp,0×8 ld Reax,[R2] st [Reax],Recx add Reax,Reax,4 st [R2],Reax add R7,Rebp,0×10 ld Reax,[R7] //Live out sub Recx,Reax,1 //Live out st [R7],Recx andcc R11,Reax,Reax add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit jg mainloop,mainloop The comment ″Live Out″refers to the need to actually maintain Reax and Recx correctly prior to the commit.Otherwise further optimization might be possible. ==================================
Renaming to reduce register resource dependencies.This will allow subsequent scheduling to be more effective.From this point on,the original target X86 code is omitted as the relationship between individual target X86 instructions and host instructions becomes increasingly blurred. add R0,Rebp,0×c ld R1,[R0] add R2,Rebp,0×8 ld R3,[R2] st [R3],R1 add R4,R3,4 st [R2],R4 add R7,Rebp,0×10 ld Reax,[R7] //Live out sub Recx,Reax,1 //Live out st [R7],Recx andcc R11,Reax,Reax <dp n="d38"/> add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) selcc Reip,Rseq,Rtarg commit jg mainloop,mainloop
After the scheduling process which organizes the primitive host operat ions as multiple operations that can execute in the parallel on the host VLIW hardware.Each line shows the parallel operations that the VLIW machine executes,and the″&″indicates the parallelism. add R2,Rebp,0×8 & add R0,Rebp,0×c nop & add R7,Rebp,0×10 ld R3,[R2] & add Raeq,Reip,Length(block) ld R1,[R0] & add R4,R3,4 st [R3],R1 & ldc Rtarg,EIP(target) ld Reax,[R7] & nop st [R2],R4 & sub Recx,Reax,1 st [R7],Recx & andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg & jg mainloop,mainloop & commit Host Instruction key: nop=no operation
Resolve host branch targets and chain stored translations add R2,Rebp,0×8 & add R0,Rebp,0×c nop & add R7,Rebp,0×10 ld R3,[R2] & add Rseq,Reip,Length(block) ld R1,[R0] & add R4,R3,4 st [R3],R1 & ldc Rtarg,EIP(target) ld Reax,[R7] & nop st [R2],R4 & sub Recx,Reax,1 st [R7],Recx & andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg & jg Sequential,Target & commit
Advanced Optimizations,Backward Code Motion: This and subsequent examples start with the code ptior to scheduling. This optimization first depends on detecting that the code is a loop. Then invariant operations can be moved out of the loop body and executed once before entering the loop body. entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) Loop: ld R1,[R0] ld R3,[R2] st [R3],R1 add R4,R3,4 st [R2],R4 ld Reax,[R7] sub Recx,Reax,1 st [R7],Recx andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg commit jg mainloop,Loop
Schedule the loop body after backward code motion.For example purposes,only the code in the loop body is shown scheduled Entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) Loop: ld R3,[R2] & nop ld R1,[R0] & add R4,R3,4 st [R3],R1 & nop ld Reax,[R7] & nop st [R2],R4 & sub Recx,Reax,1 st [R7],Recx & andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg & jg Sequential,Loop & commit Host Instruction key: ldc=load a 32-bit constant
After Backward Code Motion: Target: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) Loop: ld R1,[R0] ld R3,[R2] st [R3],R1 add R4,R3,4 st [R2],R4 ld Reax,[R7] //Live out sub Recx,Reax,1 //Live out <dp n="d41"/> st [R7],Recx andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg commit jg mainloop,Loop ==================================== Register Allocation: This shows the use of register alias detection hardware of the morph host that allows variables to be safely moved from memory into registers.The starting point is the code after ″backward code moion″.This shows the optimization that can eliminate loads. First the loads are performed.The address is protected by tha alias hardware,such that should a store to the address occur,an″alias″ exception is raised.The loads in the loop body are then replaced with copies.After the main body of the loop,the alias hardware is freed. Entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) ld Rc,[R0] ;First do the load of the variable from memory prot [R0],Alias1 Then protect the memory location from stores ld Rs,[R2] prot [R2],Alias2 ld Rn,[R7] prot [R7],Alias3 Loop: copy R1,Rc copy R3,Rs st [R3],R1 add R4,Rs,4 copy Rs,R4 st [R2],Rs,NoAliasCheck copy Reax,Rn //Live out sub Recx,Reax,1 //Live out copy Rn,Recx st [R7],Rn,noAliasCheck andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg commit jg Epilog,Loop Epilog: FA Alias1 Free the alias detection hardware FA Alias2 Free the alias detection hardware FA Alias3 Free the alias detection hardware j Sequential Host Instruction key: protect=protect address from loads FA=free alias copy=copy j=jump
Copy Propagation: After using the alias hardware to turn loads within the loop body into copies,copy propagation allows the elimination of some copies. Entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) ld Rc,[R0] prot [R0],Alias1 ld Rs,[R2] prot [R2],Alias2 ld Recx,[R7] prot [R7],Alias3 Loop: st [Rs],Rc add Rs,Rs,4 st [R2],Rs,NoAliasCheck copy Reax,Recx //Live out sub Recx,Reax,1 //Live out st [R7],Recx,NoAliasCheck andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg commit <dp n="d43"/> jg Epilog,Loop Epilog: FA Alias1 FA Alias2 FA Alias3 j Sequential
Example Illustrating scheduling of the loop body only. Entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Raip,Length(block) ldc Rtarg,EIP(target) ld Rc,[R0] prot [R0],Alias1 ld Rs,[R2] prot [R2],Alias2 ld Recx,[R7] prot [R7],Alias3 Loop: st [Rs],Rc, & add Rs,Rs,4 & copy Reax,Recx st [R2],Rs,NAC & sub Recx,Reax,1 st [R7],Recx,NAC & andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg & jg Epilog,Loop & commit Epilog: FA Alias1 FA Alias2 FA Alias3 j Sequential Host Instruction key: NAC= No Alias Check
Store Elimination by use of the alias hardware. Entry: add R0,Rebp,0×c add R2,Rebp,0×8 add R7,Rebp,0×10 add Rseq,Reip,Length(block) ldc Rtarg,EIP(target) ld Rc,[Ro] prot [R0],Alias1 ;protect the address from loads and stores ld Rs,[R2] prot [R2],Alias2 ;protect the address from loads and stores ld Recx,[R7] prot [R7],Alias3 ;protect the address from loads and stores Loop: st [Rs],Rc, & add Rs,Rs,4 & copy Reax,Recx sub Recx,Reax,1 & andcc R11,Reax,Reax selcc Reip,Rseq,Rtarg & jg Epilog,Loop & commit Epilog: FA Alias1 FA Alias2 FA Alias3 st [R2],Rs ;writeback the final value of Rs st [R7],Recx ;writeback the final value of Recx j Sequential
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN97182374A CN1107909C (zh) | 1997-07-11 | 1997-07-11 | 带临时保存目标处理器状态的装置的主处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN97182374A CN1107909C (zh) | 1997-07-11 | 1997-07-11 | 带临时保存目标处理器状态的装置的主处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1268230A CN1268230A (zh) | 2000-09-27 |
CN1107909C true CN1107909C (zh) | 2003-05-07 |
Family
ID=5178431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97182374A Expired - Lifetime CN1107909C (zh) | 1997-07-11 | 1997-07-11 | 带临时保存目标处理器状态的装置的主处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1107909C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405547B2 (en) * | 2011-04-07 | 2016-08-02 | Intel Corporation | Register allocation for rotation based alias protection register |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481685A (en) * | 1991-07-08 | 1996-01-02 | Seiko Epson Corporation | RISC microprocessor architecture implementing fast trap and exception state |
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
US5528755A (en) * | 1992-12-22 | 1996-06-18 | International Business Machines Corporation | Invalid data detection, recording and nullification |
-
1997
- 1997-07-11 CN CN97182374A patent/CN1107909C/zh not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
US5481685A (en) * | 1991-07-08 | 1996-01-02 | Seiko Epson Corporation | RISC microprocessor architecture implementing fast trap and exception state |
US5528755A (en) * | 1992-12-22 | 1996-06-18 | International Business Machines Corporation | Invalid data detection, recording and nullification |
Also Published As
Publication number | Publication date |
---|---|
CN1268230A (zh) | 2000-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1161691C (zh) | 检测被寻址单元预测失败的存储控制器 | |
CN1141647C (zh) | 赋予高级微处理器内存储器数据别名的方法和装置 | |
CN1103079C (zh) | 用于高级微处理器的门控存储缓冲器 | |
US6031992A (en) | Combining hardware and software to provide an improved microprocessor | |
US7840776B1 (en) | Translated memory protection apparatus for an advanced microprocessor | |
KR100443759B1 (ko) | 개선된 마이크로프로세서 | |
KR100421687B1 (ko) | 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치 | |
KR100522468B1 (ko) | 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서 | |
CN1107909C (zh) | 带临时保存目标处理器状态的装置的主处理器 | |
CN1163826C (zh) | 改进的微处理器 | |
CN1286772A (zh) | 用于高级微处理器的翻译存储器保护装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: TRANSMITAR CO., LTD Free format text: FORMER OWNER: TRANSMITAR CO., LTD. Effective date: 20091106 Owner name: KNOWLEDGE VENTURE CAPITAL ROMPLAST-14 O., LTD Free format text: FORMER OWNER: TRANSMITAR CO., LTD Effective date: 20091106 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20091106 Address after: Nevada Patentee after: TRANSMETA Corp. Address before: California, USA Patentee before: Full simeida LLC Effective date of registration: 20091106 Address after: California, USA Patentee after: Full simeida LLC Address before: California, USA Patentee before: Transmeta Corp. |
|
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20030507 |