Ursprungligen inskrivet av KimTjik
Ett litet önskemål inför lanseringen av 64 kärnor CPUs (artikeln lär ju betyda att priset också hamnar i konsumentnivå):
- Utveckla instruktioner som gör det möjligt att i ett nätverk t ex isolera en användare till en kärna (vid inloggning tilldelas användaren en kärna)
- Låt minnekontrollern bli kapabel att allokera ett exklusivt område av internminnet per användare
Eller den möjligheten kanske redan finns?
Sådana instruktioner är på för hög nivå för att kunna göras i processorn. Möjligen skulle de kunna göra instruktioner eller principer som hjälper detta. Som att skydda sig mot skadlig kod (virus) kör hur som helst så kan vissa områden av minnet flaggas med "no execute" biten. Då blir det omöjligt för hårdvaran att köra instruktionspekaren från det stället. Men det är inte den färdiga lösningen.
Båda dina förslag kan OS:et ta hand om. Men jag vill hävda att det är en dålig idé att så här distinkt dela upp resurserna. Det är bättre med en pool som alla får använda av.
Vi tar ett exempel
Det finns x antal fraktdotterföretag (processer) som inom samma moderbolag (operativsystemet (schemaläggaren)) äger 64 lastbilar. Första problemet: Man kan inte ha ett enda fraktföretag mer då det bara finns 64 lastbilar att tillgå.
Använder de istället en gemensam pool där lastbilarna används när de behövs så kan hur många företag som helst finnas. Sen det normala för varje företag är att de kanske kör 1 pall 1 km bara (låg processoranvändning). Väldigt ineffektivt. Men något företag kanske har 100 pallar som de behöver frakta snabbt (hög processoranvändning). I första modellen så har företaget bara 1 lastbil och måste åka fram och tillbaka massvis. I det senare med poolen så kan de direkt ta 5 lastbilar eller hur många det nu krävs.
Men nu skulle ett ensamt företag kunna använda alla lastbilar och att blockera för de andra (process starvation). Men här har schemaläggaren ansvaret att om ett företag inte fått köra på "länge" så får de köra fast det är väldigt lite de ska göra, bara för att få snabb responstid.
Denna lösning för processexekveringen är lämplig för persondatorer och terminalservrar där många ska dela på samma resurser fast de inte använder det till max. Det är resursslöseri att exklusivt tilldela varje användare 1 kärna.
Tittar man på superdatorer, alltså kluster som används för högprestandaberäkningar så har man istället så att de olika användarna får ansöka om processortid (till ett schemaläggarprogram). När ens tur kommer så får man exklusiv tillgång till alla processorer (eller en begränsad partition av klustret). Man vill unvika massa process switching och man vet att användarna skriver program som (förhoppningsvis) utnyttjar beräkningsprestandan till max.
Ursprungligen inskrivet av m3tr0
Vet inte. Men jag kom att tänka på virtualiseringstekniken som finns i de nyare processorerna (Phenom åtminstone). Med den så kan man köra flera OS samtidigt och jag tror att de har varsin kärna dedikerad till sig själva eller nåt. Kanske inte riktigt det du är ute efter, dock.
http://en.wikipedia.org/wiki/X86_virtualization
Man kunde redan tidigare köra flera operativsystem samtidigt i virtuella maskiner. Problemet är dock att vissa instruktioner som används i kernel mode (ring 0) måste tolkas. Ett gästoperativsystem kan inte få tillgång till dessa på hosten. Med de här virtualiseringsteknikerna (intel VT och AMD-V) tror jag gör att processorn själv kan ge illusionen av detta. Det snabbare upp exekveringen. Detta säger inget om dedikering av kärnor.
Ursprungligen inskrivet av TubularBoy
Har länge funderat på när grafikkortsutvecklarna ska börja göra GPU's med flera kärnor.
Kanske är buss-hastigheten som sätter stopp för fler än två?
Idag får man ju knappt plats med två stycken nvidia 9800GX2 i vanliga lådor.
En GPU är i naturen väldigt parallelliserad. 8800GTX innehåller ju 128 streamprocessorer. Eftersom vad grafikkortet ska göra är väldigt specifikt likartat med olika data så kan man öka antalet streamprocessorer som de kallas (eller pipes för väl?) och få mer prestanda. Totalt för hela grafikkortet så ska man ju uppnå samma resultat vid varje gång - en och samma bild.
Man skulle kunna vända på det och säga att de har 128 simpla kärnor (nästan säga det iaf).
Nvidias G80 GPU har 681 miljoner transistorer och upptar en yta av 480 mm^2. Tillverkad på 90nm process. Man kan jämföra med conroe-processorkärnan (dual core). Den har väldigt många transistorer också (hittade ingen siffra nu) och tillverkad på 64nm. Men ytan är 143 mm^2.a
Så G80-kretsen är ett monster. Att klämma in två stycken sådana i samma die ger nog väldigt mycket bekymmer. Bättre att förbättre arkitekturen och öka antalet streamprocessorer i samma processor. Ska man ha helt olika kärnor så får man flytta ut till separata krestar som det görs nu med SLI och crossfire.
Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG