US 11,768,946 B2
Low memory overhead heap management for memory tagging
David M. Durham, Beaverton, OR (US); and Ramya Jayaram Masti, Hillsboro, OR (US)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Intel Corporation, Santa Clara, CA (US)
Filed on Dec. 20, 2019, as Appl. No. 16/723,871.
Claims priority of provisional application 62/868,884, filed on Jun. 29, 2019.
Prior Publication US 2020/0125502 A1, Apr. 23, 2020
Int. Cl. G06F 12/14 (2006.01); G06F 21/60 (2013.01); G06F 12/0897 (2016.01); G06F 9/30 (2018.01); G06F 9/48 (2006.01); G06F 21/72 (2013.01); H04L 9/06 (2006.01); G06F 12/06 (2006.01); G06F 12/0875 (2016.01); G06F 21/79 (2013.01); G06F 9/455 (2018.01); G06F 12/0811 (2016.01); G06F 21/12 (2013.01); H04L 9/08 (2006.01); G06F 9/32 (2018.01); G06F 9/50 (2006.01); G06F 12/02 (2006.01); H04L 9/14 (2006.01); G06F 21/62 (2013.01)
CPC G06F 21/602 (2013.01) [G06F 9/30043 (2013.01); G06F 9/30101 (2013.01); G06F 9/30178 (2013.01); G06F 9/321 (2013.01); G06F 9/45558 (2013.01); G06F 9/48 (2013.01); G06F 9/5016 (2013.01); G06F 12/0207 (2013.01); G06F 12/0646 (2013.01); G06F 12/0811 (2013.01); G06F 12/0875 (2013.01); G06F 12/0897 (2013.01); G06F 12/1408 (2013.01); G06F 12/1458 (2013.01); G06F 12/1466 (2013.01); G06F 21/12 (2013.01); G06F 21/6227 (2013.01); G06F 21/72 (2013.01); G06F 21/79 (2013.01); H04L 9/0637 (2013.01); H04L 9/0822 (2013.01); H04L 9/0861 (2013.01); H04L 9/0869 (2013.01); H04L 9/0894 (2013.01); H04L 9/14 (2013.01); G06F 2009/45587 (2013.01); G06F 2212/1052 (2013.01); H04L 2209/125 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A processor comprising:
a decoder to decode a first instruction requesting a memory heap operation; and
circuitry to implement a heap manager, the heap manager to:
responsive to the first instruction requesting the memory heap operation:
defragment multiple data blocks to form a data block of a memory heap;
combine tag histories of the multiple data blocks to form a tag history for the data block, wherein the tag histories comprise a first tag history comprising at least one tag previously assigned to a first data block of the multiple data blocks and a second tag history comprising at least one tag previously assigned to a second data block of the multiple data blocks;
assign a tag to the data block, wherein assigning the tag comprises verification that the tag does not match any tags of the tag history for the data block; and
provide the assigned tag and a reference to a location of the data block.