CHA KUIN TAITEIT US009740631B2UNA MARI A TARATION DU TRA TUTTAR (12 ) United States Patent ( 10 ) Patent No. : US 9 , 740 ,631 B2 Shiu ( 45 ) Date of Patent : Aug. 22 , 2017

(54 ) HARDWARE - ASSISTED MEMORY (58 ) Field of Classification Search COMPRESSION MANAGEMENT USING None FILTER AND SYSTEM MMU See application file for complete search history. ( 71 ) Applicant: GOOGLE INC ., Mountain View , CA (56 ) References Cited (US ) U . S . PATENT DOCUMENTS (72 ) Inventor : Shinye Shiu , Mountain View , CA (US ) 5 ,544 ,349 A 8/ 1996 Berry et al. 5 ,699 ,539 A 12 / 1997 Garber et al. ( 73 ) Assignee : Google Inc. , Mountain View , CA (US ) ( Continued ) ( * ) Notice : Subject to any disclaimer , the term of this patent is extended or adjusted under 35 OTHER PUBLICATIONS U .S .C . 154 (b ) by 40 days. International Search Report and Written Opinion for corresponding application No. PCT /US2015 /054491 dated Dec . 4 , 2015 . (21 ) Appl. No. : 14 /877 ,484 (Continued ) ( 22 ) Filed : Oct. 7 , 2015 Primary Examiner — Kevin Verbrugge (65 ) Prior Publication (57 ) ABSTRACT US 2016 / 0098356 A1 Apr. 7 , 2016 Provided are methods and systems for managing memory Related U . S . Application Data using a hardware- based page filter designed to distinguish between active and inactive pages (“ hot” and “ cold ” pages , (60 ) Provisional application No. 62/ 060 ,949 , filed on Oct . respectively ) so that inactive pages can be compressed prior 7 , 2014 . to the occurrence of a . The methods and systems are designed to achieve , among other things , lower cost , (51 ) Int. Ci. longer battery life , and faster user response . Whereas exist GOOF 12 / 10 ( 2016 . 01 ) ing approaches for are based on pixel G06F 12 / 1009 ( 2016 .01 ) or frame buffer compression , the methods and systems (Continued ) provided focus on the CPU 's program (e .g ., generic data (52 ) U .S . CI. structure ). Focusing on hardware - accelerated memory com ??? .. G06F 12 / 1009 ( 2013 .01 ) ; G06F 3 / 061 pression to offload CPU translates higher power efficiency ( 2013 .01 ) ; G06F 3 /0604 ( 2013 . 01 ) ; G06F ( e . g ., ASIC is approximately 100x lower power than CPU ) 370638 (2013 .01 ); G06F 3/ 0653 ( 2013 .01 ); and higher performance ( e . g . , ASIC is approximately 10x G06F 3 / 0656 ( 2013 . 01 ) ; G06F 3 /0673 faster than CPU ) , and also allows for hardware - assisted ( 2013 . 01 ) ; G06F 3 / 0683 (2013 .01 ) ; G06F memory management to offload OS/ kernel , which signifi 12 / 0891 ( 2013 .01 ) ; G06F 12 /0897 (2013 .01 ) ; G06F 12 / 1027 (2013 .01 ) ; cantly increases response time. (Continued ) 20 Claims, 7 Drawing Sheets

wwwwwwwwwwwwwwwwww 100 Pigs Filier ooooooooooo (110 )

System MMU wwwwww (130 ) wwwwwwwwwwww Waawwwwwwwwwwwwww WWWWWWWWWWWWWW

wwwwwwwwwwww w wwwwwwww . . WOZCHI Fabric LPDDR3 00 (160 ) (140 ) ( 150 ) Coccocco wowowowoworococooocorocco 2000

