IP Library › Granted Patent US 9,563,425
Granted Patent B2
US 9,563,425 · App. 13/687,918 · Granted Feb 7, 2017

Instruction and logic to provide pushing buffer copy and store functionality

Inventors: Christopher J. Hughes (Santa Clara, CA); Changkyu Kim (San Jose, CA); Daehyun Kim (San Jose, CA); Victor W. Lee (Santa Clara, CA); Jong Soo Park (Santa Clara, CA)
Assignee: Intel Corporation
G06F9/30036G06F9/30043G06F9/30185G06F9/3834G06F9/3851G06F12/0815G06F9/544Y02B60/1225
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,563,425
App. No.
13/687,918
Granted
Feb 7, 2017
Kind
B2
Abstract

Instructions and logic provide pushing buffer copy and store functionality. Some embodiments include a first hardware thread or processing core, and a second hardware thread or processing core, a cache to store cache coherent data in a cache line for a shared memory address accessible by the second hardware thread or processing core. Responsive to decoding an instruction specifying a source data operand, said shared memory address as a destination operand, and one or more owner of said shared memory address, one or more execution units copy data from the source data operand to the cache coherent data in the cache line for said shared memory address accessible by said second hardware thread or processing core in the cache when said one or more owner includes said second hardware thread or processing core.

Claims (50)

1. A processor comprising:

a first hardware thread and a second hardware thread;

a cache to store cache coherent data in a cache line for a shared memory address accessible by said second hardware thread;

a decode stage to decode a first instruction for execution by said first hardware thread, the first instruction specifying a source vector data operand, said shared memory address as a destination operand, and one or more owners of said shared memory address; and

one or more execution units, responsive to the decoded first instruction, to:

copy data from the source vector data operand to the cache coherent data in the cache line for said shared memory address accessible by said second hardware thread in the cache when said one or more owners includes said second hardware thread, wherein corresponding vector elements from the vector source data operand are copied to adjacent sequential element locations starting at the shared memory address until the most significant vector destination element location is filled.

2. The processor of claim 1 , wherein the first instruction explicitly specifies said shared memory address as a destination operand.

3. The processor of claim 1 , wherein the first instruction implicitly specifies said shared memory address as a destination operand.

4. The processor of claim 3 , wherein the first instruction implicitly specifies a destination operand as being in the registers ES:[(E)DI] or in the register [RDI].

5. The processor of claim 1 , wherein the first instruction explicitly specifies said source data operand.

6. The processor of claim 5 , wherein the first instruction explicitly specifies said source data operand as a vector register.

7. The processor of claim 6 , wherein the first instruction is a pushing buffer store instruction.

8. The processor of claim 5 , wherein the first instruction explicitly specifies said source data operand as a cacheable memory address.

9. The processor of claim 1 , wherein the first instruction implicitly specifies said source data operand.

10. The processor of claim 9 , wherein the first instruction is a pushing buffer copy instruction.

11. The processor of claim 9 , wherein the first instruction implicitly specifies said source data operand as being in the registers DS:[(E)SI] or in the register [RSI].

12. The processor of claim 1 , wherein the first instruction is a pushing buffer copy instruction.

13. A method comprising:

executing, in a multithreaded processor, a first hardware thread and a second hardware thread;

storing cache coherent data, in a cache line of a cache, for a shared memory address accessible by said second hardware thread;

decoding a first instruction for execution by said first hardware thread, the first instruction specifying a source vector data operand, said shared memory address as a destination operand, and one or more owners of said shared memory address; and

responsive to decoding the first instruction, copying data from the source vector data operand to the cache coherent data in the cache line for said shared memory address accessible by said second hardware thread in the cache when said one or more owners includes said second hardware thread, wherein corresponding vector elements from the vector source data operand are copied to adjacent sequential element locations starting at the shared memory address until the most significant vector destination element location is filled.

14. The method of claim 13 , wherein the first instruction is also specifying a cache level for the destination operand.

