Citat:
Ursprungligen inskrivet av Zcenicx
Konsoler (speciellt Playstation och XBox 360) använder RISC-processorer som visserligen är skämt jämfört med moderna PC-processorer i ren prestanda räknat, men programmeras såpass annorlunda för att utnyttja denna prestanda till max att "konsolkod" blir väldigt jobbig för en x86-64 processor att hantera, speciellt då både PS3 och X360 kör med jämförbart många fler kärnor (3x2 i 360's och 1+6x1 i PS3's fall) och mycket fler flyttal än normala processorer använder.
Dock kan en modern 3/4-kärnig PC-processor (om än med mestadels våld och ren råstyrka) hantera minst lika mycket som dessa RISC-processorer, men det blir ändå en viss black om foten för programmerare och kräver, mycket riktigt, rätt mycket kraft ur processorn.
Det som däremot håller tillbaka spelutvecklingen är att vad gäller grafikkorten är en PC och en konsol väldigt jämförbara, kanske till och med för jämförbara.
Playstation 3's så kallade "Reality Synthesizer X" (RSX) är inget mer än ett moderniserat (65nm numera) och överklockat Geforce 7800 GT, precis som XBox 360's "Xenos" är ett Radeon x1900.
De är inte bara jämförbara med de kretsarna, de ÄR de kretsarna.
Eftersom ingendera krets stöder mer än DirectX 9.0c är de flesta spel som porteras till PC inte heller designade för mer än så, och konsolernas jämförelsevis extremt svaga grafikkort är också anledningen att utvecklingen vad gäller detaljnivå och dylikt i spelen också går väldigt långsamt. Spel som Mass Effect 2 och Final Fantasy XIII pressar helt enkelt konsolerna så långt de kan gå.
Att RISC skulle vara ett skämt är väl lite att ta i? Alla x86 processorer sedan Pentium allstå Pentium Pro och även AMD's K5 och K6 och liknande har haft RISC kärnor.
RISC betyder att man kör reducerat instrucktion sett. Reducerar transistorantalet stort på bekostnad av en viss prestanda förlust. Man ansåg helt enkelt att det var vicktigare att lägga transistorerna där dom primärt gör nytta istället för att spendera massa transistorer på fler instruktioner som knapp används.
RISC processorer kör fasta lägre på instruktionerna osv med allt för att förenkla exekveringen.
Var inte intel som kom på modärna CISC/RISC hybriden utan var AMD eller Cyrix mins inte nu men i alla fall vad man gjorde var att man tog dom delarna från CISC som decodade CISC instruktionerna från x86 och sedan stoppade in en RISC kärna i mitten enkelt utryckt. Så dom fick en CISC till RISC översättare inbyggt i processorn sedan gjorde RISC kärnan jobbet.
Därför man ofta pratar om Micro OPS som är dom nerbrutna och förenklade instruktionerna processorn exekverar i slutändan.
På så vis fick man mer prestanda och även mer prestanda per transistor och man hade bakåtkomptabiliteten kvar med gammla x86 instrucktionsettet.
Rena RISC processorer förlitar sig på kompilern är väl skriven. Man har färre isntrucktioner att tillgå men CISC processorer används sällan alla instruktioner så många är redundanta och överflödiga.
Använder man en bra kompiler så bör prestandan på en motsvarande RISC bli lika bra i dom flesta fall. Man ansåg att prestandavinsten med en mer optiemrad RISC CPU övervägde förlsuterna i dom fallen den var sämre pga avsaknaden av speciella isntrucktioner. Eftersom man slipper massa bös runtomkring kan man lägga dessa transistorer på fler kärnor eller snabbare kärnor eller helt enkelt göra en billigare processor som är ungefär lika snabb som sin CISC motsvarighet.
Xbox360 fallet tog man en PPC RISC processor. För att vara RISC så var tex G5 som är PPC extremt parrallell intern. Det snackas ofta om att i7 klarar 4 isntrucktioner per cykel. G5 hade teoretiskt 5 instruktioner per cykel. Teori och praktik skiljer dock men nu är G5 gammal som stryk med.
Man använder out of order execution och annan logik för att försöka köra många isntrucktioner i ett svep på en cykel. Beroenden uppstår allt som ofta villket kräver mycket komplicerad lokig för att lösa och data måste finnas tillgänglig så detta kräver massa transistorer åter igen för att bygge upp en sofistikerad logik för få denna interna parallellism att prestera bra.
Med Xbox 360 gick man än lägre. Ut med i princip all inbyggd parrealism, det blev en "in order execution" processor, man behöll bara väldig grundläggande intern parallellism för att exekvera mer än en instruktion per tråd åt gången i dom enklare fallen.
För att nyttja en processors kraft fullt ut i xbox 360 så la man till HT alltså Hyper Threading villket betyder att man dubblade antalet register vilket inte ökar transistorantalet lika mycket.
Filosofin är lite som med RISC där man tar bort instruktioner för att förenkla designen och lägger jobbet på kompilatorn till stor del så la man nu jobbet på programmeraren att göra programmet flertrådat och också på ett effektivt sätt. Så för att nytja alla ALU's FPU's mm effektivt krävs att varje kärna arbetar på två trådar som ja helst inte bråkar om resurserna.
Traditonella x86 processorer är snälla mot programmeraren yes vilket betyder mycket prestanda väldigt enkelt utan större optimering men dom är extremt transistorhungriga pga detta. Dagens x86 processorer utgör ca 80-85% cache 1% är vad som faktiskt gör något det som kan kallas processorn, resterande procent är prefetch logich, branch prediction logich och övrig logik som ska hjälpa processorn att göra så mycket som möjligt.
Man slängde helt enkelt ut mycket av detta för att spara transistorer med Xbox360 och gick på en CPU med mycket kraft per transistor räknat självklart till programmerarnas förtret men och andra sidan går utvecklingen dit på PC med dock mycket slöare.
SUNS Niagara är ju ett praktexempel på denna filosofi att göra så mycket som möjligt med så lite som möjligt. Där åkte det mesta vad det gäller logik som ska hjälpa processorn hämta data, förutspå en branch och vad som kommer härnäst osv och istället kunde varje kärna köra 4 trådar och istället kunde den byta tråd blixtsnabbt om den fick en cache miss på aktuella tråden. Traditionella processorer tar TID på sig att byta tråd och det annses vara DÖDEN. Villket som är effektivast beror helt på hur mjukvaran ser ut som körs på respektive processor.
För i tiden byggde man snabbare hårdvara, mer komplex hårdvara. Det ä nu förbi. Prestandan i dag hämtas via bättre mjukvara, effektivare design.
Exakt hur en Xbox360 3 kärnig processor står sig rakt av mot en x86 processor är nog svårt att säga. Den är så olik en x86.
Men för den som är intreserad av dess teoretiska Flyttals kapacitet så uppgår den till 115GFLOPS. I7 920 ligger på 42GFLOPS sisst jag kollade.
men det är bara en av många aspekter att ta in i beräkningarna.
Kan man bemästra en RISC arkitektur mjukvarumäsigt så kan det bli bra fart i sakerna och i dag är alla x86 CISC/RISC hybrider coh dom flesta RISC processorer har mer komplexa isntrucktioner också.