vwwwwwwwwwwwwwwwwwwwww W102 RAM LPDORI ZRAN ( 1801 ( 170 ) US 9 , 740 ,631 B2 Page 2

(51 ) Int . CI. 2002/ 0184579 A1* 12 /2002 Alvarez , II ...... GO6F 9/ 4411 GO6F 3 / 06 ( 2006 .01 ) 714 / 719 2003 /0061457 A1* 3 /2003 Geiger G06F 12 / 08 GOOF 12 /0891 ( 2016 .01 ) 711 / 165 G06F 12 / 12 ( 2016 . 01) 2003/ 0221072 Al 11/ 2003 Azevedo et al . G06F 12 /0897 ( 2016 . 01 ) 2006 /0136671 A1 6 / 2006 Balakrishnan et al. G06F 12 / 1027 ( 2016 . 01 ) 2010 /0281216 A111/ 2010 Patel et al. G06F 12 /0802 ( 2016 .01 ) 2011 / 0289277 AL 11 /2011 Takada et al . 2013/ 0073798 A1 * 3 /2013 Kang ...... GO6F 12 /0246 G06F 12 /0864 ( 2016 . 01 ) 711/ 103 G06F 12 / 121 ( 2016 .01 ) 2014 / 0075118 A13 / 2014 Biswas et al . (52 ) U . S . CI. 2014 /0075137 A1 * 3 /2014 Shin GOOF 12 /08 CPC ...... GO6F 12 / 12 ( 2013 . 01 ) ; GOOF 12 /0802 711 / 159 2014 / 0089600 A1 3 / 2014 Biswas et al . ( 2013 .01 ) ; G06F 12 /0864 (2013 .01 ) ; GOOF 2014 / 0201456 A1 7 / 2014 Gibson et al . 12 / 121 (2013 .01 ) ; G06F 2212 / 1016 (2013 . 01 ) ; 2014 / 0281235 A1 9 / 2014 Liu G06F 2212 / 1044 ( 2013 . 01 ) ; GOOF 2212 / 401 2015 /0178214 A1 6 / 2015 Alameldeen et al . (2013 .01 ) ; GOOF 2212/ 502 ( 2013 .01 ) ; G06F 2015 /0186282 Al 7 / 2015 Rahme et al . 2212 /601 ( 2013 .01 ) ; G06F 2212 /604 2016 / 0098193 Al 4 / 2016 Shiu (2013 . 01 ) ; G06F 2212 /65 ( 2013 .01 ) ; GOOF 2016 /0098353 AL 4 / 2016 Shiu 2212 /68 ( 2013 .01 ) ; GOOF 2212 /683 ( 2013 .01 ) ; 2016 /0291891 Al 10 /2016 Cheriton G06F 2212 /69 ( 2013 .01 ) ; YO2B 60 /1225 (2013 .01 ) OTHER PUBLICATIONS International Search Report & Written Opinion , dated Dec . 18 , (56 ) References Cited 2015, in related application No . PCT/ US2015 /054496 . International Search Report & Written Opinion , dated Nov. 19 , U .S . PATENT DOCUMENTS 2015 , in related application No. PCT/ US2015 /054499 . 5 , 978 , 888 A 11/ 1999 Arimilli et al . Tian et al. , “ Last -Level Cache Deduplication ,” Supercomputing 5 , 991, 847 A 11/ 1999 Ballard et al. ACM , NY NY ( Jun . 10 , 2014 ) , pp . 53 -62 . 6 , 434, 669 B1 8 / 2002 Arimilli et al. “ Non - Final Office Action ” , U . S . Appl. No. 14 /877 ,523 , Feb . 2 , 6 , 532, 520 B1 3 / 2003 Dean et al. 2017 , 6 pages . 6 , 556, 952 B1 4 /2003 Magro “ Non -Final Office Action ” , U . S . Appl. No. 14 /877 ,629 , Feb . 9 , 6 , 877, 081 B2 4 / 2005 Herger et al. 2017 , 8 pages . 7 , 000 , 074 B2 2 / 2006 Wootton “ International Preliminary Report on Patentability ” , Application 7 , 185 , 155 B2 2 / 2007 Sechrest et al . No. PCT/ US2015 /054499 , dated Apr. 20 , 2017, 10 pages . 7 ,383 ,399 B2 6 / 2008 Vogt “ International Preliminary Report on Patentability ” , Application 7 , 844, 793 B2 11/ 2010 Herger et al. 8 ,375 ,191 B2 2 / 2013 Kim No. PCT/ US2015 /054496 , dated Apr. 20 , 2017 , 7 pages. 8 , 458 ,404 B1 . 6 /2013 Delgross et al. “ International Preliminary Report on Patentability ” , Application 8 , 484 , 405 B27 / 2013 Mashtizadeh et al. No . PCT/ US2015 /054491 , dated Apr. 20 , 2017 , 8 pages . 8, 516 , 005 B2 . 8 / 2013 Ergan et al. “ Notice of Allowance” , U . S . Appl . No. 14 / 877 ,523 , dated May 30 , 9 , 311 , 250 B2 4 / 2016 Van De Ven et al. 2017 , 4 pages . 2002 /0073298 AL 6 /2002 Geiger et al . 2002 /0147893 A1 10 / 2002 Roy et al . * cited by examiner U . S . Patent Aug . 22, 2017 Sheet 1 of 7 US 9 ,740 , 631 B2

004 7347 Wwwwwwwwwwwwwwwww HOC0007 oso yüvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv LPDDR3ZRAM (170) Wwwwwwwwwww mi100000woowooooooooor0000000000000029999999999999999

W0000000000 *.cowow4c9690954coo4coucovesot46954covecoscowocco 4444444444444 ww77777777777 FIG.1 0 PrijeFilter (110) WANAWAKUMUMKIKKOM LLC (120) FREE (ou 77777777777777 wwwwwwwww MUNIKAS 001690000000000 70

9999999 Mago 1241AMAMnrann w wwwasás (130) WIO2Cu (160) WVAZOM (000) 06072799999999999999999999999999960 innnnnnnnnnnnnnnnnnnnn niiinnnnna ???????? ??????????????????????????????????????????????????????? wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww U . S . Patent Aug . 22 , 2017 Sheet 2 of 7 US 9 ,740 , 631 B2

09

. V

1 WA . 1KB 4KB sueds www Mona wwwwwwwwwwwwwwwwwyouivovV00000OOOOOO Startadr 135:01 0x300 N771wwwwww464465AASIU wwyucum M ww 1KB Sizet W 90900009999999999 Www KOKKOKKOKOOOO000856 Ndz 135:121

9 W FIG.2 vonleluojupuolosaldwoOUIM8G21Dedvowejwew StartAdri 10:02) 0x0 1999poon WWW WwwwwwwwwwwwwguidoOSODASS 0825 low 9XC wwwwwwwwwwwwwww A 999wwwwwwwwwwwwwwwwwwwwwwwwwwwxxiiiiiii www990 Wx000000SWWWWWWWWWwwwwwwwwwwwwwwwwwwww110000001697 000000000000000www ONdz

anann Nda Itkisel y wwwwwwwwww611H211Www wwwwwwwwwwwwwwwwwwwwwwwwwww70000 200 U . S . Patent Aug. 22, 2017 Sheet 3 of 7 US 9 ,740 ,631 B2

300 74

. Wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvwodood0000000000 canine 305 SUWIB0 . EU Iual668 Junoo si * $ UWI bolsa

VODOVOOOOOOOOOOOOOOO

adeo jene Sajad APOEL abied

wwwwwwwwwwwwww w wwww MNR

wwwmmmmm – ?? F } } } ?? ??? ???? ?? ? ?? ???? ??????? 2000 Page From Caches www

mm

WWWWW wwwwwwwwwwwwwwwww Wwwwwwwwwwwwwwwwwww System MMU Claims The Corresponding Plyysical Page annen . 320 Number From The Caches Wwwwwwwwwwwww Www

FIG . 3 U . S . Patent Aug . 22, 2017 Sheet 4 of 7 US 9 ,740 , 631 B2

qoDomoo DODIDDOT OIIOOOOOOOOO . .L . WAUUU UWUWAWYW4UWMAN N ' M ronin 07

WWW mm WW6998 W 0

WIRV.XDoO690QRORTOROOK 0.2 XXXXXX*WWWWWININWwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwww wwwwwwwwwwwww mossexxxwwwwwwwwwwwwwwwwwwwwwwwwww! ldulAnugepeau Primiiiiiiiiiiwwwwwwww AllocateEntryinFTE WithPTEEntryInAllocate ZPN ReadEntryInPTE wwwwwwwwwww YININWIRUMAYYALAR'N 0.001000000,07 wwwww wi ooooooooooooooooooooooooooooooooo WWWWWWWWWWWWW5959459WWWWWWWWWww winowwwwwwwwwwww9999999999999999999999999999wwwwwwwww (210)AnugeigelabedIolusuabeuew nna*.47ANYW