15. The method of claim 13 , wherein the first instruction explicitly specifies said shared memory address as a destination operand.

16. The method of claim 13 , wherein the first instruction implicitly specifies a destination operand as being in the registers ES:[(E)DI] or in the register [RDI].

17. The method of claim 13 , wherein the first instruction explicitly specifies said source data operand as a vector register.

18. The method of claim 13 , wherein said source data operand is a same shared memory address as the destination operand.

19. The method of claim 13 , wherein the first instruction implicitly specifies said source data operand as being in the registers DS:[(E)SI] or in the register [RSI].

20. A machine-readable storage medium to record functional descriptive material including a first executable instruction, which if executed on behalf of a first hardware thread of a machine causes the machine to:

copy data on behalf of the first hardware thread from a source vector data operand specified by said first executable instruction to cache coherent data in a cache line for a shared memory address accessible by a second hardware thread whenever one or more owners specified by said first executable instruction includes said second hardware thread, wherein corresponding vector elements from the vector source data operand are copied to adjacent sequential element locations starting at the shared memory address until the most significant vector destination element location is filled.

21. The machine-readable storage medium of claim 20 , wherein the functional descriptive material includes a second executable instruction, which if executed on behalf of the second hardware thread of a machine causes the machine to:

subsequently access the copied data from cache coherent data in the cache line for the shared memory address on behalf of the second hardware thread without incurring a cache miss whenever the one or more owner specified by said first executable instruction includes said second hardware thread.

22. The machine-readable storage medium of claim 21 , wherein the first executable instruction specifies a cache level of the cache line for the shared memory address in a cache hierarchy of the one or more owner specified by said first executable instruction.

23. The machine-readable storage medium of claim 22 , wherein the first executable instruction explicitly specifies said shared memory address as a destination operand.

24. The machine-readable storage medium of claim 23 , wherein said source data operand is specified as a same shared memory address as the destination operand.

25. The machine-readable storage medium of claim 23 , wherein said source data operand is specified as a different shared memory address from the destination operand.

26. The machine-readable storage medium of claim 22 , wherein the first executable instruction explicitly specifies said source data operand as a vector register.

27. A processing system comprising:

a memory; and

a plurality of processors including a first processor core and a second processor core each processor comprising:

a cache to store cache coherent data in a cache line for a shared memory address accessible by said second processor core;

a decode stage to decode a first instruction for execution by said first hardware thread, the first instruction specifying a source vector data operand, said shared memory address as a destination operand, and one or more owners of said shared memory address; and

one or more execution units, responsive to the decoded first instruction, to:

copy data from the source vector data operand to the cache coherent data in the cache line for said shared memory address accessible by said second hardware thread in the cache when said one or more owners includes said second hardware thread, wherein corresponding vector elements from the vector source data operand are copied to adjacent sequential element locations starting at the shared memory address until the most significant vector destination element location is filled.

28. The processing system of claim 27 , wherein the first instruction is also specifying a cache level for the destination operand.

29. The processing system of claim 28 , wherein the first instruction explicitly specifies said source data operand as a vector register.

30. The processing system of claim 28 , wherein said source data operand is specified as a same shared memory address as the destination operand.

31. The processing system of claim 28 , wherein said source data operand is specified as a different shared memory address from the destination operand.

32. The processing system of claim 28 , wherein said one or more owner of said shared memory address is specified as one of the group consisting of: self, all shared, and a physical core ID.

33. The processing system of claim 28 , wherein said one or more owner of said shared memory address is specified as a second extended Advanced Programmable Interrupt Controller (x2APIC) identifier (ID) of a logical processor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2013
From: HUGHES, CHRISTOPHER J.; KIM, DAEHYUN; LEE, VICTOR W.; PARK, JONG SOO; KIM, CHANGKYU
To: INTEL CORPORATION
Reel/Frame 029771/0987 →
Continuity (1)
Related Publication 20140149718A1 · May 29, 2014