[From the last episode: We looked at the general principles of how a memory is organized.]
We’ve talked about lots of different parts of a memory, so now it’s time to put them together. From the memory array we looked at last week, we’re going to add decoders and sense amps to get a full memory that will give us a byteA byte is 8 bits. (or more) of output.
Pick Me!
Let’s start with the first thing we talked about needing to do to read the contents of a memory: select a word lineA line in a memory that selects which word (and its associated bit cells) will be selected for reading or writing, based on the memory address. The word lines and bit lines are orthogonal to each other, making an array of the bit cells that connect them.. We do this with a decoder. Remember that a decoder takes its input and uses it to “select” one of several outputs. That decoder input can work a lot of different ways, with different kinds of codes used to select an output. For our purposes, a simple binaryA base-2 counting system (rather than the base-10 system we usually use). Digits can be 0 or 1. addressWhen referring to memory, a binary number that shows where, within some memory block, the data you want is located. If you want to read or change that data, you have to give the address so that the right data is read or changed. is what we’ll use. That might seem obvious, but there are other ways to do it (and we won’t worry about those).
And when we say, “select,” what does that mean? Again, this might sound obvious, but it’s not. In our case, we’re going to use the obvious choice: it means taking a line and making it go to a high voltageVoltage is what gets electrons to flow. It's analogous to water pressure, which gets water to flow. Voltage is measured in units of "volts.", often interpreted as a logic 1. The line going high instead of low will be important for the upcoming machine-learning topic that we’ll get to eventually (I promise).
So we need to attach a decoder to the left of the array so that it selects the word lines. It’s a big decoder, since, in our example, it takes 13 bitsThe smallest unit of information. It is a shortened form of "binary digit." Since it's binary, it can have only two values -- typically 0 and 1. and uses them to select one of 213 word lines – that’s 8192 word lines. (The input to the decoder is shown as a thick line with a slash and a number. That indicates that it’s not just one line, but a collection of lines – also called a busA way of connecting the components of a computing system where the components all share the same wires, but a controller makes sure that only one device can put its signals on the wires at a time. – and that it has 13 lines.)
Is There Anybody Out(put) There?
Then we need to figure out how we’re going to detect the output values. There are many complex ways to do this for faster speed or lower powerThe rate of energy consumption. For electricity, it’s measured in watts (W). or whatnot, but we’re going to look at the simplest.
A bit cell effectively connects a word line to a bit lineA line in memory that can detect whether a bit cell conducts current. This is how the memory is read. The bit lines and word lines are orthogonal to each other, making an array of the bit cells that connect them. (which we’ve just showed as a square in the array), and we zoom in below to show the bit cellsA cell that stores a single bit within a memory. (Some can store more than one bit.) It connects a word line to a bit line. The bit cell can either conduct or not conduct current; those are the two states of the memory cell. a little more accurately than we have so far*. Exactly how the connection works depends on what kind of bit cell it is, but we’ll put that discussion off. For now, suffice it to say that if the word line goes high, then currentThe amount of electrical flow. Measured in amperes or amps (A). can flow through the bit cell and onto the bit line – depending on the contents of the bit cell.
The way the bit cell works is that, if it’s programmed one way – let’s say with a 1 – then the bit cell can conduct current. If it’s programmed the other way, with a 0, then no current can flow. So, in order for current to flow, two things have to happen: we must select the word line, and the bit cell must contain a 1.
Our next job, then, is to detect whether there’s any current available on the bit line. If there is, then the selected bit cell must have contained a 1. If not, then it must have contained a 0. We detect this current using the sense amp we discussed previously.
That gives us a complete memory.
We’re going to follow up with one more topic next week to complete this thought: if we read out a byte or word or something else, what if we truly want to see only a single bit?
One other quick comment: we’ve looked only at reading. Writing, or programming, is more complicated. Many of the comments – like selecting a word line – still apply, but exactly what has to happen depends strongly on the technology from which we build the bit cell. We’ll look at some of those technologies in a couple weeks, but we won’t worry about the programming details for each kind.
*Those of you that know a bit more about memories may know that there’s often a “selector” within the bit cell. It’s there for a good reason, but it’s not related to what we’re going to look at, so we’re not going to worry about it.
Leave a Reply