Pages

Saturday, June 9, 2012

History of general purpose CPUs

%3Cdiv+dir%3D%22ltr%22+style%3D%22text-align%3A+left%3B%22+trbidi%3D%22on%22%3E%0D%0A%3Ctable+class%3D%22metadata+plainlinks+ambox+ambox-content+ambox-Refimprove%22%3E%3Ctbody%3E%0D%0A%3Ctr%3E%3Ctd+class%3D%22mbox-image%22%3E%3Cdiv+style%3D%22width%3A+52px%3B%22%3E%0D%0A%3Cimg+alt%3D%22%22+height%3D%2239%22+src%3D%22http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fen%2Fthumb%2F9%2F99%2FQuestion_book-new.svg%2F50px-Question_book-new.svg.png%22+width%3D%2250%22+%2F%3E%3C%2Fdiv%3E%0D%0A%3C%2Ftd%3E+%3Ctd+class%3D%22mbox-text%22%3EThis+article+%3Cb%3Eneeds+additional+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3ACiting_sources%23Inline_citations%22+title%3D%22Wikipedia%3ACiting+sources%22%3Ecitations%3C%2Fa%3E+for+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3AVerifiability%22+title%3D%22Wikipedia%3AVerifiability%22%3Everification%3C%2Fa%3E%3C%2Fb%3E.+Please+help+%3Ca+class%3D%22external+text%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DHistory_of_general_purpose_CPUs%26amp%3Baction%3Dedit%22%3Eimprove+this+article%3C%2Fa%3E+by+adding+citations+to+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3AIdentifying_reliable_sources%22+title%3D%22Wikipedia%3AIdentifying+reliable+sources%22%3Ereliable+sources%3C%2Fa%3E.+Unsourced+material+may+be+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTemplate%3ACitation_needed%22+title%3D%22Template%3ACitation+needed%22%3Echallenged%3C%2Fa%3E+and+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3AVerifiability%23Burden_of_evidence%22+title%3D%22Wikipedia%3AVerifiability%22%3Eremoved%3C%2Fa%3E.+%3Csmall%3E%3Ci%3E%28March+2009%29%3C%2Fi%3E%3C%2Fsmall%3E%3C%2Ftd%3E+%3C%2Ftr%3E%0D%0A%3C%2Ftbody%3E%3C%2Ftable%3E%0D%0A%3Ctable+class%3D%22metadata+plainlinks+ambox+ambox-content+ambox-Original_research%22%3E%3Ctbody%3E%0D%0A%3Ctr%3E%3Ctd+class%3D%22mbox-image%22%3E+%3Cdiv+style%3D%22width%3A+52px%3B%22%3E%0D%0A%3Cimg+alt%3D%22%22+height%3D%2240%22+src%3D%22http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fen%2Ff%2Ff4%2FAmbox_content.png%22+width%3D%2240%22+%2F%3E%3C%2Fdiv%3E%0D%0A%3C%2Ftd%3E+%3Ctd+class%3D%22mbox-text%22%3EThis+article+%3Cb%3Emay+contain+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3ANo_original_research%22+title%3D%22Wikipedia%3ANo+original+research%22%3Eoriginal+research%3C%2Fa%3E%3C%2Fb%3E.+Please+%3Ca+class%3D%22external+text%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DHistory_of_general_purpose_CPUs%26amp%3Baction%3Dedit%22%3Eimprove+it%3C%2Fa%3E+by+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3AVerifiability%22+title%3D%22Wikipedia%3AVerifiability%22%3Everifying%3C%2Fa%3E+the+claims+made+and+adding+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWikipedia%3AReferences%22+title%3D%22Wikipedia%3AReferences%22%3Ereferences%3C%2Fa%3E.+Statements+consisting+only+of+original+research+may+be+removed.+More+details+may+be+available+on+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTalk%3AHistory_of_general_purpose_CPUs%22+title%3D%22Talk%3AHistory+of+general+purpose+CPUs%22%3Etalk+page%3C%2Fa%3E.+%3Csmall%3E%3Ci%3E%28March+2009%29%3C%2Fi%3E%3C%2Fsmall%3E%3C%2Ftd%3E%3C%2Ftr%3E%0D%0A%3C%2Ftbody%3E%3C%2Ftable%3E%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%221950s%3A_early_designs%22%3E1950s%3A+early+designs%3C%2Fspan%3E%3C%2Fh2%3E%0D%0AEach+of+the+computer+designs+of+the+early+1950s+was+a+unique+design%3B++there+were+no+upward-compatible+machines+or+computer+architectures+with++multiple%2C+differing+implementations.+Programs+written+for+one+machine++would+not+run+on+another+kind%2C+even+other+kinds+from+the+same+company.++This+was+not+a+major+drawback+at+the+time+because+there+was+not+a+large++body+of+software+developed+to+run+on+computers%2C+so+starting+programming++from+scratch+was+not+seen+as+a+large+barrier.%0D%0AThe+design+freedom+of+the+time+was+very+important%2C+for+designers+were++very+constrained+by+the+cost+of+electronics%2C+yet+just+beginning+to++explore+how+a+computer+could+best+be+organized.+Some+of+the+basic++features+introduced+during+this+period+included+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIndex_registers%22+title%3D%22Index+registers%22%3Eindex+registers%3C%2Fa%3E+%28on+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFerranti_Mark_1%22+title%3D%22Ferranti+Mark+1%22%3EFerranti+Mark+1%3C%2Fa%3E%29%2C+a+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FReturn_address%22+title%3D%22Return+address%22%3Ereturn-address%3C%2Fa%3E+saving+instruction+%28%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUNIVAC_I%22+title%3D%22UNIVAC+I%22%3EUNIVAC+I%3C%2Fa%3E%29%2C+immediate+operands+%28%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_704%22+title%3D%22IBM+704%22%3EIBM+704%3C%2Fa%3E%29%2C+and+the+detection+of+invalid+operations+%28%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_650%22+title%3D%22IBM+650%22%3EIBM+650%3C%2Fa%3E%29.%0D%0ABy+the+end+of+the+1950s+commercial+builders+had+developed++factory-constructed%2C+truck-deliverable+computers.+The+most+widely++installed+computer+was+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_650%22+title%3D%22IBM+650%22%3EIBM+650%3C%2Fa%3E%2C+which+used+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDrum_memory%22+title%3D%22Drum+memory%22%3Edrum+memory%3C%2Fa%3E+onto+which+programs+were+loaded+using+either+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPunched_tape%22+title%3D%22Punched+tape%22%3Epaper+tape%3C%2Fa%3E+or+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPunched_card%22+title%3D%22Punched+card%22%3Epunched+cards%3C%2Fa%3E.+Some+very+high-end+machines+also+included+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCore_memory%22+title%3D%22Core+memory%22%3Ecore+memory%3C%2Fa%3E+which+provided+higher+speeds.+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHard_disk%22+title%3D%22Hard+disk%22%3EHard+disks%3C%2Fa%3E+were+also+starting+to+become+popular.%0D%0AA+computer+is+an+automatic+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAbacus%22+title%3D%22Abacus%22%3Eabacus%3C%2Fa%3E.++The+type+of+number+system+affects+the+way+it+works.+In+the+early+1950s++most+computers+were+built+for+specific+numerical+processing+tasks%2C+and++many+machines+used+decimal+numbers+as+their+basic+number+system+%E2%80%93+that++is%2C+the+mathematical+functions+of+the+machines+worked+in+base-10+instead++of+base-2+as+is+common+today.+These+were+not+merely+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBinary_coded_decimal%22+title%3D%22Binary+coded+decimal%22%3Ebinary+coded+decimal%3C%2Fa%3E.+Most+machines+actually+had+ten+vacuum+tubes+per+digit+in+each+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FProcessor_register%22+title%3D%22Processor+register%22%3Eregister%3C%2Fa%3E.+Some+early+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSoviet_Union%22+title%3D%22Soviet+Union%22%3ESoviet%3C%2Fa%3E+computer+designers+implemented+systems+based+on+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTernary_logic%22+title%3D%22Ternary+logic%22%3Eternary+logic%3C%2Fa%3E%3B+that+is%2C+a+bit+could+have+three+states%3A+%2B1%2C+0%2C+or+-1%2C+corresponding+to+positive%2C+zero%2C+or+negative+voltage.%0D%0AAn+early+project+for+the+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FU.S._Air_Force%22+title%3D%22U.S.+Air+Force%22%3EU.S.+Air+Force%3C%2Fa%3E%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBINAC%22+title%3D%22BINAC%22%3EBINAC%3C%2Fa%3E+attempted+to+make+a+lightweight%2C+simple+computer+by+using+binary+arithmetic.+It+deeply+impressed+the+industry.%0D%0AAs+late+as+1970%2C+major+computer+languages+were+unable+to+standardize++their+numeric+behavior+because+decimal+computers+had+groups+of+users+too++large+to+alienate.%0D%0AEven+when+designers+used+a+binary+system%2C+they+still+had+many+odd+ideas.+Some+used+sign-magnitude+arithmetic+%28-1+%3D+10001%29%2C+or+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOnes%2527_complement%22+title%3D%22Ones%27+complement%22%3Eones%27+complement%3C%2Fa%3E+%28-1+%3D+11110%29%2C+rather+than+modern+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTwo%2527s_complement%22+title%3D%22Two%27s+complement%22%3Etwo%27s+complement%3C%2Fa%3E+arithmetic+%28-1+%3D+11111%29.+Most+computers+used+six-bit+character+sets%2C+because+they+adequately+encoded+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHollerith%22+title%3D%22Hollerith%22%3EHollerith%3C%2Fa%3E++cards.+It+was+a+major+revelation+to+designers+of+this+period+to+realize++that+the+data+word+should+be+a+multiple+of+the+character+size.+They++began+to+design+computers+with+12%2C+24+and+36+bit+data+words+%28e.g.+see++the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTX-2%22+title%3D%22TX-2%22%3ETX-2%3C%2Fa%3E%29.%0D%0AIn+this+era%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FGrosch%2527s_law%22+title%3D%22Grosch%27s+law%22%3EGrosch%27s+law%3C%2Fa%3E+dominated+computer+design%3A+Computer+cost+increased+as+the+square+of+its+speed.%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%221960s%3A_the_computer_revolution_and_CISC%22%3E1960s%3A+the+computer+revolution+and+CISC%3C%2Fspan%3E%3C%2Fh2%3E%0D%0AOne+major+problem+with+early+computers+was+that+a+program+for+one++would+not+work+on+others.+Computer+companies+found+that+their+customers++had+little+reason+to+remain+loyal+to+a+particular+brand%2C+as+the+next++computer+they+purchased+would+be+incompatible+anyway.+At+that+point%2C++price+and+performance+were+usually+the+only+concerns.%0D%0AIn+1962%2C+IBM+tried+a+new+approach+to+designing+computers.+The+plan++was+to+make+an+entire+family+of+computers+that+could+all+run+the+same++software%2C+but+with+different+performances%2C+and+at+different+prices.+As++users%27+requirements+grew+they+could+move+up+to+larger+computers%2C+and++still+keep+all+of+their+investment+in+programs%2C+data+and+storage+media.%0D%0AIn+order+to+do+this+they+designed+a+single+%3Ci%3Ereference+computer%3C%2Fi%3E+called+the+%3Cb%3E%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSystem%2F360%22+title%3D%22System%2F360%22%3ESystem%2F360%3C%2Fa%3E%3C%2Fb%3E+%28or+%3Cb%3ES%2F360%3C%2Fb%3E%29.++The+System%2F360+was+a+virtual+computer%2C+a+reference+instruction+set+and++capabilities+that+all+machines+in+the+family+would+support.+In+order+to++provide+different+classes+of+machines%2C+each+computer+in+the+family+would++use+more+or+less+hardware+emulation%2C+and+more+or+less+%3Ca+class%3D%22mw-redirect2%29%2C+a+term+not+invented+until+many+years++later%2C+when+RISC+%28Reduced+Instruction+Set+Computer%29+begun+to+get+market++share.%0D%0AIn+many+CISCs%2C+an+instruction+could+access+either+registers+or++memory%2C+usually+in+several+different+ways.+This+made+the+CISCs+easier+to++program%2C+because+a+programmer+could+remember+just+thirty+to+a+hundred++instructions%2C+and+a+set+of+three+to+ten+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAddressing_mode%22+title%3D%2mulator+to+provide+the+rest+of+the+instruction+set%2C+which+would+slow+it++down.+A+high-end+machine+would+use+a+much+more+complex+processor+that++could+directly+process+more+of+the+System%2F360+design%2C+thus+running+a++much+simpler+and+faster+emulator.%0D%0AIBM+chose+to+make+the+reference+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInstruction_set%22+title%3D%22Instruction+set%22%3Einstruction+set%3C%2Fa%3E+quite+complex%2C+and+very+capable.+This+was+a+conscious+choice.+Even+though+the+computer+was+complex%2C+its+%22%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FControl_store%22+title%3D%22Control+store%22%3Econtrol+store%3C%2Fa%3E%22+containing+the+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMicroprogram%22+title%3D%22Microprogram%22%3Emicroprogram%3C%2Fa%3E++would+stay+relatively+small%2C+and+could+be+made+with+very+fast+memory.++Another+important+effect+was+that+a+single+instruction+could+describe++quite+a+complex+sequence+of+operations.+Thus+the+computers+would++generally+have+to+fetch+fewer+instructions+from+the+main+memory%2C+which++could+be+made+slower%2C+smaller+and+less+expensive+for+a+given+combination++of+speed+and+price.%0D%0AAs+the+S%2F360+was+to+be+a+successor+to+both+scientific+machines+like+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_7090%22+title%3D%22IBM+7090%22%3E7090%3C%2Fa%3E+and+data+processing+machines+like+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_1401%22+title%3D%22IBM+1401%22%3E1401%3C%2Fa%3E%2C++it+needed+a+design+that+could+reasonably+support+all+forms+of++processing.+Hence+the+instruction+set+was+designed+to+manipulate+not++just+simple+binary+numbers%2C+but+text%2C+scientific+floating-point+%28similar++to+the+numbers+used+in+a+calculator%29%2C+and+the+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBinary_coded_decimal%22+title%3D%22Binary+coded+decimal%22%3Ebinary+coded+decimal%3C%2Fa%3E+arithmetic+needed+by+accounting+systems.%0D%0AAlmost+all+following+computers+included+these+innovations+in+some+form.+This+basic+set+of+features+is+now+called+a+%22%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComplex_Instruction_Set_Computer%22+title%3D%22Complex+Instruction+Set+Computer%22%3EComplex+Instruction+Set+Computer%3C%2Fa%3E%2C%22++or+CISC+%28pronounced+%22sisk%22%29%2C+a+term+not+invented+until+many+years++later%2C+when+RISC+%28Reduced+Instruction+Set+Computer%29+begun+to+get+market++share.%0D%0AIn+many+CISCs%2C+an+instruction+could+access+either+registers+or++memory%2C+usually+in+several+different+ways.+This+made+the+CISCs+easier+to++program%2C+because+a+programmer+could+remember+just+thirty+to+a+hundred++instructions%2C+and+a+set+of+three+to+ten+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAddressing_mode%22+title%3D%22Addressing+mode%22%3Eaddressing+modes%3C%2Fa%3E+rather+than+thousands+of+distinct+instructions.+This+was+called+an+%22%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOrthogonal_instruction_set%22+title%3D%22Orthogonal+instruction+set%22%3Eorthogonal+instruction+set%3C%2Fa%3E.%22+The+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPDP-11%22+title%3D%22PDP-11%22%3EPDP-11%3C%2Fa%3E+and+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMotorola_68000%22+title%3D%22Motorola+68000%22%3EMotorola+68000%3C%2Fa%3E+architecture+are+examples+of+nearly+orthogonal+instruction+sets.%0D%0AThere+was+also+the+%3Ci%3E%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBUNCH%22+title%3D%22BUNCH%22%3EBUNCH%3C%2Fa%3E%3C%2Fi%3E+%28%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBurroughs_Corporation%22+title%3D%22Burroughs+Corporation%22%3EBurroughs%3C%2Fa%3E%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUNIVAC%22+title%3D%22UNIVAC%22%3EUNIVAC%3C%2Fa%3E%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNCR_Corporation%22+title%3D%22NCR+Corporation%22%3ENCR%3C%2Fa%3E%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FControl_Data_Corporation%22+title%3D%22Control+Data+Corporation%22%3EControl+Data+Corporation%3C%2Fa%3E%2C+and+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHoneywell%22+title%3D%22Honeywell%22%3EHoneywell%3C%2Fa%3E%29+that+competed+against+IBM+at+this+time+though+IBM+dominated+the+era+with+S%2F360.%0D%0AThe+Burroughs+Corporation+%28which+later+merged+with+Sperry%2FUnivac+to+become+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUnisys%22+title%3D%22Unisys%22%3EUnisys%3C%2Fa%3E%29+offered+an+alternative+to+S%2F360+with+their+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBurroughs_large_systems%22+title%3D%22Burroughs+large+systems%22%3EB5000%3C%2Fa%3E++series+machines.+In+1961%2C+the+B5000+had+virtual+memory%2C+symmetric++multiprocessing%2C+a+multi-programming+operating+system+%28Master+Control++Program+or+MCP%29%2C+written+in+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FALGOL_60%22+title%3D%22ALGOL+60%22%3EALGOL+60%3C%2Fa%3E%2C+and+the+industry%27s+first+recursive-descent+compilers+as+early+as+1963.%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%221970s%3A_Large_Scale_Integration%22%3E1970s%3A+Large+Scale+Integration%3C%2Fspan%3E%3C%2Fh2%3E%0D%0AIn+the+1960s%2C+the+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FApollo_guidance_computer%22+title%3D%22Apollo+guidance+computer%22%3EApollo+guidance+computer%3C%2Fa%3E+and+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMinuteman_missile%22+title%3D%22Minuteman+missile%22%3EMinuteman+missile%3C%2Fa%3E+made+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntegrated_circuit%22+title%3D%22Integrated+circuit%22%3Eintegrated+circuit%3C%2Fa%3E+economical+and+practical.%0D%0A%3Cdiv+class%3D%22thumb+tright%22%3E%0D%0A+%3Cdiv+class%3D%22thumbinner%22+style%3D%22width%3A+182px%3B%22%3E%0D%0A%3Ca+class%3D%22image%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFile%3AKL_Intel_C8008-1.jpg%22%3E%3Cimg+alt%3D%22%22+class%3D%22thumbimage%22+height%3D%22115%22+src%3D%22http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fb%2Fba%2FKL_Intel_C8008-1.jpg%2F180px-KL_Intel_C8008-1.jpg%22+width%3D%22180%22+%2F%3E%3C%2Fa%3E+%3Cdiv+class%3D%22thumbcaption%22%3E%0D%0A+%3Cdiv+class%3D%22magnify%22%3E%0D%0A%3Ca+class%3D%22internal%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFile%3AKL_Intel_C8008-1.jpg%22+title%3D%22Enlarge%22%3E%3Cimg+alt%3D%22%22+height%3D%2211%22+src%3D%22http%3A%2F%2Fbits.wikimedia.org%2Fstatic-1.20wmf4%2Fskins%2Fcommon%2Fimages%2Fmagnify-clip.png%22+width%3D%2215%22+%2F%3E%3C%2Fa%3E%3C%2Fdiv%3E%0D%0AAn+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntel_8008%22+title%3D%22Intel+8008%22%3EIntel+8008%3C%2Fa%3E+Microprocessor%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0AAround+1971%2C+the+first+calculator+and+clock+chips+began+to+show+that+very+small+computers+might+be+possible.+The+first+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMicroprocessor%22+title%3D%22Microprocessor%22%3Emicroprocessor%3C%2Fa%3E+was+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntel_4004%22+title%3D%22Intel+4004%22%3EIntel+4004%3C%2Fa%3E%2C+designed+in+1971+for+a+calculator+company+%28%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBusicom%22+title%3D%22Busicom%22%3EBusicom%3C%2Fa%3E%29%2C+and+produced+by+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntel%22+title%3D%22Intel%22%3EIntel%3C%2Fa%3E.++In+1972%2C+Intel+introduced+a+microprocessor+having+a+different++architecture%3A+the+8008.+The+8008+is+the+direct+ancestor+of+the+current+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntel_Core%23Core_i7%22+title%3D%22Intel+Core%22%3ECore+i7%3C%2Fa%3E%2C++even+now+maintaining+code+compatibility+%28every+instruction+of+the++8008%27s+instruction+set+has+a+direct+equivalent+in+the+Intel+Core+i7%27s++much+larger+instruction+set%2C+although+the+opcode+values+are+different%29.%0D%0ABy+the+mid-1970s%2C+the+use+of+integrated+circuits+in+computers+was++commonplace.+The+whole+decade+consists+of+upheavals+caused+by+the++shrinking+price+of+transistors.%0D%0AIt+became+possible+to+put+an+entire+CPU+on+a+single+printed+circuit++board.+The+result+was+that+minicomputers%2C+usually+with+16-bit+words%2C+and++4k+to+64K+of+memory%2C+came+to+be+commonplace.%0D%0ACISCs+were+believed+to+be+the+most+powerful+types+of+computers%2C++because+their+microcode+was+small+and+could+be+stored+in+very+high-speed++memory.+The+CISC+architecture+also+addressed+the+%22semantic+gap%22+as+it++was+perceived+at+the+time.+This+was+a+defined+distance+between+the++machine+language%2C+and+the+higher+level+language+people+used+to+program+a++machine.+It+was+felt+that+compilers+could+do+a+better+job+with+a+richer++instruction+set.%0D%0ACustom+CISCs+were+commonly+constructed+using+%22bit+slice%22+computer++logic+such+as+the+AMD+2900+chips%2C+with+custom+microcode.+A+bit+slice++component+is+a+piece+of+an+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FArithmetic_logic_unit%22+title%3D%22Arithmetic+logic+unit%22%3EALU%3C%2Fa%3E%2C+register+file+or+microsequencer.+Most+bit-slice+integrated+circuits+were+4-bits+wide.%0D%0ABy+the+early+1970s%2C+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPDP-11%22+title%3D%22PDP-11%22%3EPDP-11%3C%2Fa%3E++was+developed%2C+arguably+the+most+advanced+small+computer+of+its+day.++Almost+immediately%2C+wider-word+CISCs+were+introduced%2C+the+32-bit+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FVAX%22+title%3D%22VAX%22%3EVAX%3C%2Fa%3E+and+36-bit+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPDP-10%22+title%3D%22PDP-10%22%3EPDP-10%3C%2Fa%3E.%0D%0AAlso%2C+to+control+a+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCruise_missile%22+title%3D%22Cruise+missile%22%3Ecruise+missile%3C%2Fa%3E%2C+Intel+developed+a+more-capable+version+of+its+8008+microprocessor%2C+the+8080.%0D%0AIBM+continued+to+make+large%2C+fast+computers.+However+the+definition++of+large+and+fast+now+meant+more+than+a+megabyte+of+RAM%2C+clock+speeds++near+one+megahertz+%3Ca+class%3D%22external+autonumber%22+href%3D%22http%3A%2F%2Fwww.hometoys.com%2Fmentors%2Fcaswell%2Fsep00%2Ftrends01.htm%22+rel%3D%22nofollow%22%3E%5B1%5D%3C%2Fa%3E%3Ca+class%3D%22external+autonumber%22+href%3D%22http%3A%2F%2Fresearch.microsoft.com%2Fusers%2FGBell%2FComputer_Structures_Principles_and_Examples%2Fcsp0727.htm%22+rel%3D%22nofollow%22%3E%5B2%5D%3C%2Fa%3E%2C+and+tens+of+megabytes+of+disk+drives.%0D%0AIBM%27s+System+370+was+a+version+of+the+360+tweaked+to+run+virtual+computing+environments.+The+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FVM_%2528Operating_system%2529%22+title%3D%22VM+%28Operating+system%29%22%3Evirtual+computer%3C%2Fa%3E+was+developed+in+order+to+reduce+the+possibility+of+an+unrecoverable+software+failure.%0D%0AThe+Burroughs+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBurroughs_large_systems%22+title%3D%22Burroughs+large+systems%22%3EB5000%2FB6000%2FB7000%3C%2Fa%3E+series+reached+its+largest+market+share.+It+was+a+stack+computer+whose+OS+was+programmed+in+a+dialect+of+Algol.%0D%0AAll+these+different+developments+competed+for+market+share.%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%22Early_1980s%3A_the_lessons_of_RISC%22%3EEarly+1980s%3A+the+lessons+of+RISC%3C%2Fspan%3E%3C%2Fh2%3E%0D%0AIn+the+early+1980s%2C+researchers+at+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUC_Berkeley%22+title%3D%22UC+Berkeley%22%3EUC+Berkeley%3C%2Fa%3E+and+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM%22+title%3D%22IBM%22%3EIBM%3C%2Fa%3E+both+discovered+that+most+computer+language+compilers+and+interpreters+used+only+a+small+subset+of+the+instructions+of+a+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComplex_instruction_set_computer%22+title%3D%22Complex+instruction+set+computer%22%3ECISC%3C%2Fa%3E.++Much+of+the+power+of+the+CPU+was+simply+being+ignored+in+real-world++use.+They+realized+that+by+making+the+computer+simpler+and+less++orthogonal%2C+they+could+make+it+faster+and+less+expensive+at+the+same++time.%0D%0AAt+the+same+time%2C+CPU+calculation+became+faster+in+relation+to+the++time+for+necessary+memory+accesses.+Designers+also+experimented+with++using+large+sets+of+internal+registers.+The+idea+was+to+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCPU_cache%22+title%3D%22CPU+cache%22%3Ecache%3C%2Fa%3E+intermediate+results+in+the+registers+under+the+control+of+the+compiler.+This+also+reduced+the+number+of+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAddressing_mode%22+title%3D%22Addressing+mode%22%3Eaddressing+modes%3C%2Fa%3E+and+orthogonality.%0D%0AThe+computer+designs+based+on+this+theory+were+called+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FReduced_Instruction_Set_Computer%22+title%3D%22Reduced+Instruction+Set+Computer%22%3EReduced+Instruction+Set+Computers%3C%2Fa%3E%2C++or+RISC.+RISCs+generally+had+larger+numbers+of+registers%2C+accessed+by++simpler+instructions%2C+with+a+few+instructions+specifically+to+load+and++store+data+to+memory.+The+result+was+a+very+simple+core+CPU+running+at++very+high+speed%2C+supporting+the+exact+sorts+of+operations+the+compilers++were+using+anyway.%0D%0AA+common+variation+on+the+RISC+design+employs+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHarvard_architecture%22+title%3D%22Harvard+architecture%22%3EHarvard+architecture%3C%2Fa%3E%2C+as+opposed+to+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FVon_Neumann_architecture%22+title%3D%22Von+Neumann+architecture%22%3EVon+Neumann%3C%2Fa%3E++or+Stored+Program+architecture+common+to+most+other+designs.+In+a++Harvard+Architecture+machine%2C+the+program+and+data+occupy+separate++memory+devices+and+can+be+accessed+simultaneously.+In+Von+Neumann++machines+the+data+and+programs+are+mixed+in+a+single+memory+device%2C++requiring+sequential+accessing+which+produces+the+so-called+%22Von+Neumann++bottleneck.%22%0D%0AOne+downside+to+the+RISC+design+has+been+that+the+programs+that+run+on+them+tend+to+be+larger.+This+is+because+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCompiler%22+title%3D%22Compiler%22%3Ecompilers%3C%2Fa%3E++have+to+generate+longer+sequences+of+the+simpler+instructions+to++accomplish+the+same+results.+Since+these+instructions+need+to+be+loaded++from+memory+anyway%2C+the+larger+code+size+offsets+some+of+the+RISC++design%27s+fast+memory+handling.%0D%0ARecently%2C+engineers+have+found+ways+to+compress+the+reduced++instruction+sets+so+they+fit+in+even+smaller+memory+systems+than+CISCs.++Examples+of+such+compression+schemes+include+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FARM_architecture%22+title%3D%22ARM+architecture%22%3Ethe+ARM%3C%2Fa%3E%27s++%22Thumb%22+instruction+set.+In+applications+that+do+not+need+to+run+older++binary+software%2C+compressed+RISCs+are+coming+to+dominate+sales.%0D%0AAnother+approach+to+RISCs+was+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMinimal_instruction_set_computer%22+title%3D%22Minimal+instruction+set+computer%22%3EMISC%3C%2Fa%3E%2C+%22%3Ca+class%3D%22new%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DNiladic%26amp%3Baction%3Dedit%26amp%3Bredlink%3D1%22+title%3D%22Niladic+%28page+does+not+exist%29%22%3Eniladic%3C%2Fa%3E%22++or+%22zero-operand%22+instruction+set.+This+approach+realized+that+the++majority+of+space+in+an+instruction+was+to+identify+the+operands+of+the++instruction.+These+machines+placed+the+operands+on+a+push-down+%28last-in%2C++first+out%29+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FStack_%2528data_structure%2529%22+title%3D%22Stack+%28data+structure%29%22%3Estack%3C%2Fa%3E.++The+instruction+set+was+supplemented+with+a+few+instructions+to+fetch++and+store+memory.+Most+used+simple+caching+to+provide+extremely+fast++RISC+machines%2C+with+very+compact+code.+Another+benefit+was+that+the++interrupt+latencies+were+extremely+small%2C+smaller+than+most+CISC++machines+%28a+rare+trait+in+RISC+machines%29.+The+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBurroughs_large_systems%22+title%3D%22Burroughs+large+systems%22%3EBurroughs+large+systems%3C%2Fa%3E++architecture+uses+this+approach.+The+B5000+was+designed+in+1961%2C+long++before+the+term+%22RISC%22+was+invented.+The+architecture+puts+six+8-bit++instructions+in+a+48-bit+word%2C+and+was+a+precursor+to+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FVLIW%22+title%3D%22VLIW%22%3EVLIW%3C%2Fa%3E+design+%28see+below%3A+1990+to+Today%29.%0D%0AThe+Burroughs+architecture+was+one+of+the+inspirations+for+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCharles_H._Moore%22+title%3D%22Charles+H.+Moore%22%3ECharles+H.+Moore%3C%2Fa%3E%27s+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FForth_%2528programming_language%2529%22+title%3D%22Forth+%28programming+language%29%22%3EForth+programming+language%3C%2Fa%3E%2C++which+in+turn+inspired+his+later+MISC+chip+designs.+For+example%2C+his++f20+cores+had+31+5-bit+instructions%2C+which+were+fit+four+to+a+20-bit++word.%0D%0ARISC+chips+now+dominate+the+market+for+32-bit+embedded+systems.++Smaller+RISC+chips+are+even+becoming+common+in+the+cost-sensitive+8-bit++embedded-system+market.+The+main+market+for+RISC+CPUs+has+been+systems++that+require+low+power+or+small+size.%0D%0AEven+some+CISC+processors+%28based+on+architectures+that+were+created+before+RISC+became+dominant%29%2C+such+as+newer+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FX86%22+title%3D%22X86%22%3Ex86%3C%2Fa%3E+processors%2C+translate+instructions+internally+into+a+RISC-like+instruction+set.%0D%0AThese+numbers+may+surprise+many%2C+because+the+%22market%22+is+perceived+to++be+desktop+computers.+x86+designs+dominate+desktop+and+notebook++computer+sales%2C+but+desktop+and+notebook+computers+are+only+a+tiny++fraction+of+the+computers+now+sold.+Most+people+in+industrialised++countries+own+more+computers+in+embedded+systems+in+their+car+and+house++than+on+their+desks.%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%22Mid-to-late_1980s%3A_exploiting_instruction_level_parallelism%22%3EMid-to-late+1980s%3A+exploiting+instruction+level+parallelism%3C%2Fspan%3E%3C%2Fh2%3E%0D%0AIn+the+mid-to-late+1980s%2C+designers+began+using+a+technique+known+as+%22%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInstruction_pipelining%22+title%3D%22Instruction+pipelining%22%3Einstruction+pipelining%3C%2Fa%3E%22%2C++in+which+the+processor+works+on+multiple+instructions+in+different++stages+of+completion.+For+example%2C+the+processor+may+be+retrieving+the++operands+for+the+next+instruction+while+calculating+the+result+of+the++current+one.+Modern+CPUs+may+use+over+a+dozen+such+stages.+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMinimal_instruction_set_computer%22+title%3D%22Minimal+instruction+set+computer%22%3EMISC%3C%2Fa%3E+processors+achieve+single-cycle+execution+of+instructions+without+the+need+for+pipelining.%0D%0AA+similar+idea%2C+introduced+only+a+few+years+later%2C+was+to+execute+multiple+instructions+in+parallel+on+separate+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FArithmetic_logic_unit%22+title%3D%22Arithmetic+logic+unit%22%3Earithmetic+logic+units%3C%2Fa%3E++%28ALUs%29.+Instead+of+operating+on+only+one+instruction+at+a+time%2C+the+CPU++will+look+for+several+similar+instructions+that+are+not+dependent+on++each+other%2C+and+execute+them+in+parallel.+This+approach+is+called+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSuperscalar%22+title%3D%22Superscalar%22%3Esuperscalar%3C%2Fa%3E+processor+design.%0D%0ASuch+techniques+are+limited+by+the+degree+of+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInstruction_level_parallelism%22+title%3D%22Instruction+level+parallelism%22%3Einstruction+level+parallelism%3C%2Fa%3E++%28ILP%29%2C+the+number+of+non-dependent+instructions+in+the+program+code.++Some+programs+are+able+to+run+very+well+on+superscalar+processors+due+to++their+inherent+high+ILP%2C+notably+graphics.+However+more+general++problems+do+not+have+such+high+ILP%2C+thus+making+the+achievable+speedups++due+to+these+techniques+to+be+lower.%0D%0ABranching+is+one+major+culprit.+For+example%2C+the+program+might+add++two+numbers+and+branch+to+a+different+code+segment+if+the+number+is++bigger+than+a+third+number.+In+this+case+even+if+the+branch+operation+is++sent+to+the+second+ALU+for+processing%2C+it+still+must+wait+for+the++results+from+the+addition.+It+thus+runs+no+faster+than+if+there+were++only+one+ALU.+The+most+common+solution+for+this+type+of+problem+is+to++use+a+type+of+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBranch_prediction%22+title%3D%22Branch+prediction%22%3Ebranch+prediction%3C%2Fa%3E.%0D%0ATo+further+the+efficiency+of+multiple+functional+units+which+are+available+in+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSuperscalar%22+title%3D%22Superscalar%22%3Esuperscalar%3C%2Fa%3E+designs%2C+operand+register+dependencies+was+found+to+be+another+limiting+factor.+To+minimize+these+dependencies%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOut-of-order_execution%22+title%3D%22Out-of-order+execution%22%3Eout-of-order+execution%3C%2Fa%3E++of+instructions+was+introduced.+In+such+a+scheme%2C+the+instruction++results+which+complete+out-of-order+must+be+re-ordered+in+program+order++by+the+processor+for+the+program+to+be+restartable+after+an+exception.+%3Ci%3EOut-of-Order%3C%2Fi%3E+execution+was+the+main+advancement+of+the+computer+industry+during+the+1990s.+A+similar+concept+is+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSpeculative_execution%22+title%3D%22Speculative+execution%22%3Especulative+execution%3C%2Fa%3E%2C++where+instructions+from+one+direction+of+a+branch+%28the+predicted++direction%29+are+executed+before+the+branch+direction+is+known.+When+the++branch+direction+is+known%2C+the+predicted+direction+and+the+actual++direction+are+compared.+If+the+predicted+direction+was+correct%2C+the++speculatively-executed+instructions+and+their+results+are+kept%3B+if+it++was+incorrect%2C+these+instructions+and+their+results+are+thrown+out.++Speculative+execution+coupled+with+an+accurate+branch+predictor+gives+a++large+performance+gain.%0D%0AThese+advances%2C+which+were+originally+developed+from+research+for+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRISC%22+title%3D%22RISC%22%3ERISC%3C%2Fa%3E-style++designs%2C+allow+modern+CISC+processors+to+execute+twelve+or+more++instructions+per+clock+cycle%2C+when+traditional+CISC+designs+could+take++twelve+or+more+cycles+to+execute+just+one+instruction.%0D%0AThe+resulting+instruction+scheduling+logic+of+these+processors+is++large%2C+complex+and+difficult+to+verify.+Furthermore%2C+the+higher++complexity+requires+more+transistors%2C+increasing+power+consumption+and++heat.+In+this+respect+RISC+is+superior+because+the+instructions+are++simpler%2C+have+less+interdependence+and+make+superscalar+implementations++easier.+However%2C+as+Intel+has+demonstrated%2C+the+concepts+can+be+applied++to+a+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComplex_instruction_set_computer%22+title%3D%22Complex+instruction+set+computer%22%3ECISC%3C%2Fa%3E+design%2C+given+enough+time+and+money.%0D%0A%3Cdl%3E%3Cdd%3EHistorical+note%3A+Some+of+these+techniques+%28e.g.+pipelining%29+were+originally+developed+in+the+late+1950s+by+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FInternational_Business_Machines%22+title%3D%22International+Business+Machines%22%3EIBM%3C%2Fa%3E+on+their+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIBM_7030%22+title%3D%22IBM+7030%22%3EStretch%3C%2Fa%3E+mainframe+computer.%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%221990_to_today%3A_looking_forward%22%3E1990+to+today%3A+looking+forward%3C%2Fspan%3E%3C%2Fh2%3E%0D%0A%3Ch2%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%221990_to_today%3A_looking_forward%22%3E%26nbsp%3B%3C%2Fspan%3E%3C%2Fh2%3E%0D%0A%3Ch3%3E%0D%0A%3Cspan+class%3D%22mw-headline%22+id%3D%22VLIW_and_EPIC%22%3EVLIW+and+EPIC%3C%2Fspan%3E%3C%2Fh3%3E%0D%0AThe+instruction+scheduling+logic+that+makes+a+superscalar+processor++is+just+boolean+logic.+In+the+early+1990s%2C+a+significant+innovation+was++to+realize+that+the+coordination+of+a+multiple-ALU+computer+could+be++moved+into+the+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCompiler%22+title%3D%22Compiler%22%3Ecompiler%3C%2Fa%3E%2C+the+software+that+translates+a+programmer%27s+instructions+into+machine-level+instructions.%0D%0AThis+type+of+computer+is+called+a+%3Cb%3E%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FVery_long_instruction_word%22+title%3D%22Very+long+instruction+word%22%3Every+long+instruction+word%3C%2Fa%3E%3C%2Fb%3E+%28VLIW%29+computer.%0D%0AStatically+scheduling+the+instructions+in+the+compiler+%28as+opposed+to++letting+the+processor+do+the+scheduling+dynamically%29+can+reduce+CPU++complexity.+This+can+improve+performance%2C+reduce+heat%2C+and+reduce+cost.%0D%0AUnfortunately%2C+the+compiler+lacks+accurate+knowledge+of+runtime++scheduling+issues.+Merely+changing+the+CPU+core+frequency+multiplier++will+have+an+effect+on+scheduling.+Actual+operation+of+the+program%2C+as++determined+by+input+data%2C+will+have+major+effects+on+scheduling.+To++overcome+these+severe+problems+a+VLIW+system+may+be+enhanced+by+adding++the+normal+dynamic+scheduling%2C+losing+some+of+the+VLIW+advantages.%0D%0AStatic+scheduling+in+the+compiler+also+assumes+that+dynamically+generated+code+will+be+uncommon.+Prior+to+the+creation+of+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_Virtual_Machine%22+title%3D%22Java+Virtual+Machine%22%3EJava%3C%2Fa%3E%2C+this+was+in+fact+true.+It+was+reasonable+to+assume+that+slow+compiles+would+only+affect+software+developers.+Now%2C+with+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJust-in-time_compilation%22+title%3D%22Just-in-time+compilation%22%3EJIT%3C%2Fa%3E+virtual+machines+for+Java+and+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2F.NET_Framework%22+title%3D%22.NET+Framework%22%3E.NET%3C%2Fa%3E%2C+slow+code+generation+affects+users+as+well.%0D%0AThere+were+several+unsuccessful+attempts+to+commercialize+VLIW.+The++basic+problem+is+that+a+VLIW+computer+does+not+scale+to+different+price++and+performance+points%2C+as+a+dynamically+scheduled+computer+can.+Another++issue+is+that+compiler+design+for+VLIW+computers+is+extremely++difficult%2C+and+the+current+crop+of+compilers+%28as+of+2005%29+don%27t+always++produce+optimal+code+for+these+platforms.%0D%0AAlso%2C+VLIW+computers+optimise+for+throughput%2C+not+low+latency%2C+so++they+were+not+attractive+to+the+engineers+designing+controllers+and++other+computers+embedded+in+machinery.+The+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEmbedded_system%22+title%3D%22Embedded+system%22%3Eembedded+systems%3C%2Fa%3E++markets+had+often+pioneered+other+computer+improvements+by+providing+a++large+market+that+did+not+care+about+compatibility+with+older+software.%0D%0AIn+January+2000%2C+a+company+called+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTransmeta%22+title%3D%22Transmeta%22%3ETransmeta%3C%2Fa%3E++took+the+interesting+step+of+placing+a+compiler+in+the+central++processing+unit%2C+and+making+the+compiler+translate+from+a+reference+byte++code+%28in+their+case%2C+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FX86%22+title%3D%22X86%22%3Ex86%3C%2Fa%3E++instructions%29+to+an+internal+VLIW+instruction+set.+This+approach++combines+the+hardware+simplicity%2C+low+power+and+speed+of+VLIW+RISC+with++the+compact+main+memory+system+and+software+reverse-compatibility++provided+by+popular+CISC.%0D%0A%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIntel%22+title%3D%22Intel%22%3EIntel%3C%2Fa%3E%27s+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FItanium%22+title%3D%22Itanium%22%3EItanium%3C%2Fa%3E+chip+is+based+on+what+they+call+an+%3Ca+class%3D%22mw-redirect%22+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FExplicitly_Parallel_Instruction_Computing%22+title%3D%22Explicitly+Parallel+Instruction+Computing%22%3EExplicitly+Parallel+Instruction+Computing%3C%2Fa%3E++%28EPIC%29+design.+This+design+supposedly+provides+the+VLIW+advantage+of++increased+instruction+throughput.+However%2C+it+avoids+some+of+the+issues++of+scaling+and+complexity%2C+by+explicitly+providing+in+each+%22bundle%22+of++instructions+information+concerning+their+dependencies.+This+information++is+calculated+by+the+compiler%2C+as+it+would+be+in+a+VLIW+design.+The++early+versions+are+also+backward-compatible+with+current+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FX86%22+title%3D%22X86%22%3Ex86%3C%2Fa%3E+software+by+means+of+an+on-chip+%3Ca+href%3D%22http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEmulator%22+title%3D%22Emulator%22%3Eemulation%3C%2Fa%3E+mode.+Integer+performance+was+disappointing+and+despite+improvements%2C+sales+in+volume+markets+continue+to+be+low.%0D%0A%3C%21--more--%3E%3C%2Fdd%3E%3C%2Fdl%3E%0D%0A%0D%0A%0D%0A%0D%0A%3C%2Fdiv%3E%0D%0A

0 comments:

Post a Comment