I den här delen av boken beskriver vi de centrala egenskaperna hos molntjänster och deras inverkan på design och användning av inbäddade system. Molntjänster erbjuder en rad fördelar som kan omvandla sättet på vilket företag och utvecklare hanterar sina IT- och databehov. För många företag, särskilt de som utvecklar inbäddade system, kan valet att använda molntjänster ge stora fördelar när det gäller datalagring, processorkraft och skalbarhet. Men detta val kräver också att man beaktar ett antal tekniska och icke-tekniska faktorer, vilket kommer att vara avgörande för beslutet att använda eller inte använda molntjänster i en given situation.
Molntjänster kan delas upp i tre huvudkategorier: IaaS (Infrastructure as a Service), PaaS (Platform as a Service) och SaaS (Software as a Service). IaaS tillhandahåller sofistikerad hårdvara som kan användas av kunder för att skapa sina egna lösningar. PaaS erbjuder både hårdvara och programvara, vilket gör det möjligt för kunder att utveckla sina egna applikationer. SaaS tillhandahåller färdiga programvarupaket som användare kan prenumerera på och använda direkt utan att behöva tänka på den underliggande infrastrukturen. Genom att förstå dessa tre molnmodeller kan företag göra informerade val om vilket alternativ som passar deras behov bäst.
För företag som säljer produkter kan en avvägning uppstå mellan att använda externa molntjänstleverantörer och att själva lansera egna molntjänster. Om en produkt är beroende av stora mängder data och beräkningskraft kan det vara fördelaktigt att erbjuda en egen molnplattform för sina kunder. Detta kan ge företaget en ökad kontroll över datalagring, säkerhet och drift, men samtidigt innebär det ökade kostnader och ett större ansvar för systemets prestanda och säkerhet.
Ett vanligt argument för användning av molntjänster är att de möjliggör lagring av enorma mängder data och kan hantera komplexa beräkningar som inte skulle vara möjliga på kundens egna hårdvara. Till exempel kan ett inbäddat system som används i säkerhetslösningar för dörrar, som kräver analys av stora datamängder från flera sensorer, dra nytta av molnkapacitet för att genomföra de beräkningar som behövs för att upptäcka och svara på potentiella hot. Genom att använda molntjänster kan designers och utvecklare fokusera på att skapa specialiserade funktioner för sina applikationer medan de överlåter mer generella systemfrågor, som lagring och processorkraft, till molnleverantören.
Trots fördelarna finns det också nackdelar med att använda molntjänster. Den extra kostnaden kan vara betydande, särskilt för mindre företag eller för system som inte kräver hög beräkningskraft eller lagringskapacitet. Dessutom kan det tillkomma en viss fördröjning när data skickas till och från molnet, vilket kan påverka systemets reaktionsförmåga och prestanda. Ett annat viktigt problem är ägandet av data som skickas till molnet. Företag måste överväga vem som äger och har tillgång till den data som lagras i molnet, vilket kan innebära rättsliga och säkerhetsmässiga utmaningar.
I detta sammanhang är det också viktigt att tänka på om en privat molnmodell kan vara mer lämplig än en offentlig molnleverantör. För vissa applikationer, där säkerhet och kontroll över data är avgörande, kan en privat molnmodell vara en bättre lösning, även om den innebär högre initiala kostnader och en mer komplex infrastruktur.
Internet of Things (IoT) representerar en annan viktig aspekt när det gäller inbäddade system och molntjänster. IoT möjliggör att enheter och system som tidigare inte var anslutna kan kommunicera och utbyta data. För inbäddade system innebär detta att det finns en möjlighet att dra nytta av data och beräkningskraft som kan finnas tillgänglig via molntjänster. En bil som ansluter till trafikljus för att optimera trafikflödet, eller ett patientövervakningssystem som ansluter till olika medicinska institutioner för att ge bättre vård, är exempel på hur IoT kan förändra det sätt på vilket vi ser på system och deras interaktioner.
IoT kräver att inbäddade system är utformade för att vara flexibla och anpassningsbara för att kunna kommunicera med olika enheter, nätverk och molnplattformar. Därför måste utvecklare och designers av inbäddade system vara medvetna om de potentiella konsekvenserna av att deras system är anslutna till ett globalt nätverk, och hur deras system kan dra nytta av eller påverkas av den ständigt växande mängden data som genereras.
För att framgångsrikt utveckla IoT-applikationer är det avgörande att förstå de olika lagren i IoT-referensmodeller, som IoT World Forum-modellen. Denna modell definierar sju nivåer, där den lägsta nivån omfattar "ting" (sensorsystem och aktuatorer) och den högsta nivån inkluderar affärsapplikationer och beslutsfattande. Genom att förstå var i modellen ens system befinner sig, och vad som krävs för att ansluta det till andra enheter eller system, kan utvecklare säkerställa att deras lösningar är kompatibla med framtida IoT-standarder och kan samverka effektivt med andra system.
Slutligen är det viktigt att inse att även om teknologiska lösningar som molntjänster och IoT erbjuder enorm potential, så innebär deras användning också stora utmaningar, både tekniska och sociala. Säkerhet, integritet och äganderätt är avgörande frågor som måste tas i beaktande när man implementerar dessa teknologier i praktiken.
Hur påverkar tillgångstiden till externa minnen hastigheten i en processor?
I system med inbäddade processorer, där extern minnesåtkomst ofta är ett nödvändigt ont, är det av stor vikt att förstå hur tillgångstiden till externa variabler påverkar prestanda och driftseffektivitet. Ett centralt tema är att bearbeta data snabbt, särskilt när man arbetar med olika typer av minnessystem. Här behandlas exempel där vi jämför parallell och seriell åtkomst till minne för att analysera vilken metod som är mer effektiv beroende på situationen.
När en processor måste läsa in en array av N byte, kommer tiden för att överföra dessa byte att variera beroende på om den använder parallell eller seriell överföring. För parallell överföring, där varje byte överförs samtidigt, är åtkomsttiden för varje byte 2 mikrosekunder. Tiden som spenderas på att överföra de N byte kommer alltså vara direkt beroende av antalet byte som ska överföras, utan att behöva ta hänsyn till ytterligare programöverhead, som registrering av byte eller uppdatering av adressregister.
Vid seriell överföring däremot krävs ett mer komplext steg där först en kommandobyte och tre adressbyte skickas till minnet, följt av själva dataöverföringen. Här spelar överföringshastigheten en avgörande roll, där varje bit kräver 100 nanosekunder. Dessutom krävs för varje byte som hämtas ytterligare åtta klockpulser. Vid sådana överföringar är det viktigt att beakta inte bara själva dataöverföringstiden utan även de overheads som krävs för att läsa och skriva adresser.
För att jämföra de två metoderna och fastställa när parallell åtkomst är snabbare än seriell åtkomst, är det viktigt att räkna på den totala tiden som krävs för att överföra en viss mängd data. För parallell åtkomst är denna tid linjärt beroende av antalet byte, medan seriell åtkomst har både overhead för att skriva adresser och en sekventiell överföring av data. Därför tenderar parallell åtkomst att vara snabbare vid små datamängder, medan seriell åtkomst kan vara mer effektiv vid stora mängder data, beroende på den specifika hårdvarukonfigurationen.
Vid val av minneshantering i system som använder minnesblock som scratchpadminne är det en konstant avvägning mellan att hålla data i snabbt åtkomligt minne och att använda större men långsammare externa minnen. En processor med en scratchpad på 1 Kbyte kommer att ha snabbare åtkomst till dessa data jämfört med externa minnen, men om programmet använder stora mängder data kan det bli nödvändigt att lagra vissa arrayer i extern minne för att undvika att processen blockeras av för små scratchpadresurser.
I ett exempel med sex olika arrayer, där varje array har en viss storlek och antal åtkomster, kan man räkna på den totala åtkomsttiden om olika arrayer hålls i scratchpadminnet eller i externa minnen. Om en array är lagrad i scratchpadminnet, där åtkomsttiden är betydligt kortare än för externa minnen, kan detta minska den totala åtkomsttiden för systemet. Till exempel om array B (med 1024 byte och 3072 åtkomster) lagras i scratchpad, och de andra arrayerna hålls i externa minnen, kan detta optimera prestanda jämfört med om hela datamängden lagrades i extern minne.
För att optimera minnesanvändningen och därmed den totala åtkomsttiden i ett system måste man noggrant analysera vilken data som är mest använd och därför bör lagras i scratchpadminnet. Detta innebär en balansgång mellan att lagra stora mängder data i externa minnen och att lagra små, ofta åtkomna dataset i scratchpadminnet.
Vid användning av minnesskydd i system är det också viktigt att välja lämpliga skyddsmetoder för olika typer av minnesområden. För kodutrymmen är det lämpligt att använda skrivskydd, eftersom koden inte bör ändras under körning. För konfigurationsdata kan både exekveringsskydd och skrivskydd vara nödvändiga, medan applikationsdata och scratchpadminne kan ha andra krav beroende på systemets specifika behov.
När man överväger att använda FPGAs (Field-Programmable Gate Arrays) i inbäddade system, till exempel som en del av en system-on-chip (SoC), öppnas nya möjligheter att implementera hela systemfunktioner på en enda chip. FPGA:er ger möjlighet att programmera och omprogrammera logiska funktioner för att passa specifika applikationer, vilket gör det möjligt att skapa skräddarsydda lösningar för högpresterande och realtidskritiska tillämpningar. FPGAs kan implementera funktioner som är tidskritiska, där snabb databehandling är avgörande för applikationens framgång.
En processor med inbyggda FPGA-funktioner kan till exempel användas för att snabba upp digital signalbehandling eller video-/ljudapplikationer, där en fördröjning på några millisekunder kan vara oacceptabel. Här kan algoritmer som vanligtvis körs på CPU:n istället implementeras direkt i hårdvara för att uppnå maximal hastighet.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский