I dette blogginnlegget skal vi undersøke hvorfor optimalisering i grenselandet mellom maskinvare og programvare er viktig for teknologisk fremgang.
iPhone-boomen og smarttelefonboomen er et sosialt fenomen som vi alle har opplevd direkte eller indirekte, som varte i mindre enn et år og kanskje fortsatt fortsetter i dag. Smarttelefoner har hatt en vidtrekkende innvirkning som går utover utviklingen av enheter, og har påvirket livsstil og sosiale strukturer. Som et resultat har smarttelefoner blitt mer enn bare kommunikasjonsenheter; de er nå viktige verktøy for å administrere personlig informasjon og data og utføre ulike oppgaver. Det er imidlertid ikke allment kjent at denne prosessen har blitt ledsaget av et paradigmeskifte fra maskinvare til programvare og firmware. Faktisk er det lett å overse det faktum at mange av teknologiene vi bruker i hverdagen er et resultat av dette paradigmeskiftet. Studiefeltene som introduseres i denne artikkelen er grenseområdene mellom maskinvare og programvare, for eksempel operativsystemer, kompilatorer og datateknikk, hvor dette paradigmeskiftet kan merkes dypt. Begrepene «maskinvare» og «programvare» er ofte brukt, så du har sannsynligvis en generell ide om hva hver refererer til.
Det er imidlertid ofte vanskelig å forstå grensen mellom de to. Før vi diskuterer grensen mellom maskinvare og programvare, er det derfor nødvendig å kort definere maskinvare, programvare og firmware. Som navnet antyder, refererer maskinvare til harde varer, eller varer som har en fysisk form eller er vanskelige å endre. Dette inkluderer elektroniske komponenter som vi kan se og berøre, for eksempel halvledere og harddisker. Denne maskinvaren er en viktig faktor som bestemmer den grunnleggende ytelsen til enheter som datamaskiner og smarttelefoner. På den annen side refererer programvare, som navnet antyder, til myke produkter, eller produkter som ikke har en fysisk form eller er enkle å endre. Dette inkluderer operativsystemer som Windows, alle programmer som kjører på datamaskiner, og applikasjoner som brukes på smarttelefoner, som ofte omtales som programmer. Programvare gjør det mulig å bruke maskinvare effektivt og kan kontinuerlig utvikles og endres i henhold til brukerens behov. Til slutt er firmware et solid produkt som ligger mellom harde og myke produkter, og er et program som kjører på et dypere nivå for å gjøre det mulig for programvare å kjøre på maskinvare. Det mest representative eksemplet er BIOS til en datamaskin.
Grensen mellom maskinvare og programvare er imidlertid ikke nødvendigvis fastvarefeltet, som forbinder de to. Selv om de endelige målene og kategoriene for maskinvare og programvare som håndteres av de ulike feltene som er inkludert i dette grenseområdet, er forskjellige, søker de til syvende og sist harmoni mellom maskinvare og programvare, på samme måte som fastvare, som er et av verktøyene for å oppnå denne harmonien og faktisk omhandler maskinvare og programvare i større dybde. For eksempel, mens maskinvare kan gi kraftigere ytelse, må programvare kontinuerlig optimaliseres og forbedres for å maksimere potensialet til denne maskinvaren. Denne optimaliseringsprosessen er ikke en enkel modifisering av kode, men begynner med å forstå det nære samspillet mellom maskinvare og programvare.
La oss ta en rask titt på kompilatorfeltet for å se hvordan maskinvare og programvare er harmonisert. Kompilatorer oversetter oppgavene som generelle programmer skal utføre til kommandoer som datamaskiner kan forstå. For å gi et veldig enkelt eksempel, konverterer de "c = a + b" til "0001100001010011." Du skulle kanskje tro at det ville være nok å bare matche de binære tallene med de tilsvarende kommandoene, men det er ikke så enkelt fordi moderne programmer ikke bare bruker enkle aritmetiske operasjoner, og settet med binære kommandoer som må brukes varierer avhengig av maskinvareenheten. For eksempel krever små enheter som smarttelefoner effektiv kodeoptimalisering for å minimere strømforbruket, noe som betyr at en dyp forståelse av maskinvaren er viktig. Derfor er en dyp forståelse av både maskinvare og programvare nødvendig. Strengt tatt er kompilatorer i seg selv programmer og programvare, men fordi de kobler programvare og maskinvare sammen når det gjelder funksjoner, og fordi de krever en forståelse av maskinvare i motsetning til generell programvare, eksisterer de i grenseområdet mellom maskinvare og programvare. Andre felt omfatter også begge sider, noen ganger bruker de maskinvare, noen ganger bruker de programvare, og noen ganger håndterer de fastvare, hver på sin måte.
Nå som vi vet hvor grensen mellom maskinvare og programvare går, hvorfor er dette feltet et viktig forskningsområde? Uten fremskritt i grenseområdet, hvis kontaktpunktet og reglene mellom maskinvare og programvare forblir faste, vil begge sider være bundet av disse reglene, og fremgangen deres vil være begrenset. For eksempel, tidligere var teknologisk fremgang hovedsakelig drevet av forbedringer i maskinvareytelse, men i dag vil maskinvareutvikling uten programvareoptimalisering sannsynligvis avdekke sine begrensninger. Ved å holde øye med utviklingen av maskinvare og programvare og gjøre en innsats i grenseområdet for å sikre kompatibilitet mellom de to, kan imidlertid maskinvare utvikles i nye retninger med nye teknologier, for eksempel å gjøre det mulig for flere datamaskiner å jobbe sammen, i stedet for bare å øke hastigheten på en enkelt datamaskin. På programvaresiden vil det være mulig å utvikle og bruke mer avanserte språk. Dette muliggjør nye kombinasjoner av maskinvare og programvare, som til syvende og sist spiller en viktig rolle i å gi en bedre opplevelse for brukerne. Det kan være vanskelig å si at dette er kjerneområdet for teknologisk fremgang, men det er et område som sikrer teknologisk fremgang.
Til slutt vil jeg avslutte med å kort diskutere paradigmeskiftet jeg nevnte i begynnelsen. For to eller tre år siden, da jeg snakket med mine eldre elektroingeniører om grensen mellom maskinvare og programvare, rådet de fleste meg til å hoppe inn i maskinvarefeltet, som er grunnlaget for slik utvikling. Dette var sannsynligvis på grunn av deres tro på halvledere, eller maskinvare, som hadde vært drivkraften bak Koreas økonomiske vekst. Og siden ytelsen til enheter på den tiden var avhengig av maskinvaren, var perspektivet deres rimelig. Midt i iPhone-boomen og smarttelefonboomen møtte koreanske utviklere imidlertid en barriere: behovet for at programvare skulle kjøre på maskinvaren. Den største fordelen med iPhone var mangfoldet, nytten og moroa med applikasjonene som kjørte på den, så det var nødvendig å utvikle den samme programvaren og sikre innholdet. Dette var imidlertid vanskelig for utviklere som hadde fokusert på maskinvare, så programvareutviklere ble rekruttert. Dette var helt klart en rimelig strategi, men ett viktig poeng ble oversett, og nå sier et betydelig antall smarttelefonbrukere at de vil bytte til en iPhone når de bytter ut enheten sin. Det koreanske utviklere gikk glipp av var optimaliseringen mellom maskinvare og programvare, eller med andre ord, de klarte ikke å samle nok personell som fullt ut forsto grensen mellom de to. Den konstante kritikken av koreanske enheter er at «maskinvaren er utmerket, men ytelsen er dårligere enn andre produkter med dårligere maskinvare».
Derfor er grensen mellom maskinvare og programvare et område som må forskes kontinuerlig på når et nytt maskinvaremarked åpner seg eller en ny programvareplattform dukker opp. Videre vil dette grenseområdet spille en enda større rolle med fremveksten av nye teknologier. Selv om det kanskje ikke fremgår av spesifikasjonene som er oppført på overflaten, er dette et område der det gjøres en innsats for å sikre at spesifikasjonene som annonseres faktisk er det brukerne opplever.