[From the last episode: We saw some of the mistakes that can cause programs to fail and to breach securityRefers to whether or not IoT devices or data are protected from unauthorized viewers. and/or privacyRefers to whether or not information gathered about your usage of IoT devices by authorized people can be made public, or shared with others, without your consent. Different from (although related to) security, which protects such data and devices from access by unauthorized people. Different from privacy, which is more concerned about use of data by authorized people..]
We’ve seen how having more than one program or user resident as a “tenant” in a server in the cloudA generic phrase referring to large numbers of computers located somewhere far away and accessed over the internet. For the IoT, computing may be local, done in the same system or building, or in the cloud, with data shipped up to the cloud and then the result shipped back down. can create some challenges – at least with old-school computer thinking. So how do we fix that? Separating every user and program into a different server would be expensive and inefficient. What’s the alternative?
In order to talk about specific solutions, we need to talk first about a word that gets thrown around a lot in the tech world: virtualIn our context, refers to what are usually software models of some physical thing. The model behaves like the real thing except, in some cases, in performance.. We’ve already seen it used for virtual memoryA scheme for translating virtual addresses, created by a compiler, into the physical addresses representing where things are located in a real system., but that’s just the start. There’s even a verb now, to virtualize something, the process itself being referred to as virtualization.
You can think of it as the famous line, “I’m not a doctor, but I play one on TV.” A virtual something isn’t the real thing, but it behaves (mostly) like one. It’s usually a software modelA simplified representation of something real. We can create models of things in our heads without even realizing we're doing it. Technology often involves models because they let us simplify what would otherwise be extremely detailed, complicated concepts by focusing only on essential elements. of some real thing that you can use in order to pretend that you have the real thing, even if you don’t.
So, virtual memory allows programmers to pretend that they have a whole memory to themselves, when, in reality, they’ll have to share the physical memory with other processes. The memory manager makes the trick work, translating virtual addresses into real addresses. This example is a little unusual in that it’s more than just software making this work: the memory manager is usually a hardware block that makes this work.
Virtual Chip Verification
Here’s another example. Let’s say you’re a chip designer trying to create a chip that will process networkA collection of items like computers, printers, phones, and other electronic items that are connected together by switches and routers. A network allows the connected devices to talk to each other electronically. The internet is an example of an extremely large network. Your home network, if you have one, is an example of a small local network. trafficRefers to any kind of electronic message -- email, web request, streaming video, or anything else -- that travels over a network.. As with any such chip, you need to test it thoroughly before shipping it out. In fact, it’s even more dire than that. We’ve seen long ago in the past that chipsAn electronic device made on a piece of silicon. These days, it could also involve a mechanical chip, but, to the outside world, everything looks electronic. The chip is usually in some kind of package; that package might contain multiple chips. "Integrated circuit," and "IC" mean the same thing, but refer only to electronic chips, not mechanical chips. are made using photolithography, which, more or less, shines light through a maskA piece of glass with a pattern on it that is used to block light or let light pass through in different places. Used for photolithography. to create a pattern on a siliconAn element (number 14 in the periodic table) that can be a semiconductor, making it the material of preference for circuits and micro-mechanical devices. waferIn the context of making circuits, sensors, and actuators, a thin, round slice of pure silicon. Multiple devices will be made on it; it will then be sliced up to separate the individual chips..
Those masks are really expensive. So you want to be absolutely sure that your chip design is correct before you spend that money. If you don’t, then you’ll build some actual chips, find your mistake, go make changes to your design, and then buy a whole new corrected set of masks. That’s a huge no-no, and companies pay a lot of money for design tools to help ensure that the chip is correct, and they spend a lot of time doing that verification.
So, for a chip that will process network packets, you have to run a bunch of packets through the chip design to prove that it works for all conceivable scenarios. Some design verification is done with software, but where you need to run a lot of tests in a reasonable time, you need some hardware help to speed things up. So there are giant machinesIn our context, a machine is anything that isn't human (or living). That includes electronic equipment like computers and phones. called emulators that allow you to put your design into a collection of hardwarechips that can be programmed to do pretty much anything. You don’t have to build masks to do this, although the design will not run as fast as the real chip would.
Faking Network Traffic
This is a long build-up to the following question: how do you feed realistic network traffic to that chip? You want email to go through it, you want browser traffic to go through it, you want streaming data… Lots and lots of different kinds of tests. Where to find such data? Well, on the actual internet, of course. What if you plugged this emulatorIn the context of chip design, a specialized computer that can implement a model of a chip design for testing that design thoroughly prior to building real chips. into a network and grabbed the real-world traffic for testing?
In fact, that’s exactly what designers did in the past. But there are some challenges with that that we won’t get into in detail – like the fact that the traffic coming off the internet is way faster than the emulator can handle – and so this becomes cumbersome.
The new way of doing things is this: why have a physical connectionThis refers to some kind of electrical connection. It might be through a network cable, a cable connection, a wireless connection, or a phone - just to name some options. The connection might be to the internet or to some other local device. – that someone must manually plug in – when you could instead do a virtual version? This might be a dedicated box that behaves like the real internet, but isn’t the real internet. Heck, you could even put it into a room with a bunch of emulators so that designers could hook it up remotely rather than having someone come and plug it in.
Virtual: Almost Like Real
This is another example of a virtual thing: if well designed, it behaves just like a real one (except in speed), and so it becomes much easier to use in testing the chips.
“Virtual” is quite a thing these days. There are virtual copies of things like airplane engines and other real pieces of hardware. When tied to a specific physical unit, such a virtual copy is referred to as a digital twinA virtual version of a specific piece of hardware – airplane engine, car, etc. – that behaves like and mirrors the true hardware version, keeping in synch with it. Such models can often be used to predict things like wear-out before they happen.. There’s virtual medicine, where doctors may work remotely. And heck, what about virtual reality? Reality that’s not real! And we can’t forget about all of the virtual meetings and classes and parties and concerts going on during this time of social distancing.
This notion of virtual is going to be part of the key to getting cloud serversA computer with a dedicated purpose. Older familiar examples are print servers (a computer that controls local printing) and file servers (a computer used for storing files centrally). More modern examples are web servers (the computers that handle your web requests when you use your browser) or application servers (computers dedicated to handling the computing needs of a specific application). Servers are often powerful, expensive machines since they have to handle a heavy load. to deal better with multiple processes and users. We’ll look at that next.
Leave a Reply