2.0 Y Oqt2020JOLUBWOeup FIG.4 .7nYilYn122017 wwwwwwwwcowocowow00900099007097097902009w wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwww wwwwwwwwwwwwwwwwwwwwwiiinnnnnnnnnnnnnnnnnnn Yüm WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwww W 00DonnainynnYRYNOoox0.Wot

i :grioCOO66Cocowwwwwww010cnonoon 1300*WWWWW $ogyobedpassados {}??- i wwwwwwwwwwwwwwwwww WohpaddewunNASINDA ped 10 SSW11ndosiaubur wwwwwwwwwwwwwwwwiin 181Ndo wvu 7777777777777444112277227WW goodlooOwnaway w WGS-853161119mmmmmmmmm: w undo Y PY wwwwwwwwwwwwwwwwwwwwwww viviiiiiiiii {?? irim viwi

.mnnnnnnnnnYYYYYNAWWARYAR9* . 000000000000000000000 w Wwwwww Hvisdu

PHOWRP90DD009000YUVANVAK0. WWW. nigen . DODTO . TODO DOUCOLOUIDOOI CADOU

Ant U . S . Patent Aug. 22 , 2017 Sheet 5 of 7 US 9 ,740 , 631 B2

21:2 2 ztr WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYTYYYYYYYYYYYYYYYY W gostima Page Filter Detaois Inactive Page

Mwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxx sawwwwwwww

M inom 510 Wwwwwww Wasis OWN poadhulusul al Ndd wong Salgoro

www ??????????????????????????????????????????????????????????????????????? Xc6uuuuuuu

WWWWWWWWWWWWWWW w 515 Wo aujoug 49431 Nag WOL OUROM KJOUSN

w wwwwwwwwww D DONWINDOW

* WWWWWWWWWWWW WWWWWWWWWWWWWWW 520 Wiwwwwww Raise for Kernel MMU TO Allocate The ZPN WWW ! ! ! ! ! ! 77777 772799777777*

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww SZS System MMU Updates on -Chip Victim Ils With ZPN wwwUR XXXXXXX

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W WW good OS OMA Engine Writes KPN To Compressed Memory is. wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww w W

FIG . 5 U . S . Patent Aug . 22, 2017 Sheet 6 of 7 US 9 ,740 , 631 B2

72592pinste

49999VYYYYYYYYYYYYYYYYYYYY999999YYYYYY99999YYYYYEVV9999999999999999 Determine TLB Miss Based on User wwwwwwwwwww WWWWWWWWWW

anteria 010 Initate Prefetch

* 995 System MMU Victim TL8 Translates VPN TO ZPN And Raises Interrupt For Kernel MMU TO Handle Page Fault MWCLAUKAIKKAA my

DMA Engine Fetches ZPN from Compressed Memory wimmy

????????????? LLLLILLE

WWWWWWWWW Kernel MMU Updates Process ' s Sage Table and Inserts OPN Into Working Memory wwwmmmm 600

??????????????? ???????????????????????????????????????????????????????????????????????? 630 DMA Engine Delivers Read Response To CPU And { " > < ?? \ rk?

FIG . 6 U . S . Patent Aug . 22 , 2017 Sheet 7 of 7 US 9 ,740 , 631 B2

.

-1W

Mm m mwwwwwwwwwwwwwwwwwwwwwwwww ?

1 ?.

r

122.- (POUNOUVENTNODISYS . .- PI -DDDD221 WWWWWWWWW2222*.222222 -.;

IELDSHOWS .*

*

BARTI .-

, - "wy (EL)SMSAHOKON - (2)SH38163

- dsandini€w( - 222222222222."*

2008.vos$02 .2 1444444444LLL 2003Ho$S33080 W!.'"

-

-. ( escond .' WW "* SW370NINODAXOKBN

'.

. 323 E P PORT *.1991 SHOVO

· www wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww . * * * wwwwwwwwwwwwww L'91

ETT

7.Www

. 11rrrrrrrr . . www

*

- .

w . rrrrrrrrr .ww V * * KOOL ' (Iz)MESASONLY!3d0 . ZELFNOLLVOnddy AHOKENEUSISSY w Vilvo (GEL) .www INCO30N38394 WYRON SUVAOHVH804BISAS INANSOWNWWNO$38dW00 DYNOV50. wwwwwwwwwwwwwwww!

.

.WW'a

. .'"nor 30DNI.NO . .' OZDABOWSKIS '.

.

.'

...... - - 111111111 1 11111111 * * * 444444

wwwwww W W * * * * * * * * * . ." ." . ". . . " " . ". " ." US 9 ,740 ,631 B2 HARDWARE -ASSISTED for the inactive page; and write the compressed COMPRESSION MANAGEMENT USING memory address for the inactive page to the compressed PAGE FILTER AND SYSTEM MMU memory . In another embodiment, the at least one processor in the The present application claims priority to U .S . Provisional 5 system for memory compression management is further Patent Application Ser. No . 62/ 060 ,949 , filed Oct. 7 , 2014 , caused to remove, from the page table , a corresponding page the entire disclosure of which is hereby incorporated by table entry for the inactive page . reference . In yet another embodiment, the at least one processor in the system for memory compression management is further BACKGROUND 10 caused to update the associative cache with the compressed memory address for the inactive page using a memory Existing approaches for memory compression typically management unit. focus on pixel/ reference frame memory compression , which In still another embodiment , the at least one processor in is often to GPU (graphics processor unit ) , ISP ( image signal the system for memory compression management is further processor ), video , and / or display streams. While such tech - 15 caused to raise an interrupt for a niques are able to achieve some bandwidth reduction , none to allocate an address in the compressed memory for the are directed to or capable of memory footprint reduction . inacinactive page . Yet another embodiment of the present disclosure relates SUMMARY to a method for memory compression management com 20 prising : using a hardware page filter to detect an inactive This Summary introduces a selection of concepts in a page in a space ; compressing the inactive simplified form in order to provide a basic understanding of page prior to a page fault; and providing the kernel of a some aspects of the present disclosure . This Summary is not corresponding with information about the an extensive overview of the disclosure , and is not intended compressed inactive page . to identify key or critical elements of the disclosure or to 25 In another embodiment, the method for memory com delineate the scope of the disclosure . This Summary merely pression management further comprises logging , in a page presents some of the concepts of the disclosure as a prelude table of the operating system , a starting of to the Detailed Description provided below . the compressed memory for each of the pages in the virtual The present disclosure generally relates to methods and memory space . systems for managing memory . More specifically , aspects of 30 In yet another embodiment, the method for memory the present disclosure relate to a hardware -based page filter compression management further comprises logging , in the designed to distinguish between active and inactive pages , page table, compression information for each of the pages in and compress the inactive pages before a page fault occurs . the virtual memory space . One embodiment of the present disclosure relates to a In still another embodiment, the method for memory method for memory compression management comprising : 35 compression management further comprises raising an inter using a page filter to determine that a page in a virtual rupt to update a page table entry in the kernel with the memory space is inactive ; removing working memory information about the compressed inactive page . address information for the inactive page from a page table in one or more other embodiments , the methods and of a corresponding operating system ; determining a location systems described herein may optionally include one or in working memory to allocate compression information for 40 more of the following additional features : the translation the inactive page ; allocating a compressed memory address lookaside buffer ( or associative cache ) is updated with the for the inactive page ; updating a translation lookaside buffer compressed memory address for the inactive page by a with the compressed memory address for the inactiveve page ;, memory management unit of the operating system ; the and writing the compressed memory address to the com translation lookaside buffer ( or associative cache ) is updated pressed memory . 45 with the compressed memory address for the inactive page In another embodiment, the method for memory com - to maintain translation information between virtual, com pression management further comprises removing a corre pressed , and working memories ; the page filter determines sponding page table entry for the inactive page from the that the page in the virtual memory space is inactive based page table of the corresponding operating system . on a reference count for the page falling below a threshold In another embodiment , the method for memory com - 50 count ; the page filter determines that the page in the virtual pression management further comprises raising an interrupt memory space is inactive based on a reference count for the for a memory management unit of the operating system to page falling below a threshold count during a predetermined allocate an address in the compressed memory for the period of time; and / or the interrupt is raised in response to inactive page . a capacity eviction or reference count saturation . Another embodiment of the present disclosure relates to a 55 Further scope of applicability of the present disclosure system for memory compression management, the system will become apparent from the Detailed Description given comprising a least one processor and a non - transitory com - below . However, it should be understood that the Detailed puter- readable medium coupled to the at least one processor Description and specific examples , while indicating pre having instructions stored thereon that , when executed by ferred embodiments , are given by way of illustration only , the at least one processor, causes the at least one processor 60 since various changes and modifications within the spirit and to : use a hardware page filter to determine that a page in a scope of the disclosure will become apparent to those skilled virtual memory space is inactive ; remove working memory in the art from this Detailed Description . address information for the inactive page from a correspond ing page table ; determine a location in working memory to BRIEF DESCRIPTION OF DRAWINGS allocate compression information for the inactive page ; 65 allocate a compressed memory address for the inactive page ; These and other objects , features, and characteristics of update an associative cache with the compressed memory the present disclosure will become more apparent to those US 9 , 740 ,631 B2 skilled in the art from a study of the following Detailed physical translations for billions of bytes ofmemory would Description in conjunction with the appended claims and be too great , the MMU divides RAM into pages, which are drawings, all ofwhich form a part of this specification . In the contiguous sections of memory of a set size that the MMU drawings: handles as single entities. Correspondingly , physical FIG . 1 is a block diagram illustrating an example system 5 memory can be viewed as an array of fixed -size slots called for hardware - assisted memory compression management page frames , each of which can contain a single virtual using a page filter and system memory management unit memory page . according to one or more embodiments described herein . To record where each virtual page of the address space is FIG . 2 is a block diagram illustrating an example main placed in physical memory , the operating system keeps a memory page table to which compression information has 10 per -process known as a page table (PT ) . The been added according to one or more embodiments primary role of the page table is to store address translations described herein . for each of the virtual pages of the address space , thereby FIG . 3 is a flowchart illustrating an example method for informing where in physical memory each page resides . To hardware - based page profiling using a page filter according translate a virtual address that a particular process generated , to one or more embodiments described herein . 15 it is necessary to first split it into two components : the virtual FIG . 4 is a block diagram illustrating example operations page number (VPN ), and the offset within the page . of a system memory management unit according to one or With the VPN it is possible to then index the page table more embodiments described herein . and determine which physical frame the virtual page resides FIG . 5 is a flowchart illustrating an example method for within . For example , using the page table it is possible to compressing memory using a page filter and system memory 20 determine the corresponding physical frame number (PFN ) management unit according to one or more embodiments (also sometimes called the physical page number or PPN ) described herein . for the virtual page . The virtual address can then be trans FIG . 6 is a flowchart illustrating an example method for lated by replacing the VPN with the PFN (or PPN ) . It should decompressing memory using a system memory manage - be understood that the offset is not translated ( it remains the ment unit according to one or more embodiments described 25 same ) because the offset simply indicates the desired byte herein . within the page . FIG . 7 is a block diagram illustrating an example com - A page fault is the sequence of events that occurs when a puting device arranged for hardware -assisted memory com program attempts to access ( e . g ., request ) data ( or code ) that pression management using a page filter and system memory is in its address space , but is not currently located in the management unit according to one or more embodiments 30 operating system ' s real memory ( e . g . , RAM ) . The operating described herein . system must handle a page fault by somehow making the The headings provided herein are for convenience only accessed data memory resident, allowing the program to and do not necessarily affect the scope or meaning of what continue operating as though the page fault had never is claimed in the present disclosure . occurred . For example , if the CPU presents a desired address In the drawings, the same reference numerals and any 35 to the MMU , and the MMU has no translation for this acronyms identify elements or acts with the same or similar address, the MMU the CPU and causes software structure or functionality for ease of understanding and often known as a page fault handler) to be executed . The convenience . The drawings will be described in detail in the page fault handler then determines what must be done to course of the following Detailed Description . resolve the page fault ( e . g . , fetch the data from a virtual 40 memory space and load it into the RAM ) . DETAILED DESCRIPTION When a process ( e . g . , associated with a program ) requests access to data in its memory , it is the responsibility of the Various examples and embodiments will now be operating system to map the virtual address provided by the described . The following description provides specific process to the physical address of the actual memory where details for a thorough understanding and enabling descrip - 45 that data is stored . A page table is where the operating tion of these examples . One skilled in the relevant art will system stores its mappings of virtual addresses to physical understand , however , that one or more embodiments addresses, with each mapping also known as a “ page table described herein may be practiced without many of these entry ” (PTE ) . details . Likewise , one skilled in the relevant art will also translation lookaside buffer ( TLB ) is an associative understand that one or more embodiments of the present 50 cache of page table entries (PTEs ) , where each block is a disclosure can include many other obvious features not single PTE . If an entry ( corresponding to a virtual page ) is described in detail herein . Additionally, some well- known not in the TLB , then a TLB “ miss ” occurs . If that entry is structures or functions may not be shown or described in also not in the operating system ' s real memory ( e . g ., it has detail below , so as to avoid unnecessarily obscuring the been “ paged out ” ) , then a page fault occurs as well . The TLB relevant description . 55 and page table together make up a translation unit that maps To implement virtual memory , a system needs from virtual addresses to physical addresses . to have special memory management hardware often known Embodiments of the present disclosure relate to methods as a MMU (memory management unit ) . Without a MMU , and systems for managing memory using a hardware -based when the CPU ( computer processing unit ) accesses RAM page filter designed to distinguish between active and inac (random access memory ) , the actual locations within RAM 60 tive pages (sometimes referred to herein as “ hot” and “ cold ” never change ( e . g ., a particular memory address is always pages , respectively ) so that inactive pages are compressed the same physical location within RAM ) . However , with a prior to the occurrence of a page fault . MMU memory addresses are processed through a translation As will be described in greater detail below , the methods step prior to each memory access . As such , a given memory and systems of the present disclosure are designed to address might be directed to a first physical address at one 65 achieve , among other things, lower cost, longer battery life , time, and a second physical address at another time. Because and faster user response . For example , in accordance with at the resources required to individually track the virtual to least one embodiment, lower cost is achieved in that a 4 GB US 9 , 740 ,631 B2 in DRAM ( dynamic random access memory ) is made to LPDDR3 170 is provided for capacity reasons , the behave like a 8 GB DRAM , at least with respect to capacity . main working memory , WIO2 RAM 180 , is included in the In this sense , the methods and systems of the present system 100 to provide working bandwidth . WIO2RAM 180 disclosure trade compression compute energy ( e . g . , a few is a specialized ( e . g ., high bandwidth , smaller capacity ) pJ/ Op ) for DRAM cost (e .g . , a few dollars per GB ). In terms 5 memory that is provided in addition to on - chip MMU . It of extending battery life , less DRAM access (GB / s ) means should be appreciated that while WIO2 is an industry less power consumption (mW ) , and thus the methods and standard , using both WIO2 and on - chip MMU together with systems described herein may trade on - chip compression LPDDR3 is a new approach that achieves improved speed compute energy ( e . g . , a few pJ/ Op ) for off - chip memory and improved memory management. reference energy (e .g ., a few hundred pJ/ B ). In addition , 10 In the sections that follow , " capacity eviction ” and “ ref faster user response is achieved through utilization of hard erence count saturation ” are used in the context of describ ware - assisted MMU ( e . g ., us ), rather than OS/ kernel ( e .89 g . , ms) . ing various features of the page filter ( e . g . , page filter 110 in Whereas existing approaches for memory management the example system 100 shown in FIG . 1 ) , in accordance are based on pixel or frame buffer compression , the methods 15 Wilwith one or more embodiments of the present disclosure. For and systems of the present disclosure focus on the CPU ' s example , the page filter may have 1024 entries that keep program ( e . g . , generic data structure ) . For example , in track of active 4 KB pages ' activity at the system level (not accordance with one ormore embodiments , the methods and CPU ) . In this context, the page filter is an on -chip cache as systems described herein utilize ZRAM (which provides a the main page table resides in the DRAM . A cache controller form of virtual memory compression , as further described 20 will evict an old entry when a new page must be monitored below ), which targets the program ' s generic heap . Focusing (an action known as “ capacity eviction ” ) . Similarly , when an on hardware -accelerated memory compression to offload entry ' s reference count reaches its maximum value ( that is , CPU translates higher power efficiency ( e . g ., ASIC is “ reference count saturation ” ) , the cache controller will raise approximately 100x lower power than CPU ) and higher an interrupt to inform the kernel' s MMU to update the main performance ( e . g . , ASIC is approximately 10x faster than 25 page table . CPU ) , and also allows for hardware - assisted memory man - In accordance with one or more embodiments described agement to offload OS /kernel , which significantly increases herein , hardware - based page profiling may be used in which response time. Additional details about ZRAM and its an interrupt is raised in order to update the kernel' s PTE utilization in accordance with the methods and systems of the present disclosure are provided below . during capacity eviction or reference count saturation . For ZRAM provides a form of virtual memory compression , example , one history table may track 4 KB pages while ZRAM compresses an actual block of RAM in order to make another history table tracks larger (e .g . , 4 MB ) pages . Each more RAM available to the operating system . The kernel page may have a Least Recently Used (LRU ) history or a ( e . g . , computer program for managing input/ output requests reference count to see how often a page is referenced over from software applications by translating such requests into 355 a period of time, where this period of time may be adjust data processing instructions for the CPU ) dynamically com able . A threshold can be defined and when capacity eviction presses a program ' s memory without program knowing isis needneeded an interrupt is raised to evict/ compress unused ( “ transparent” memory compression ) . This compression is pages. As described above , capacity eviction is when a new achieved through the program ' s and page must be monitored and an old entry must be evicted . The kernel can unmap pages from a pro - 40 from the history table . gram ’ s page table and compress them . When a compressed The following describes various features and operations paged is accessed ( e. g. , requested by a program ), the page of the page filter within an example process of hardware fault handler reads the PTE to locate the page from the based page profiling in accordance with one or more compression pool space , decompresses the page, and links embodiments of the present disclosure . In the following the page back to program ' s page table . 45 description , reference may sometimes be made to corre FIG . 1 is an example system 100 for hard ware - assisted sponding features and /or operations illustrated in FIG . 3 . memory compression management. In accordance with one FIG . 3 illustrates an example process 300 for hardware or more embodiments described herein , the system 100 may based page profiling using a page filter. In accordance with include page filter 110 , system memory management unit one or more embodiments described herein , the example ( system MMU ) 130 , last level cache (LLC ) 120 , fabric 140 , 50 process for page profiling 300 may utilize a page filter ( e . g . , main uncompressed memory controller (Wide I/ O 2 or page filter 110 in the example system 100 shown in FIG . 1 ) WIO2 Ctl ) 160 , main uncompressed memory with Wide I / O designed to distinguish between active (“ hot ” ) and inactive 2 interface standard (WIO2 RAM ) 180, low -power double (“ cold ” ) pages so that inactive pages are compressed before data rate memory controller ( e . g . , LPDDR3 Ctl ) 150 , and a page fault occurs . Further details about one or more of backup compressed memory ( ZRAM ) with LPDDR3 inter - 55 blocks 305 - 320 in the example process 300 for hardware face standard 170 . based page profiling are provided in the sections that follow . In accordance with at least one embodiment, page filter PTE provides a history of page references so that the 110 may be configured to detect inactive ( or “ cold ” ) pages, kernel can decide which page to compress . An active or while System MMU 130 maintains victim TLB ( translation “ hot” page should not be compressed . The page filter is lookaside buffer ) . LLC 120 may be , for example , 8 MB 60 on - chip while the page table is in DRAM . Capacity eviction on - chip static random access memory (SRAM ) and fabric occurs in the page filter since the on - chip table has limited 140 is the on -chip interconnect that moves command /pack - entries . Each time there is a capacity eviction , the page table ets between various agents ( e . g ., components, elements , etc . ) entry in DRAM is updated with the latest reference count. of the system , including , for example , CPU , GPU , on - chip As described above , when reference count saturation SRAM cache , off - chip DRAM , etc . Also , LPDDR3 Ctl 150 65 occurs, the maximum reference count has been reached is a memory controller that interfaces with JEDEC LPDDR3 ( e . g . , 255 or more for 8 -bit counter ) , which means that ZRAM 170 (the backup compressed memory ) . While history can no longer be tracked . In such a case , the entry US 9 ,740 ,631 B2 may be evicted , or the counter may be reset and the relevant complete , the allocated entry is then updated in the main reference count value is added to the page table entry in memory table with information indicating a physical loca DRAM . tion into which the compressed page was allocated . The In accordance with at least one embodiment, the DRAM on - chip data structure ( e . g ., system MMU ) then gets updated page table may be reset on either a predetermined , ( e . g . , 5 with the compressed page information . every hour ) basis or dynamically ( e . g . , according to a An allocated entry may get read , for example , when a user threshold being satisfied ) so to prevent count saturation in attempts to swap between different tabs that the user has DRAM . open in a web browser . In particular, the web page of the tab In accordance with at least one embodiment, the page that the user is swapping to was compressed , and is now filter is designed to provide additional information to the 10 being decompressed as a result of the user swapping to that kernel . Although the kernel already has some information , tab . In such a scenario , the compressed entry is read to the page filter may add further information through , for determine where to fetch the compressed memory space and example , reference count and /or LRU vector. move it to uncompressed space . Additionally , in at least one embodiment, the operating As described above , a TLB miss results in a page fault . system may provide a hint to the kernel that enables the 15 Therefore , in accordance with at least one embodiment of kernel to override the hardware -based page filter . Such an the present disclosure, someportion of the DRAM table may arrangement could allow pages to be kept “ hot” despite the be saved in the on -chip MMU so that the entry can be pages not being used / referenced . Such a hint could also be obtained ( e . g . , retrieved , requested , etc . ) faster than looking used to override compression of pages that may take too at the DRAM . long to decompress . Page sizes are determined by OS and 20 Furthermore, once the virtual page and physical page then designed into the hardware . Another fixed parameter is corresponding to an entry are re -mapped to CPU TLB ( e . g . , the size of the history table on -chip . A microcontroller compressed page is moved from compressed region to implementation , for example , could allow for these features uncompressed working memory ) , the entry can be removed to be configurable within resource limitations . The micro - from MMU because it is now allocated in CPU TLB . In controller could use ROM or external RAM to save its state . 25 another example , the page table entry can also be invali FIG . 4 illustrates example operations (400 ) of a system dated /removed by kernel MMU where , for example, the memory management unit ( e . g ., system MMU 130 in the process is killed or the tab is removed . It should be under example system 100 shown in FIG . 1 and described in detail stood that entries are not removed from virtual memory until above ) . In accordance with one ormore embodiments of the a program is finished or killed , at which point the virtual present disclosure , the system MMU may be configured to 30 address space may be cleared . perform hardware - assisted ( e . g . , hardware -accelerated ) In accordance with at least one embodiment, a cache memory compression management by caching page table operation engine is configured to unmap physical pages entries . from CPU TLB and to flush any lines from the last level For example , in accordance with at least one embodiment, cache ( LLC ) . Flushing the lines from the LLC is necessary the hardware -assisted ZRAM may be responsible for cach - 35 because hardware - triggered compression needs to remove ing virtual page numbers (VPN ) , physical page numbers compressed contents from cache in order to keep cache and ( PPN ) , and compressed page numbers ( ZPN ) . It should be memory consistent . The cache operation may, for example , understood in the contest of the present disclosure thatmain occur simultaneously with allocation when something is working memory (physical memory ) can be uncompressed pulled from DRAM and moved to compressed space . In For example , compressed memory space ( e . g . , 3 GB of 40 another example , the cache operation may be triggered by LPDDR3 ) can become 6 GB to 9 GB of compressed ZRAM . hardware engine deciding that it is time to compress pages . In existing approaches , themain workingmemory will try In still a further example , the cache operation may be to map virtual addresses to physical addresses . However , triggered by the kernel evicting pages from memory . with compression , more information is needed . As such , FIG . 5 illustrates an example process for compressing adding compression information means that a physical page 45 memory using a page filter and system memory management from LPDDR3 space can be mapped to multiple compressed unit (e . g ., page filter 110 and system MMU 130 in the pages at , for example , 4 KB granularity. Thus , a 4 KB example system 100 shown in FIG . 1 and described in detail physical page can be mapped to two compressed pages . above ) . Various details about one or more of blocks 505 -530 In accordance with one or more embodiments of the in the example process 500 for memory compression using present disclosure , the compression information described 50 a page filter and system MMU are provided below . above may be added to the page table . FIG . 2 illustrates an In accordance with one or more embodiments described example of such a main memory page table to which herein , when the reference count for a given page is deter compression information has been added . In addition , the mined to be less than a certain threshold (which may be start address of each page may also be logged in the page predetermined or dynamically determined / adjusted during table , where the start address is the physical address of the 55 operations ) , the page is considered ( e . g . , categorized , compressed memory . It should be noted that logging the start deemed , determined , etc . ) to be a cold page . The result of address is in addition to mapping the virtual to physical such an occurrence is that the system MMU flushes the addresses in the page table . In this manner, the virtual corresponding page table entry from the caches or the kernel address is mapped to the physical address, and physical MMU handles a page fault ( standard memory eviction ) . address is segregated into compressed and uncompressed 60 If the on - chip page filter detects a cold page , the system memory . MMU will claim that physical page number from the caches . As described above , the CPU has a TLB . An entry is For example , 4 KB data may be retched and compressed , allocated into system level MMU when an entry is and the compressed memory allocated to a page table entry. unmapped , meaning that a page is picked out from working The kernel then looks up its memory page table and decides DRAM and removed from currentmapping into compressed 65 where to allocate the compressed page . Once the kernel space . The kernel is then triggered to do some compression decides which physical page gets the compressed page work , and the entry is allocated . When compression is information , the on - chip MMU updates the victim TLB to US 9 ,740 ,631 B2 10 keep translation between virtual, compressed , and working to volatile memory ( such as RAM ) , non - volatile memory memories. So the compressed page is evicted out of working ( such as ROM , flash memory, etc .) or any combination memory and into compressed memory . In accordance with thereof . System memory ( 720 ) typically includes an oper one ormore embodiments described herein , a direct memory ating system ( 721) , one or more applications (722 ) , and access (DMA ) engine may be configured to write the 5 program data ( 724 ) . The application (722 ) may include a compressed page to the compressed memory ( e . g . , LPDDR3 hardware - assisted memory compression management sys ZRAM 170 in the example system 100 shown in FIG . 1 ) . tem ( 723) that uses a page filter and system MMU to Address allocation occurs first followed by the content being efficiently compress and decompress memory . saved to compressed memory . Program Data ( 724 ) may include storing instructions that, FIG . 6 illustrates an example process for decompressing 10 when executed by the one or more processing devices , memory using a system memory management unit ( e . g . , implement a system and method for hardware - assisted system MMU 130 in the example system 100 shown in FIG . memory compression management. Additionally , in accor 1 and described in detail above ). Various details about one dance with at least one embodiment, program data ( 724 ) or more of blocks 605 -630 in the example process 600 for may include page reference count data ( 725 ), which may memory decompression using system MMU are provided 15 relate to a page profiling operation in which a page is below . determined to be inactive when , for example , the page ' s In accordance with one or more embodiments , a context reference count falls below a certain threshold . In some switch may be, for example , when a user switches between embodiments , the application ( 722 ) can be arranged to tabs in a web browser. For example , the web page a user may operate with program data ( 724 ) on an operating system attempt to switch to may be compressed already , and so the 20 (721 ) . TLB will not have a physical address mapped in working The computing device (700 ) can have additional features memory , thereby causing a page fault. Such an occurrence or functionality , and additional interfaces to facilitate com may initiate ( e . g ., start ) a prefetch process. For example , it munications between the basic configuration ( 701 ) and any may be assumed that a program has multiple pages that need required devices and interfaces . to be fetched and filled . As such , the example process for 25 System memory (720 ) is an example of computer storage memory decompression is designed to not only get ( e . g ., media . Computer storage media includes, but is not limited retrieve , request , fetch , etc . ) the current requested page but to , RAM , DRAM , SRAM , ROM , EEPROM , flash memory also get follow -on contiguous requested pages. or other memory technology , CD -ROM , digital versatile Look up virtual and compressed addresses and raise disks (DVD ) or other optical storage , magnetic cassettes , interrupt to handle page fault by finding space to allocate the 30 magnetic tape, magnetic disk storage or other magnetic physical page number in working memory . While level 1 storage devices , or any other medium which can be used to memory (which is main working memory ) allocation is store the desired information and which can be accessed by proceeding , the compressed page may be fetched from level computing device 700 . Any such computer storage media 2 memory (which is compressed memory ) and decom - can be part of the device (700 ) . pressed . MMU page table update and decompression should 35 The computing device ( 700 ) can be implemented as a complete at about the same time ( decompression may be portion of a small - form factor portable ( or mobile ) elec faster ). Level 1 memory may be allocated and updated in tronic device such as a cell phone, a smart phone , a personal page table , and then uncompressed memory can be written data assistant (PDA ) , a personal media player device , a to allocated Level 1 memory space . tablet computer ( tablet) , a wireless web -watch device, a FIG . 7 is a high -level block diagram of an exemplary 40 personal headset device , an application -specific device , or a computer (700 ) that is arranged for hardware - assisted hybrid device that include any of the above functions. The memory compression management using a page filter and computing device ( 700 ) can also be implemented as a system memory management unit . For example, in accor - personal computer including both laptop computer and dance with one or more embodiments described herein , the non - laptop computer configurations . computer ( 700 ) may be configured to perform hardware - 45 The foregoing detailed description has set form various based page profiling in order to update the kernel' s PTE embodiments of the devices and / or processes via the use of during capacity eviction or reference count saturation . In a block diagrams, flowcharts , and /or examples. Insofar as very basic configuration ( 701 ) , the computing device ( 700 ) such block diagrams, flowcharts , and/ or examples contain typically includes one or more processors (710 ) and system one or more functions and/ or operations , it will be under memory (720 ) . A memory bus (730 ) can be used for com - 50 stood by those within the art that each function and /or municating between the processor ( 710 ) and the system operation within such block diagrams, flowcharts , or memory ( 720 ) examples can be implemented , individually and / or collec Depending on the desired configuration , the processor tively , by a wide range of hardware , software, firmware , or (710 ) can be of any type including but not limited to a virtually any combination thereof. In one embodiment, microprocessor (uP ) , a microcontroller ( UC ) , a digital signal 55 several portions of the subject matter described herein may processor (DSP ) , or any combination thereof. The processor be implemented via Application Specific Integrated Circuits ( 710 ) can include one more levels of caching , such as a level (ASICs ) , Field Programmable Gate Arrays (FPGAs ) , digital one cache ( 711 ) and a level two cache (712 ) , a processor signal processors (DSPs ) , or other integrated formats . How core ( 713 ) , and registers (714 ) . The processor core ( 713 ) can ever, those skilled in the art will recognize that some aspects include an arithmetic logic unit ( ALU ) , a floating point unit 60 of the embodiments disclosed herein , in whole or in part, can ( FPU ), a digital signal processing core (DSP Core ) , or any be equivalently implemented in integrated circuits , as one or combination thereof. A memory controller (716 ) can also be more computer programs running on one or more comput used with the processor (710 ) , or in some implementations ers , as one or more programs running on one or more the memory controller (715 ) can be an internal part of the processors , as firmware, or as virtually any combination processor (710 ). 65 thereof, and that designing the circuitry and / or writing the Depending on the desired configuration , the system code for the software and or firmware would be well within memory ( 720) can be of any type including but not limited the skill of one of skill in the art in light of this disclosure . US 9 , 740 ,631 B2 12 In addition , those skilled in the art will appreciate that the 7 . The method of claim 1, wherein the static random mechanisms of the subject matter described herein are access memory cache is on -chip . capable of being distributed as a program product in a 8 . The method of claim 1 , further comprising allocating an variety of forms, and that an illustrative embodiment of the address indicating the physical location of the compressed subject matter described herein applies regardless of the 5 page in a main memory page table . particular type of non - transitory signalbearing medium used 9 . The method of claim 8 , wherein the main memory page to actually carry out the distribution . Examples of a non transitory signal bearing medium include , but are not limited table resides in an off - chip dynamic random access memory . to , the following : a recordable type medium such as a floppy 10 . A system for memory compression management com disk , a , a Compact Disc (CD ) , a Digital 10 prising : Video Disk (DVD ), a digital tape , a computer memory , etc .; at least one processor ; and and a transmission type medium such as a digital and /or an a non -transitory computer- readable medium coupled to analog communication medium , ( e . g . , a fiber optic cable , a the at least one processor having instructions stored waveguide, a wired communications link , a wireless com thereon that, when executed by the at least one proces municationm link , etc .) 15 sor, causes the at least one processor to : With respect to the use of substantially any plural and /or use a page filter to determine that a page in a working singular terms herein , those having skill in the art can memory associated with a virtual memory space is translate from the plural to the singular and /or from the inactive , the working memory a wide input/ output singular to the plural as is appropriate to the context and /or random access memory ; application . The various singular /plural permutations may 20 use a memory management unit to flush a page table be expressly set forth herein for sake of clarity . entry from a cache , the cache a static random access Thus, particular embodiments of the subject matter have memory ; been described . Other embodiments are within the scope of use thememory management unit to determine a physi the following claims. In some cases , the actions recited in cal location in a compressed memory , the com the claims can be performed in a different order and still 25 pressed memory a low - power double data rate ran achieve desirable results . In addition , the processes depicted dom access memory ; in the accompanying figures do not necessarily require the and particular order shown , or sequential order , to achieve use a direct memory access engine to write the com desirable results . In certain implementations, multitasking pressed page to the determined physical location in and parallel processing may be advantageous . 30 the compressed memory . 11 . The system of claim 10 , wherein the at least one The invention claimed is : processor is further caused to : 1 . A method formemory compression management com update a translation lookaside buffer with the determined prising : physical location for the compressed page using a determining that a page in a working memory associated 35 memory management unit . with a virtual memory space is inactive , the working 12 . The system of claim 11 , wherein the translation memory a wide input/ output random access memory ; lookaside buffer is updated with the determined physical flushing a page table entry from a cache , the cache a static location for the compressed page in order to maintain random access memory and the page table entry indi- translation information between the working memory , the cating the physical location of the inactive page in the 40 compressed memory , and the virtual memory space . working memory ; 13 . The system of claim 10 , wherein the page filter determining a physical location in a compressed memory, determines that the page in the working memory is inactive the compressed memory a low -power double data rate based on a reference count for the page falling below a random access memory , to write a compressed page , threshold count. the compressed page compressed from the determined 45 14 . The system of claim 10 , wherein the page filter inactive page ; determines that the page in the working memory is inactive and based on a reference count for the page falling below a writing the compressed page to the determined physical threshold count during a predetermined period of time. location in the compressed memory . 15 . A method for memory compression management, the 2 . The method of claim 1 , wherein a translation lookaside 50 method comprising : buffer is updated with the determined physical location for detecting an inactive page in a working memory associ the compressed page in order to maintain translation infor ated with a virtualmemory space, the working memory mation between the working memory , the compressed a wide input/ output random access memory ; memory, and the virtual memory space . compressing the inactive page prior to a page fault ; 3 . The method of claim 1 , wherein a page filter determines 55 providing a kernel of an operating system with informa that the page in the working memory is inactive based on a tion about the compressed inactive page; reference count for the page falling below a threshold count. logging , in a main memory page table located within the 4 . The method of claim 3 , wherein the page filter is an working memory , a starting address indicating a physi on - chip cache . cal location in a compressed memory for the com 5 . The method of claim 1 , wherein a page filter determines 60 pressed inactive page , the compressed memory a low that the page in the working memory is inactive based on a power double data rate random access memory ; and reference count for the page falling below a threshold count writing , to the compressed memory , the compressed inac during a predetermined period of time. tive page . 6 . The method of claim 1 , wherein a page filter determines 16 . The method of claim 15 , wherein a page filter detects that the page in the working memory is inactive and a kernel 65 the inactive page in the working memory based on a overrides the page filter, the override resulting in the page in reference count for the page falling below a threshold count the working memory remaining active . during a predetermined period of time. US 9 ,740 ,631 B2 14 17 . The method of claim 15 , where the main memory page table includes a physical page number or a compressed page number. 18 . The method of claim 15 , wherein the main memory page table is reset on a predetermined basis . 5 19 . The method of claim 15 , wherein the main memory page table is reset on a dynamic basis . 20 . The method of claim 15 , wherein the main memory page table is updated in response to an interrupt indicating a reference count saturation . 10 * * * *