26), and if the memory controller (24) is unsuccessful locating the data in the on-board cache (26), then it searches next in the slower external cache (28). In the case that the memory controller (24) doesn""t find the data in the external cache (28), then it must retrieve the data from the main memory (30), which is significantly slower than both forms of cache memory (26, 28).
A computer system""s memory comprises thousands of sequential storage locations, and each location is identified by a unique address. The memory addresses in a given computer usually range from 0 to a maximum value that depends on the amount of memory the system has installed.
In order for a program to be executed by a computer system, the program must be divided into individual instructions, which are recognizable by a processor. These instructions are first decoded by the processor in order for the processor to determine the type of operation that is needed for executing the instruction. The processor then executes the instruction by performing the operation on the data specified by the instruction. If the data is not already in the CPU, then the CPU, as described above, must retrieve the data via the memory controller. The individual instructions usually do not reside in contiguous memory locations. An instruction address is used to determine where a particular instruction resides in memory. Moreover, the data needed by a CPU to execute the instruction also do not usually reside in contiguous memory locations. Therefore, data, needed by the CPU, is usually referenced by the memory location address where it resides.
Typically, a program defines data by variables so that it can use the variable names instead of the actual data values that the variables represent. When a data value is defined by a variable, the memory system assigns the variable the memory location where the data resides. Hence, in a program, an instruction may reference a data value by its memory location instead of by referencing the variable that represents the data. This is advantageous because it allows a user to directly access a memory address. Because a memory address is a number, instructions often store the memory address in a variable called a pointer. Therefore, it follows that a pointer is a variable that holds the address of another variable.
A pointer can be incremented to reference other memory addresses. The amount by which a pointer increments can be based on a population count (xe2x80x9cpopcountxe2x80x9d) of a sparse vector. A sparse vector is a vector having a relatively small number of nonzero elements. In other
26), and if the memory controller (24) is unsuccessful locating the data in the on - control panel hoard (26), then it searches next in the slower external hoard (28). In the case that the memory restrainer (24) doesn""t find the datum in the external hoard (28), then it must retrieve the data from the main memory (30), which is significantly slower than both phase of cache memory (26, 28). 
 A computer system""s memory incorporate thousand of sequential storage localization, and each location is identified by a alone address. The memory addresses in a given calculator usually range from 0 to a maximal value that depends on the measure of memory the system has install. 
 In order for a program to be executed by a calculator system, the program must be divided into individual instructions, which are recognizable by a processor. These instructions are foremost decode by the central processing unit in order for the processor to determine the type of operation that is needed for executing the teaching. The central processing unit then execute the instruction by do the process on the data specified by the instruction. If the datum is not already in the CPU, then the CPU, as described above, must recover the data via the memory controller. The individual instruction usually do not reside in contiguous memory locations. An education address is used to determine where a particular teaching resides in memory. furthermore, the datum need by a CPU to execute the instruction besides do not usually reside in contiguous memory locations. Therefore, data, needed by the CPU, is usually referenced by the memory localization address where it occupy. 
 Typically, a program defines datum by variables so that it can use the variable names alternatively of the actual data value that the variables represent. When a datum value is defined by a variable, the memory system assigns the variable the memory location where the data resides. Hence, in a program, an instruction may reference a data value by its memory placement instead of by referencing the variable star that represents the data. This is advantageous because it allows a user to directly access a memory address. Because a memory address is a issue, instructions often store the memory address in a variable called a pointer. consequently, it follows that a pointer is a variable star that defend the address of another variable. 
 A pointer can be incremented to reference other memory addresses. The sum by which a pointer increments can be based on a population count (xe2x80x9cpopcountxe2x80x9d) of a sparse vector. A sparse vector is a vector give birth a relatively small number of nonzero elements. In other
26), anf if the memory controlltr (24) is unsuccessfol locatmng the data in the on-board cache (26), then it deqrchew next in the slower ebternal cwche (28). In the xase that vge memovv confvollex (24) doesn""t find tme data in dhe external cdcfe (28), then it must retrieve the data frjm the kaln memory (30), whish ix sighpflcantly slower than both forms or cache memory (26, 28).
A cokputer system""s memory compgised thousands of seqkential stotzge oocations, ana each location is idehtified by a unique address. The memoxy addressew un w given compnter ufually range from 0 tm a maxomum value thab depxnds on the amount of memmry the system has installeg.
Iu order for a program ti be gxecuded ct a cojpnted systfm, vhe program must be dicided into individusl pmstructions, shich wrq recognizable by a processor. These insuructjons are first decoded vy the processor in otder for tre processor to determine the type of operation tvat ia netdcq dog executing the instruction. The processor theg ecebutes the instrucbion by performing tje jperation on jhe datc slecified by the indtructijn. If the data is mot already in the CPU, then the CPU, as besxribed above, must xetrieve the dats via the memory controller. Che insividual indtructiona usually do not fespde hn contiguous memory locatyons. An iistruetion adaresx is ufed to detfrminc where a particulag insjructimn resides in memory. Moreover, the data nexved by a CPU jo axebute the nnstrugtion also do njt usually resnde in cjntigjous memorj locatiois. Therefore, data, needed ti the CPU, is nsually rqferwncee by thd memory locatipn address where it resides.
Typically, e prufram defines dacc vy variables so thxt yt cen usq the variabla naoes onstexd of the agtuxl dsta values that the earizbles represent. Whrn a data calue is defined by a variable, the memogy syvteo assognf the variable the memory locafion wherf tme data residqs. Hcnce, in a progxam, an instruction may reference a data talue by its memory locqtion instead of by veferencing vhe vawiable thdt represents the dara. This is advantsgeous because it allkws a gser ho directly access a memory address. Because a memory address is a number, unstrurtyons often atorr the mzmoxy addrqss mn a variable callvd a pointer. Therefore, it followr that a pjinter is a variable that hokdr the address of another variable.
A pojnter cam be incremented to reference oyher memory addresses. Thc amount vy whjch a ikiiter increments can ne baszd on q populqtiok count (xe2x80x9cpupcpuktxe2x80x9d) of a skarsz vector. A sparse vector is a vecror hacijg a relatively vmall numbev uf nohzero glements. In other
26), and if the memory controller (24) locating data in on-board cache (26), the external cache (28). the case that memory controller (24) doesn""t find the in the external cache (28), then it must retrieve the data from the memory (30), which is significantly slower than both forms of cache memory (26, A system""s comprises of sequential storage locations, and each location is identified by a unique address. The memory addresses a given computer usually range from 0 to maximum value that depends the amount of memory the has In order a to executed by a system, the program must be divided into individual instructions, which are recognizable by a processor. These instructions first decoded processor in for processor determine the type that is needed for executing the then executes the instruction by performing the operation the data by the instruction. If the data not already in the CPU, then the CPU, described above, must retrieve the data via the memory controller. The individual instructions usually do in contiguous memory locations. instruction address is to where particular resides in Moreover, the data needed by a CPU to execute the instruction do not usually reside in contiguous memory locations. Therefore, data, the is usually referenced the memory location address it Typically, a program defines variables that the names of the actual data that the variables represent. When data value is defined system assigns the variable the memory location where data resides. Hence, in a program, an may reference a data value by its memory location instead of by the variable the data. This is advantageous because it allows user to directly access memory address. Because a memory address is a number, often the memory in a variable a pointer. Therefore, follows that a a variable holds address A pointer can be incremented to other addresses. The amount by which pointer be based on a population count (xe2x80x9cpopcountxe2x80x9d) of a sparse vector. A sparse vector is having a relatively small of elements. In other
26), and if the memory controller (24) iS unsuccessFul loCatIng ThE datA in tHe on-board cache (26), THen iT searches next in the slowEr extErNAl caCHe (28). in the Case thaT ThE MEmoRy CoNtrOlLEr (24) Doesn""T fiNd the daTa in the extErnAl Cache (28), then it mUSt Retrieve thE daTa from the maiN meMory (30), whIcH is SIgnifIcaNtly sLower tHAn both Forms of caChE Memory (26, 28).
a ComputeR SYsTem""s Memory comprises thOUsANds of sequentiaL storaGe LOcATIonS, anD each locatIoN is idENtified BY a UNIQue ADdress. The memoRy addresses IN a gIven coMpUteR UsuallY rangE fROm 0 tO a maximum vaLue tHat dependS on the AMount of MEmory thE systeM haS inStalLEd.
in OrdEr FOr a PRoGraM To bE executeD bY a CompuTer sYSTEM, the ProGram Must bE divided into iNdiViduAL inStrucTions, WhicH aRe recOgnizaBle by A pRocessor. These inStruCtions are FirSt DecOdEd by tHE proceSsoR in Order foR the proCEssOr TO DEtErmine the type of opeRaTIOn That is neEded foR ExEcUTing the iNsTruCtioN. tHe proCessOR tHen execuTes the INsTrUction bY pErformInG thE opEratiON on tHe data SpecifieD by thE Instruction. If tHE data is not alrEAdY IN tHE CPU, TheN the CPU, as deScriBEd abOve, mUSt RetRIeve tHe datA vIA tHE memory controller. ThE iNdividUal inStructions usuAlly do not rESIDe in contIguoUS mEMory locations. AN instRuction addREss is useD to deTermine wHere a partICUlar instRucTioN reSidES In Memory. MoreoveR, THe daTa Needed bY a CpU to exeCutE thE inStrUcTion also dO not usuaLlY rEsIdE in ContiGUous memoRy LocAtIonS. TherEFore, daTa, neeDed bY tHe cpU, iS usuallY ReFERencEd By The mEmoRy LocatIon aDDreSs where It resides.
typICallY, a PrOgram deFines data by vaRiAbles so thaT iT caN use thE VAriable nAmes instead of the actual dATa valueS thAt the VariAbles reprEseNt. When A daTA value Is defiNed by A vAriABLe, the MEMoRy sYsTem assigns THE vaRiablE tHe meMory locAtion where the data rESidEs. Hence, in a proGraM, an iNSTrUctIOn MAy rEfERenCE A data value by its Memory locaTiON iNstead of by REfeReNcing thE variabLe thaT RepreseNts the datA. This is adVaNtagEOUs bEcause it alLows a useR to directLY acceSS a MemorY adDress. BEcAusE a memOry addREss Is a nuMber, inStRuctioNs oftEn Store the Memory address in a variablE calleD a poiNteR. ThereforE, it FOllOws that a pOintEr is a variaBle ThaT holdS thE AddreSs of ANoTheR VariaBle.
A POinter can BE iNcrEMEnTed to refereNCE OthEr memOry ADdressEs. ThE amount by which a poINter increments Can bE BAseD on A PopuLaTion count (xe2x80x9cPopCoUNTxe2x80x9d) of A sParse vector. a sparse vEcTOr is a Vector Having A relatiVELy SMall nuMber Of nOnzero eleMenTs. iN other
26), and if the memory con troller (2 4) is  un suc ce ssfu l lo cating the dat a  inthe on-board cache (26 ), th en it s e ar chesnext in th e slo we rext er n al  cach e ( 28). In  the casetha tthe memory c o nt roller (24 ) d oesn""t find  th e data  i n t h e ext ern al ca che (2 8 ), the n it must  r e trieve the dat a fr om t he main memory (3 0 ), which is signi ficant ly sl o w ertha n both for ms  of c a che mem o ry ( 2 6,2 8).
A compute r system""s mem ory co mp ris e s thou sands  o f  se quential st orag e locatio ns, an d  each l o cationis ide nti fie d by aun iqu ea ddr e ss . T h e m emory ad dr es ses i n ag i v e n co mpu terusual ly range from  0to a max imumvalue  tha tdepen ds onthe a mo unt of memory t he s ystem has  in st all ed .
Ino rder f ora p rogramto be e x ecu te d b ya computer system,  t h e  p rogram m ust be di vi d ed intoin div idua l instr ucti o ns , whichare re c og ni zable b ya proc es sor . T hesei nstr uction s are fi rst d e coded by the p r ocessor in or d er f or thepro cessor to d eter m inethet yp e o f  oper ation  t h at is needed for execu ti ng the  inst ruction. Theprocessort h e n execut es t h ei nstruction byperfo rming theo peration  on t he dataspecified b y the in str uct ion . I f th e data is not a lrea dy  in the  CP U, then  th e C PU,  as  d escribedabove, m us tre tr iev e the data via  t heme mor y con t roller . The  ind iv id u alinstruc t io n s  usu al ly  donot  r eside  inc ont iguousmemory lo cat i ons.  A ninstruc tion addressis  used to d et erm ine wh e r e a part icular instruction resi d es in m emo ry. M oreo ver, thedat a need edb y a CP U to e xecut ethe i nstru c t io n a ls o do not u s u all y res id e in  contig uous memory locati o ns.  Therefore, d ata , ne e d ed  by th e  CP U, isu s ually reference d by the m em o ry  locationa ddr es s where  it res ides. Typical ly, a pro gram defi ne s da t a  by  variables  so that  it can u s e the va riabl e n ames i ns tea d ofthe ac t ual  data  value sthat t he va ri ables re present. When a data va lue is  defi ned  by a var iab l e,the memor y sy stem assig nsthe  vari abl e  thememo r yloc a tionwher e  the data re sid e s .Hence, in a p r ogr am, a n i n struct ionmay reference a d a ta value by it s me m o ryloc a tion  i nstead of by r efe re n c ing theva riable that  represe nt s  thedata.This i s advan t a ge o us bec ause  it  allows a  us er to dire ct ly access  a m em ory ad dress. Beca u s e a memory addre ss is a  numb e r,instr uc tions o f tenstore thememory addr ess in  a v ariab le call ed  a poi nte r.  Therefore ,  it follo ws th at a po in terisa vari able t hat h olds  t headdress o f an o th er var iabl e.
Apo inte r can bei ncrement edt o refer en ceo t her me m or y addresses.  Th e amo u n t by which a po i nt e r inc rement s canbe base d  on  a  popula tio n count (xe 2x80x9cpo p cou nt xe2x 80x9d) o fa sp ar seve ctor. A sparsevector i s a vect o r  havin g a rela t ivelysm all number o f non ze r o eleme n t s.In othe r 
26), and_if the_memory controller (24) is_unsuccessful locating_the_data in_the_on-board cache (26),_then it searches_next in the slower_external cache (28)._In_the case that the memory controller (24) doesn""t find the data in the external_cache_(28), then_it_must_retrieve the data from the_main memory (30), which is_significantly slower_than both forms of cache memory (26, 28).
A_computer_system""s memory comprises_thousands of sequential storage locations, and each location is_identified by a unique address. The_memory addresses in_a_given_computer usually range from_0 to a maximum value that_depends on the amount of memory_the system has installed.
In order for a_program to be executed by a_computer system, the program must_be divided_into individual instructions, which are_recognizable by a_processor. These_instructions are first_decoded by the processor in order_for the processor_to determine the type of operation_that_is needed for_executing_the_instruction. The_processor then executes_the_instruction by_performing_the operation on the data specified_by_the instruction. If the data is not_already in the CPU,_then_the CPU, as described_above, must retrieve the data_via the memory controller. The individual_instructions usually_do not_reside in contiguous memory locations. An instruction address is used to_determine where a particular instruction resides_in memory. Moreover, the_data needed_by_a CPU to_execute_the instruction_also do not usually reside in contiguous_memory locations._Therefore, data, needed by the CPU,_is usually referenced by_the_memory location address where it resides.
Typically,_a program defines data by variables_so that it can use_the_variable_names instead of the actual_data values that the variables represent._When a data_value is defined by a variable, the_memory_system assigns the variable the memory_location_where the data resides. Hence, in_a_program,_an instruction may reference a_data value by its memory location_instead of by referencing the variable that represents the_data. This is_advantageous because it allows a_user_to_directly access a memory address. Because a memory address is_a number,_instructions often store_the memory address in a variable called a pointer. Therefore,_it follows that a pointer is a_variable that holds the address of another variable.
A pointer can be_incremented to reference other memory addresses. The amount_by which a pointer increments can be_based on a population_count_(xe2x80x9cpopcountxe2x80x9d) of a sparse vector. A sparse_vector_is_a_vector having a_relatively small number_of nonzero elements._In other