[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:19.09,Default,,0000,0000,0000,,{\i1}36c3 preroll music{\i0} Dialogue: 0,0:00:19.09,0:00:24.93,Default,,0000,0000,0000,,Herald: Our next talk will be "The\Nultimate Acorn Archimedes Talk", in which Dialogue: 0,0:00:24.93,0:00:28.82,Default,,0000,0000,0000,,there will be spoken about everything\Nabout the Archimedes computer. There's a Dialogue: 0,0:00:28.82,0:00:33.36,Default,,0000,0000,0000,,promise in advance that there will be no\Nheureka jokes in there. Give a warm Dialogue: 0,0:00:33.36,0:00:35.48,Default,,0000,0000,0000,,welcome to Matt Evans. Dialogue: 0,0:00:35.48,0:00:40.79,Default,,0000,0000,0000,,{\i1}applause{\i0} Dialogue: 0,0:00:40.79,0:00:48.06,Default,,0000,0000,0000,,Matt Evans: Thank you. Okay. Little bit of\Nretro computing first thing in the Dialogue: 0,0:00:48.06,0:00:54.95,Default,,0000,0000,0000,,morning, sort of. Welcome. My name is Matt\NEvans. The Acorn Archimedes was my Dialogue: 0,0:00:54.95,0:00:59.38,Default,,0000,0000,0000,,favorite computer when I was a small\Nhacker and I'm privileged to be able to Dialogue: 0,0:00:59.38,0:01:04.78,Default,,0000,0000,0000,,talk a bit little bit about it with you\Ntoday. Let's start with: What is an Acorn Dialogue: 0,0:01:04.78,0:01:08.72,Default,,0000,0000,0000,,Archimedes? So I'd like an interactive\Nsession, I'm afraid. Please indulge me, Dialogue: 0,0:01:08.72,0:01:15.13,Default,,0000,0000,0000,,like a show of hands. Who's heard of the\NAcorn Archimedes before? Ah, OK, maybe 50, Dialogue: 0,0:01:15.13,0:01:23.09,Default,,0000,0000,0000,,60%. Who has used one? Maybe 10%,\Nmaybe. Okay. Who has programs - Dialogue: 0,0:01:23.09,0:01:30.14,Default,,0000,0000,0000,,who has coded on an Archimedes? Maybe\Nhalf? Two, three people. Great. Okay. Dialogue: 0,0:01:30.14,0:01:34.18,Default,,0000,0000,0000,,Three. {\i1}laughs{\i0} Okay, so a small\Npercentage. I don't see these machines as Dialogue: 0,0:01:34.18,0:01:39.65,Default,,0000,0000,0000,,being as famous as say the Apple Macintosh\Nor IBM PC. And certainly outside of Europe Dialogue: 0,0:01:39.65,0:01:44.03,Default,,0000,0000,0000,,they were not that common. So this is kind\Nof interesting just how many people here Dialogue: 0,0:01:44.03,0:01:49.84,Default,,0000,0000,0000,,have seen this. So it was the first ARM-\Nbased computer. This is an astonishingly Dialogue: 0,0:01:49.84,0:01:55.53,Default,,0000,0000,0000,,1980s - I think one of them is drawing,\Nactually. But they're not just the first Dialogue: 0,0:01:55.53,0:02:01.44,Default,,0000,0000,0000,,ARM-based machine, but the machine that\Nthe ARM was originally designed to drive. Dialogue: 0,0:02:01.44,0:02:07.23,Default,,0000,0000,0000,,It's a... Is that a comment for me?\NMic? Dialogue: 0,0:02:07.23,0:02:13.75,Default,,0000,0000,0000,,I'm being heckled already. It's only slide\Ntwo. Let's see how this goes. So it's a Dialogue: 0,0:02:13.75,0:02:18.85,Default,,0000,0000,0000,,two box computer. It looks a bit like a\NMega S.T. ... to me. Its main unit with Dialogue: 0,0:02:18.85,0:02:26.48,Default,,0000,0000,0000,,the processor and disks and expansion\Ncards and so on. Now this is an A3000. Dialogue: 0,0:02:26.48,0:02:30.52,Default,,0000,0000,0000,,This is mine, in fact, and I didn't bother\Nto clean it before taking the photo. And Dialogue: 0,0:02:30.52,0:02:33.34,Default,,0000,0000,0000,,now it's on this huge screen. That was a\Nreally bad idea. You can see all the Dialogue: 0,0:02:33.34,0:02:37.43,Default,,0000,0000,0000,,disgusting muck in the keyboard. It has a\Nbit of ink on it, I don't know why. But Dialogue: 0,0:02:37.43,0:02:41.66,Default,,0000,0000,0000,,this machine is 30 years old. And\Nthis was luckily my machine, as I said, as Dialogue: 0,0:02:41.66,0:02:45.07,Default,,0000,0000,0000,,a small hacker. And this is why I'm doing\Nthe talk today. This had a big influence Dialogue: 0,0:02:45.07,0:02:52.54,Default,,0000,0000,0000,,on me. I'd like to say as a person, but\Nmore as an engineer. In terms of what my Dialogue: 0,0:02:52.54,0:02:57.17,Default,,0000,0000,0000,,programing experience when I was learning\Nto program and so on. So I live and work Dialogue: 0,0:02:57.17,0:03:02.04,Default,,0000,0000,0000,,in Cambridge in the U.K., where this\Nmachine was designed. And through the Dialogue: 0,0:03:02.04,0:03:05.47,Default,,0000,0000,0000,,funny sort of turn of events, I ended up\Nthere and actually work in the building Dialogue: 0,0:03:05.47,0:03:09.31,Default,,0000,0000,0000,,next to the building where this was\Ndesigned. And a bunch of the people that Dialogue: 0,0:03:09.31,0:03:13.72,Default,,0000,0000,0000,,were on that original team that designed\Nthis system are still around and Dialogue: 0,0:03:13.72,0:03:18.28,Default,,0000,0000,0000,,relatively contactable. And I thought this\Nis a good opportunity to get on the phone Dialogue: 0,0:03:18.28,0:03:21.76,Default,,0000,0000,0000,,and call them up or go for a beer with a\Ncouple of them and ask them: Why are Dialogue: 0,0:03:21.76,0:03:25.28,Default,,0000,0000,0000,,things the way they are? There's all sorts\Nof weird quirks to this machine. I was Dialogue: 0,0:03:25.28,0:03:28.90,Default,,0000,0000,0000,,always wondering this, for 20 years. Can\Nyou please tell me - why did you do it Dialogue: 0,0:03:28.90,0:03:33.33,Default,,0000,0000,0000,,this way? And they were a really good bunch\Nof people. So I talked to Steve Ferber, Dialogue: 0,0:03:33.33,0:03:37.79,Default,,0000,0000,0000,,who led the hardware design, Sophie\NWilson, who was the same with software. Dialogue: 0,0:03:37.79,0:03:43.35,Default,,0000,0000,0000,,Tudor Brown, who did the video system.\NMike Miller, the IO system. John Biggs and Dialogue: 0,0:03:43.35,0:03:46.49,Default,,0000,0000,0000,,Jamie Urquhart , who did the silicon\Ndesign, I spoiled one of the Dialogue: 0,0:03:46.49,0:03:50.14,Default,,0000,0000,0000,,surprises here. There's been some silicon\Ndesign that's gone on in building this Dialogue: 0,0:03:50.14,0:03:55.06,Default,,0000,0000,0000,,Acorn. And they were all wonderful people\Nthat gave me their time and told me a Dialogue: 0,0:03:55.06,0:03:59.55,Default,,0000,0000,0000,,bunch of anecdotes that I will pass on to\Nyou. So I'm going to talk about the Dialogue: 0,0:03:59.55,0:04:04.52,Default,,0000,0000,0000,,classic Arc. There's a bunch of different\Nmachines that Acorn built into the 1990s. Dialogue: 0,0:04:04.52,0:04:08.96,Default,,0000,0000,0000,,But the ones I'm talking about started in\N1987. There were 2 models, effectively a Dialogue: 0,0:04:08.96,0:04:14.97,Default,,0000,0000,0000,,low end and a high end. One had an option\Nfor a hard disk, 20 megabytes, 2300 Dialogue: 0,0:04:14.97,0:04:20.70,Default,,0000,0000,0000,,pounds, up to 4MB of RAM. They all share\Nthe same basic architecture, they're all Dialogue: 0,0:04:20.70,0:04:25.82,Default,,0000,0000,0000,,basically the same. So the A3000 that I\Njust showed you came out in 1989. That was Dialogue: 0,0:04:25.82,0:04:29.60,Default,,0000,0000,0000,,the machine I had. Those again, the same.\NIt had the memory controller slightly Dialogue: 0,0:04:29.60,0:04:35.97,Default,,0000,0000,0000,,updated, was slightly faster. They all had\Nan ARM 2. This was the released version of Dialogue: 0,0:04:35.97,0:04:40.91,Default,,0000,0000,0000,,the ARM processor designed for this\Nmachine, at 8 MHz. And then finally in Dialogue: 0,0:04:40.91,0:04:46.25,Default,,0000,0000,0000,,1990, what I call the last of the classic\NArc, Archimedes, is the A540. This was the Dialogue: 0,0:04:46.25,0:04:50.72,Default,,0000,0000,0000,,top end machine - could have up to\N16 MB of memory, which is a fair bit Dialogue: 0,0:04:50.72,0:04:57.60,Default,,0000,0000,0000,,even in 1990. It had a 30 MHz ARM 3. The\NARM 3 was the evolution of the ARM 2, but Dialogue: 0,0:04:57.60,0:05:02.13,Default,,0000,0000,0000,,with a cache and a lot faster. So this\Ntalk will be centered around how these Dialogue: 0,0:05:02.13,0:05:08.82,Default,,0000,0000,0000,,machines work, not the more modern\Nmachines. So around 1987, what else Dialogue: 0,0:05:08.82,0:05:13.76,Default,,0000,0000,0000,,was available? This is a random selection\Nof machines. Apologies if your favorite Dialogue: 0,0:05:13.76,0:05:18.49,Default,,0000,0000,0000,,machine is not on this list. It wouldn't\Nfit on the slide otherwise. So at the Dialogue: 0,0:05:18.49,0:05:22.11,Default,,0000,0000,0000,,start of the 80s, we had the exotic things\Nlike the Apple Lisa and the Apple Mac. Dialogue: 0,0:05:22.11,0:05:28.72,Default,,0000,0000,0000,,Very expensive machines. The Amiga - I had\Nto put in here. Started off relatively Dialogue: 0,0:05:28.72,0:05:32.53,Default,,0000,0000,0000,,expensive because the Amiga 500 was, you\Nknow, very good value for money, very Dialogue: 0,0:05:32.53,0:05:37.16,Default,,0000,0000,0000,,capable machine. But I'm comparing this\Nmore to PCs and Macs, because that was the Dialogue: 0,0:05:37.16,0:05:41.95,Default,,0000,0000,0000,,sort of, you know, market it was going\Nfor. And although it was an expensive Dialogue: 0,0:05:41.95,0:05:46.79,Default,,0000,0000,0000,,machine compared to Macintosh, it was\Npretty cheap. Even put NeXT Cube on there, Dialogue: 0,0:05:46.79,0:05:49.89,Default,,0000,0000,0000,,I figured that... I'd heard that they were\Nincredibly expensive. And actually Dialogue: 0,0:05:49.89,0:05:53.64,Default,,0000,0000,0000,,compared to the Macintosh, they're not\Nthat expensive at all. Well I don't know Dialogue: 0,0:05:53.64,0:05:57.93,Default,,0000,0000,0000,,which one I would have preferred. So the\Nfirst question I asked them - the first Dialogue: 0,0:05:57.93,0:06:02.97,Default,,0000,0000,0000,,thing they told me: Why was it built? I've\Nused them in school and as I said, had one Dialogue: 0,0:06:02.97,0:06:08.56,Default,,0000,0000,0000,,at home. But I was never really quite sure\Nwhat it was for. And I think a lot of the Dialogue: 0,0:06:08.56,0:06:11.85,Default,,0000,0000,0000,,Acorn marketing wasn't quite sure what it\Nwas for either. They told me it was the Dialogue: 0,0:06:11.85,0:06:15.94,Default,,0000,0000,0000,,successor to the BBC Micro, this 8 bit\Nmachine. Lovely 6502 machine, incredibly Dialogue: 0,0:06:15.94,0:06:20.10,Default,,0000,0000,0000,,popular, especially in the UK. And the\Ngoal was to make a machine that was 10 Dialogue: 0,0:06:20.10,0:06:23.77,Default,,0000,0000,0000,,times the performance of this. The\Nsuccessor would be 10 times faster at the Dialogue: 0,0:06:23.77,0:06:29.68,Default,,0000,0000,0000,,same price. And the thing I didn't know is\Nthey had been inspired. The team Acorn had Dialogue: 0,0:06:29.68,0:06:35.62,Default,,0000,0000,0000,,seen the Apple Lisa and the Xerox Star,\Nwhich comes from the famous Xerox Alto, Dialogue: 0,0:06:35.62,0:06:41.14,Default,,0000,0000,0000,,Xerox PARC, first GUI workstation in the\N70s, monumental machine. They'd been Dialogue: 0,0:06:41.14,0:06:44.69,Default,,0000,0000,0000,,inspired by these machines and they wanted\Nto make something very similar. So this is Dialogue: 0,0:06:44.69,0:06:49.19,Default,,0000,0000,0000,,the same story as the Macintosh. They\Nwanted to make something that was desktop Dialogue: 0,0:06:49.19,0:06:52.31,Default,,0000,0000,0000,,machine for business, for office\Nautomation, desktop publishing and that Dialogue: 0,0:06:52.31,0:06:56.27,Default,,0000,0000,0000,,kind of thing. But I never really\Nunderstood this before. So this was this Dialogue: 0,0:06:56.27,0:07:01.65,Default,,0000,0000,0000,,inspiration came from the Xerox machines.\NIt was supposed to be obviously a lot more Dialogue: 0,0:07:01.65,0:07:06.68,Default,,0000,0000,0000,,affordable and a lot faster. So this is\Nwhat happens when Acorn marketing gets Dialogue: 0,0:07:06.68,0:07:12.02,Default,,0000,0000,0000,,hold of this vision. So Xerox Star on the\Nleft is this nice, sensible business Dialogue: 0,0:07:12.02,0:07:15.21,Default,,0000,0000,0000,,machine. Someone's wearing nice, crisp\Nsuit {\i1}bumps microphon{\i0} banging their Dialogue: 0,0:07:15.21,0:07:20.47,Default,,0000,0000,0000,,microphone - and it gets turned into the\Nvery Cambridge Tweed version on the right. Dialogue: 0,0:07:20.47,0:07:24.41,Default,,0000,0000,0000,,It's apparently illegal to program one of\Nthese if you're not wearing a top hat. But Dialogue: 0,0:07:24.41,0:07:28.85,Default,,0000,0000,0000,,no one told me that when I was a kid. And\Nmy court case comes up next week. So Dialogue: 0,0:07:28.85,0:07:32.24,Default,,0000,0000,0000,,Cambridge is a bit of a funny place. And\Nfor those that been there, this picture on Dialogue: 0,0:07:32.24,0:07:38.68,Default,,0000,0000,0000,,the right sums it all up. So they began\NProject A, which was build this new Dialogue: 0,0:07:38.68,0:07:43.24,Default,,0000,0000,0000,,machine. And they looked at the\Nalternatives. They looked at the Dialogue: 0,0:07:43.24,0:07:49.56,Default,,0000,0000,0000,,processors that were available at that\Ntime, the 286, the 68 K, then that semi Dialogue: 0,0:07:49.56,0:07:55.06,Default,,0000,0000,0000,,32016, which was an early 32 bit\Nmachine, a bit of a weird processor. And Dialogue: 0,0:07:55.06,0:07:58.03,Default,,0000,0000,0000,,they all had something in common that\Nthey're ridiculously expensive and in Dialogue: 0,0:07:58.03,0:08:02.76,Default,,0000,0000,0000,,Tudors words a bit crap. They weren't a\Nlot faster than the BBC Micro. They're a Dialogue: 0,0:08:02.76,0:08:06.62,Default,,0000,0000,0000,,lot more expensive. They're much more\Ncomplicated in terms of the processor Dialogue: 0,0:08:06.62,0:08:10.49,Default,,0000,0000,0000,,itself. But also the system around them\Nwas very complicated. They need lots of Dialogue: 0,0:08:10.49,0:08:15.40,Default,,0000,0000,0000,,weird support chips. This just drove the\Nprice up of the system and it wasn't going Dialogue: 0,0:08:15.40,0:08:20.40,Default,,0000,0000,0000,,to hit that 10 times performance, let\Nalone at the same price point. They'd Dialogue: 0,0:08:20.40,0:08:24.10,Default,,0000,0000,0000,,visited a couple of other companies\Ndesigning their own custom silicon. They Dialogue: 0,0:08:24.10,0:08:28.09,Default,,0000,0000,0000,,got this idea in about 1983. They were\Nlooking at some of the RISC papers coming Dialogue: 0,0:08:28.09,0:08:31.33,Default,,0000,0000,0000,,out of Berkeley and they were quite\Nimpressed by what a bunch of grad students Dialogue: 0,0:08:31.33,0:08:38.07,Default,,0000,0000,0000,,were doing. They managed to get a working\NRISC processor and they went to Western Dialogue: 0,0:08:38.07,0:08:42.14,Default,,0000,0000,0000,,Design Center and looked at 6502\Nsuccessors being design there. They had a Dialogue: 0,0:08:42.14,0:08:45.21,Default,,0000,0000,0000,,positive experience. They saw a bunch of\Nhigh school kids with Apple 2s doing Dialogue: 0,0:08:45.21,0:08:48.93,Default,,0000,0000,0000,,silicon layout. And they though "OK,\Nwell". They'd never designed a CPU before Dialogue: 0,0:08:48.93,0:08:53.31,Default,,0000,0000,0000,,at ACORN. ACORN hadn't done any custom\Nsilicon to this degree, but they were Dialogue: 0,0:08:53.31,0:08:57.16,Default,,0000,0000,0000,,buoyed by this and they thought, okay,\Nwell, maybe RISC is the secret and we can Dialogue: 0,0:08:57.16,0:09:02.25,Default,,0000,0000,0000,,do this. And this was not really the done\Nthing in this timeframe and not for a Dialogue: 0,0:09:02.25,0:09:05.89,Default,,0000,0000,0000,,company the size of ACORN, but they\Ndesigned their computer from scratch. They Dialogue: 0,0:09:05.89,0:09:09.20,Default,,0000,0000,0000,,designed all of the major pieces of\Nsilicon in this machine. And it wasn't Dialogue: 0,0:09:09.20,0:09:12.38,Default,,0000,0000,0000,,about designing the ARM chip. Hey, we've\Ngot a processor core. What should we do Dialogue: 0,0:09:12.38,0:09:16.00,Default,,0000,0000,0000,,with it? But it was about designing the\Nmachine that ARM and the history of that Dialogue: 0,0:09:16.00,0:09:20.31,Default,,0000,0000,0000,,company has kind of benefited from. But\Nthis is all about designing the machine as Dialogue: 0,0:09:20.31,0:09:26.71,Default,,0000,0000,0000,,a whole. They're a tiny team. They're a\Nhandful of people - about a dozen...ish Dialogue: 0,0:09:26.71,0:09:30.78,Default,,0000,0000,0000,,that did the hardware design, a similar\Nsort of order for software and operating Dialogue: 0,0:09:30.78,0:09:36.21,Default,,0000,0000,0000,,systems on top, which is orders of\Nmagnitude different from IBM and Motorola Dialogue: 0,0:09:36.21,0:09:40.95,Default,,0000,0000,0000,,and so forth that were designing computers\Nat this time. RISC was the key. They Dialogue: 0,0:09:40.95,0:09:44.32,Default,,0000,0000,0000,,needed to be incredibly simple. One of the\Nother experiences they had was they went Dialogue: 0,0:09:44.32,0:09:48.82,Default,,0000,0000,0000,,to a CISC processor design center. They\Nhad a team in a couple of hundred people Dialogue: 0,0:09:48.82,0:09:52.65,Default,,0000,0000,0000,,and they were on revision H and it still\Nhad bugs and it was just this unwieldy, Dialogue: 0,0:09:52.65,0:09:58.16,Default,,0000,0000,0000,,complex machine. So RISC was the secret.\NSteve Ferber has an interview somewhere. Dialogue: 0,0:09:58.16,0:10:03.47,Default,,0000,0000,0000,,He jokes about ACORN management giving him\Ntwo things. Special sauce was two things Dialogue: 0,0:10:03.47,0:10:07.81,Default,,0000,0000,0000,,that no one else had: He'd no people and\Nno money. So it had to be incredibly Dialogue: 0,0:10:07.81,0:10:14.71,Default,,0000,0000,0000,,simple. It had to be built on a\Nshoestring, as Jamie said to me. So there Dialogue: 0,0:10:14.71,0:10:18.46,Default,,0000,0000,0000,,are lots of corners cut, but in the right\Nway. I would say "corners cut", that Dialogue: 0,0:10:18.46,0:10:23.22,Default,,0000,0000,0000,,sounds ungenerous. There's some very\Nshrewd design decisions, always weighing Dialogue: 0,0:10:23.22,0:10:30.21,Default,,0000,0000,0000,,up cost versus benefit. And I think they\Nerred on the correct side for all of them. Dialogue: 0,0:10:30.21,0:10:34.48,Default,,0000,0000,0000,,So Steve sent me this picture. That's he's\Ngot a cameo here. That's the outline of Dialogue: 0,0:10:34.48,0:10:39.18,Default,,0000,0000,0000,,him in the reflection on the glass there.\NHe's got this up in his office. So he Dialogue: 0,0:10:39.18,0:10:43.63,Default,,0000,0000,0000,,led the hardware design of all of these\Nchips at ACORN. Across the top, we've got Dialogue: 0,0:10:43.63,0:10:49.45,Default,,0000,0000,0000,,the original ARM, the ARM 1, ARM 2 and the\NARM 3 - guess the naming scheme - and the Dialogue: 0,0:10:49.45,0:10:53.09,Default,,0000,0000,0000,,video controller, memory controller and IO\Ncontroller. Think, sort of see their Dialogue: 0,0:10:53.09,0:10:57.32,Default,,0000,0000,0000,,relative sizes and it's kind of pretty.\NThis was also on a processor where you Dialogue: 0,0:10:57.32,0:11:00.93,Default,,0000,0000,0000,,could really point at that and say, "oh,\Nthat's the register file and you can see Dialogue: 0,0:11:00.93,0:11:07.21,Default,,0000,0000,0000,,the cache over there". You can't really do\Nthat nowadays with modern processors. So Dialogue: 0,0:11:07.21,0:11:11.08,Default,,0000,0000,0000,,the bit about the specification, what it\Ncould do, the end product. So I mentioned Dialogue: 0,0:11:11.08,0:11:16.85,Default,,0000,0000,0000,,they all had this ARM 2 8MHz, up to four\NMB of RAM, 26-bit addresses, remember Dialogue: 0,0:11:16.85,0:11:21.67,Default,,0000,0000,0000,,that. That's weird. So a lot of 32-bit\Nmachines, had 32-bit addresses or the ones Dialogue: 0,0:11:21.67,0:11:25.55,Default,,0000,0000,0000,,that we know today do. That wasn't the\Ncase here. And I'll explain why in a Dialogue: 0,0:11:25.55,0:11:32.61,Default,,0000,0000,0000,,minute. The A540 had a updated CPU. The\Nmemory controller had an MMU, which was Dialogue: 0,0:11:32.61,0:11:39.35,Default,,0000,0000,0000,,unusual for machines of the mid 80s. So it\Ncould support, the hardware would support Dialogue: 0,0:11:39.35,0:11:45.62,Default,,0000,0000,0000,,virtual memory, page faults and so on. It\Nhad decent sound, it had 8-channel sound, Dialogue: 0,0:11:45.62,0:11:49.46,Default,,0000,0000,0000,,hardware mixed and stereo. It was 8 bit,\Nbut it was logarithmic - so it was a bit Dialogue: 0,0:11:49.46,0:11:53.24,Default,,0000,0000,0000,,like u-law, if anyone knows that - instead\Nof PCM, so you got more precision at the Dialogue: 0,0:11:53.24,0:11:58.30,Default,,0000,0000,0000,,low end and it sounded to me a little bit\Nlike 12 bit PCM sound. So this is quite Dialogue: 0,0:11:58.30,0:12:04.84,Default,,0000,0000,0000,,good. Storage wise, it's the same floppy\Ncontroller as the Atari S.T.. It's fairly Dialogue: 0,0:12:04.84,0:12:09.69,Default,,0000,0000,0000,,boring. Hard disk controller was a\Nhorrible standard called ST506, MFM Dialogue: 0,0:12:09.69,0:12:16.42,Default,,0000,0000,0000,,drives, which were very, very crude\Ncompared to disks we have today. Keyboard Dialogue: 0,0:12:16.42,0:12:19.98,Default,,0000,0000,0000,,and mouse, nothing to write home about. I\Nmean, it was a normal keyboard. It was Dialogue: 0,0:12:19.98,0:12:23.43,Default,,0000,0000,0000,,nothing special going on there. And\Nprinter port, serial port and some Dialogue: 0,0:12:23.43,0:12:29.38,Default,,0000,0000,0000,,expansion slots which, I'll\Noutline later on. The thing I really liked Dialogue: 0,0:12:29.38,0:12:32.65,Default,,0000,0000,0000,,about the ARC was the graphics\Ncapabilities. It's fairly capable, Dialogue: 0,0:12:32.65,0:12:37.80,Default,,0000,0000,0000,,especially for a machine of that era and\Nof the price. It just had a flat frame Dialogue: 0,0:12:37.80,0:12:42.17,Default,,0000,0000,0000,,buffer so it didn't have sprites, which is\Nunfortunate. It didn't have a blitter and Dialogue: 0,0:12:42.17,0:12:47.27,Default,,0000,0000,0000,,a bitplanes and so forth. But the upshot\Nof that is dead simple to program. It had Dialogue: 0,0:12:47.27,0:12:52.32,Default,,0000,0000,0000,,a 256 color mode, 8 bits per pixel, so\Nit's a byte, and it's all just laid out as Dialogue: 0,0:12:52.32,0:12:55.89,Default,,0000,0000,0000,,a linear string of bytes. So it was dead\Neasy to just write some really nice Dialogue: 0,0:12:55.89,0:12:59.91,Default,,0000,0000,0000,,optimized code to just blit stuff to the\Nscreen. Part of the reason why there isn't Dialogue: 0,0:12:59.91,0:13:05.09,Default,,0000,0000,0000,,a blitter is actually the CPU was so good\Nat doing this. Colorwise, it's got Dialogue: 0,0:13:05.09,0:13:10.62,Default,,0000,0000,0000,,paletted modes out of a 4096 color\Npalette, same as the Amiga. It has this Dialogue: 0,0:13:10.62,0:13:16.35,Default,,0000,0000,0000,,256 color mode, which is different. The\Nbig high end machines, the top end Dialogue: 0,0:13:16.35,0:13:21.29,Default,,0000,0000,0000,,machines, the A540 and the A400 series\Ncould also do this very high res 1152 by Dialogue: 0,0:13:21.29,0:13:24.24,Default,,0000,0000,0000,,900, which was more of a workstation\Nresolution. If you bought a Sun Dialogue: 0,0:13:24.24,0:13:28.14,Default,,0000,0000,0000,,workstation a Sun 3 in those days, could\Ndo this and some higher resolutions. But Dialogue: 0,0:13:28.14,0:13:32.89,Default,,0000,0000,0000,,this is really not seen on computers that\Nmight have in the office or school or Dialogue: 0,0:13:32.89,0:13:36.37,Default,,0000,0000,0000,,education at the end of the market. And\Nit's quite clever the way they did that. Dialogue: 0,0:13:36.37,0:13:40.45,Default,,0000,0000,0000,,I'll come back to that in a sec. But for\Nme, the thing about the ARC: For the Dialogue: 0,0:13:40.45,0:13:45.92,Default,,0000,0000,0000,,money, it was the fastest machine around.\NIt was definitely faster than 386s and all Dialogue: 0,0:13:45.92,0:13:49.55,Default,,0000,0000,0000,,the stuff that Motorola was doing at the\Ntime by quite a long way. It is almost Dialogue: 0,0:13:49.55,0:13:53.58,Default,,0000,0000,0000,,eight times faster than a 68k at about the\Nsame clock speed. And it's to do with it's Dialogue: 0,0:13:53.58,0:13:57.02,Default,,0000,0000,0000,,pipelineing and to do with it having a 32\Nbit word and a couple of other tricks Dialogue: 0,0:13:57.02,0:14:01.07,Default,,0000,0000,0000,,again. I'll show you later on what the\Nsecret to that performance was. About Dialogue: 0,0:14:01.07,0:14:04.85,Default,,0000,0000,0000,,minicomputer speed and compared to some of\Nthe other RISC machines at the time, it Dialogue: 0,0:14:04.85,0:14:09.45,Default,,0000,0000,0000,,wasn't the first RISC in the world, it was\Nthe first cheap RISC and the first RISC Dialogue: 0,0:14:09.45,0:14:14.02,Default,,0000,0000,0000,,machine that people could feasibly buy and\Nhave on their desks at work or in Dialogue: 0,0:14:14.02,0:14:19.22,Default,,0000,0000,0000,,education. And if you compare it to\Nsomething like the MIPS or the SPARC, it Dialogue: 0,0:14:19.22,0:14:25.30,Default,,0000,0000,0000,,was not as fast as a MIPS or SPARC chip.\NIt was also a lot smaller, a lot cheaper. Dialogue: 0,0:14:25.30,0:14:29.24,Default,,0000,0000,0000,,Both of those other processers had very\Nbig Die. They needed other support chips. Dialogue: 0,0:14:29.24,0:14:33.04,Default,,0000,0000,0000,,They had huge packages, lots of pins, lots\Nof cooling requirements. So all this Dialogue: 0,0:14:33.04,0:14:36.18,Default,,0000,0000,0000,,really added up. So I priced up\Na Sun 4 workstation at the time and Dialogue: 0,0:14:36.18,0:14:40.05,Default,,0000,0000,0000,,it was well over four times the price of\None of these machines. And that was before Dialogue: 0,0:14:40.05,0:14:44.40,Default,,0000,0000,0000,,you add on extras such as disks and\Nnetwork interfaces and things like that. Dialogue: 0,0:14:44.40,0:14:47.48,Default,,0000,0000,0000,,So it's very good, very competitive for\Nthe money. And if you think about building Dialogue: 0,0:14:47.48,0:14:50.14,Default,,0000,0000,0000,,a cluster, then you could get a lot more\Nthroughput, you could network them Dialogue: 0,0:14:50.14,0:14:56.98,Default,,0000,0000,0000,,together. So this is about as far as I got\Nwhen I was a youngster, I was wasn't brave Dialogue: 0,0:14:56.98,0:15:03.23,Default,,0000,0000,0000,,enough to really take the machine apart\Nand poke around. Fortunately, now it's 30 Dialogue: 0,0:15:03.23,0:15:07.18,Default,,0000,0000,0000,,years old and I'm fine. I'm qualified and\Ndoing this. I'm going to take it apart. Dialogue: 0,0:15:07.18,0:15:12.09,Default,,0000,0000,0000,,Here's the motherboard. Quite a nice clean\Ndesign. This was built in Wales for anyone Dialogue: 0,0:15:12.09,0:15:17.51,Default,,0000,0000,0000,,that's been to the UK. Very unusual these\Ndays. Anything to be built in the UK. It's Dialogue: 0,0:15:17.51,0:15:23.42,Default,,0000,0000,0000,,got several main sections around these\Nfour chips. Remember the Steve photo Dialogue: 0,0:15:23.42,0:15:29.47,Default,,0000,0000,0000,,earlier on? This is the chip set: the ARM\NBMC, PDC, IOC. So the IOC side of things Dialogue: 0,0:15:29.47,0:15:34.09,Default,,0000,0000,0000,,happens over on the left video and sound\Nin the top right. And the memory and the Dialogue: 0,0:15:34.09,0:15:38.40,Default,,0000,0000,0000,,processor in the middle. It's got a\Nmegabyte onboard and you can plug in an Dialogue: 0,0:15:38.40,0:15:43.64,Default,,0000,0000,0000,,expansion for 4 MB. So memory map\Nfrom the software view. I mentioned this Dialogue: 0,0:15:43.64,0:15:46.93,Default,,0000,0000,0000,,26-bit addressing and I think this is one\Nof the key characteristics of one of these Dialogue: 0,0:15:46.93,0:15:52.21,Default,,0000,0000,0000,,machines. So you have a 64MB address\Nspace, it's quite packed. That's quite a Dialogue: 0,0:15:52.21,0:15:56.98,Default,,0000,0000,0000,,lot of stuff shoehorned into here. So\Nthere's the memory. The bottom half of the Dialogue: 0,0:15:56.98,0:16:02.04,Default,,0000,0000,0000,,address space, 32MB of that is the\Nprocessor. It's got user space and Dialogue: 0,0:16:02.04,0:16:08.10,Default,,0000,0000,0000,,privilege mode. It's got a concept of\Nprivilege within the processor execution. Dialogue: 0,0:16:08.10,0:16:11.85,Default,,0000,0000,0000,,So when you're in user mode, you only get\Nto see the bottom half and that's the Dialogue: 0,0:16:11.85,0:16:16.25,Default,,0000,0000,0000,,virtual maps. There's the MMU, that will\Nmap pages into that space and then when Dialogue: 0,0:16:16.25,0:16:18.98,Default,,0000,0000,0000,,you're in supervisor mode, you get to see\Nthe whole of the rest of the memory, Dialogue: 0,0:16:18.98,0:16:23.38,Default,,0000,0000,0000,,including the physical memory and various\Nregisters up the top. The thing to notice Dialogue: 0,0:16:23.38,0:16:27.46,Default,,0000,0000,0000,,here is: there's stuff hidden behind the\NROM, this address space is very packed Dialogue: 0,0:16:27.46,0:16:31.39,Default,,0000,0000,0000,,together. So there's a requirement\Nfor control registers, for the memory Dialogue: 0,0:16:31.39,0:16:34.77,Default,,0000,0000,0000,,controller, for the video controller and\Nso on, and they write only registers in Dialogue: 0,0:16:34.77,0:16:39.70,Default,,0000,0000,0000,,ROM basically. So you write to the ROM and\Nyou get to hit these registers. Kind of Dialogue: 0,0:16:39.70,0:16:43.73,Default,,0000,0000,0000,,weird when you first see it, but it was\Nquite a clever way to fit this stuff into Dialogue: 0,0:16:43.73,0:16:50.81,Default,,0000,0000,0000,,the address space. So it will start with\Nthe ARM1. So Sophie Wilson designed the Dialogue: 0,0:16:50.81,0:16:59.07,Default,,0000,0000,0000,,instruction set late 1983, Steve took the\Ninstruction set and designed the top Dialogue: 0,0:16:59.07,0:17:02.88,Default,,0000,0000,0000,,level, the block, the micro architecture\Nof this processor. So this is the data Dialogue: 0,0:17:02.88,0:17:08.14,Default,,0000,0000,0000,,path and how the control logic works. And\Nthen the VLSI team, then implemented this, Dialogue: 0,0:17:08.14,0:17:12.42,Default,,0000,0000,0000,,did their own custom cells. There's a\Ncustom data path and custom logic Dialogue: 0,0:17:12.42,0:17:18.18,Default,,0000,0000,0000,,throughout this. It took them about a\Nyear, all in. Well, 1984, that sort of... Dialogue: 0,0:17:18.18,0:17:23.83,Default,,0000,0000,0000,,This project A really kicked off early\N1984. And this staked out first thing Dialogue: 0,0:17:23.83,0:17:34.69,Default,,0000,0000,0000,,early 1985. The design process the guys\Ngave me a little bit of... So Jamie Dialogue: 0,0:17:34.69,0:17:40.80,Default,,0000,0000,0000,,Urquhart and John Biggs gave me a bit of\Nan insight into how they worked on the Dialogue: 0,0:17:40.80,0:17:46.87,Default,,0000,0000,0000,,VLSI side of things. So they had an Apollo\Nworkstation, just one Apollo workstation, Dialogue: 0,0:17:46.87,0:17:51.76,Default,,0000,0000,0000,,the DN600. This is a 68K based washing\Nmachine, as Jamie described it. It's this Dialogue: 0,0:17:51.76,0:17:56.18,Default,,0000,0000,0000,,huge thing. It cost about 50˙000 £.\NIt's incredibly expensive. And they Dialogue: 0,0:17:56.18,0:18:00.22,Default,,0000,0000,0000,,designed all of this with just one of\Nthese workstations. Jamie got in at 5:00 Dialogue: 0,0:18:00.22,0:18:04.06,Default,,0000,0000,0000,,a.m., worked until the afternoon and then\Nlet someone else on the machine. So they Dialogue: 0,0:18:04.06,0:18:06.76,Default,,0000,0000,0000,,shared the workstation, they worked\Nshifts so that they could design this Dialogue: 0,0:18:06.76,0:18:10.02,Default,,0000,0000,0000,,whole thing on one workstation. So this\Ncomes back to that. It was designed on a Dialogue: 0,0:18:10.02,0:18:13.66,Default,,0000,0000,0000,,bit of a shoestring budget. When they got\Na couple of other workstations later on in Dialogue: 0,0:18:13.66,0:18:17.76,Default,,0000,0000,0000,,the projects, there was an allegation that\Nthe software might not have been licensed Dialogue: 0,0:18:17.76,0:18:21.95,Default,,0000,0000,0000,,initially on the other workstations and\Nthe CAD software might have been. I can Dialogue: 0,0:18:21.95,0:18:28.45,Default,,0000,0000,0000,,neither confirm nor deny whether that's\Ntrue. So Steve wrote a BBC Basic Dialogue: 0,0:18:28.45,0:18:33.30,Default,,0000,0000,0000,,simulator for this. When he's designing\Nthis block level micro architecture run on Dialogue: 0,0:18:33.30,0:18:38.75,Default,,0000,0000,0000,,his BBC Micro. So this could then run real\Nsoftware. There could be a certain amount Dialogue: 0,0:18:38.75,0:18:41.57,Default,,0000,0000,0000,,of software development, but then they\Ncould also validate that the design was Dialogue: 0,0:18:41.57,0:18:46.82,Default,,0000,0000,0000,,correct. There's no cache on this. This is\Na quite a large chip. 50 square Dialogue: 0,0:18:46.82,0:18:52.29,Default,,0000,0000,0000,,millimeters was the economic limit of\Nthose days for this part of the market. Dialogue: 0,0:18:52.29,0:18:56.10,Default,,0000,0000,0000,,There's no cache. That also would have\Nbeen far too complicated. So this was Dialogue: 0,0:18:56.10,0:19:03.12,Default,,0000,0000,0000,,also, I think, quite a big risk, no pun\Nintended. The aim of doing this Dialogue: 0,0:19:03.12,0:19:07.62,Default,,0000,0000,0000,,with such a small team that they're all\Nvery clever people. But they hadn't all Dialogue: 0,0:19:07.62,0:19:11.49,Default,,0000,0000,0000,,got experience in building chips before.\NAnd I think they knew what they were up Dialogue: 0,0:19:11.49,0:19:15.10,Default,,0000,0000,0000,,against. And so not having a cache of\Ncomplicated things like that was the right Dialogue: 0,0:19:15.10,0:19:20.91,Default,,0000,0000,0000,,choice to make. I'll show you later that\Nthat didn't actually affect things. So Dialogue: 0,0:19:20.91,0:19:24.81,Default,,0000,0000,0000,,this was a RISC machine. If anyone has not\Nprogrammed ARM in this room then get out Dialogue: 0,0:19:24.81,0:19:29.40,Default,,0000,0000,0000,,at once. But if you have programed ARM\Nthis is quite familiar with some Dialogue: 0,0:19:29.40,0:19:36.21,Default,,0000,0000,0000,,differences. It's a classical three\Noperand RISC, its got three shift on one of Dialogue: 0,0:19:36.21,0:19:38.79,Default,,0000,0000,0000,,the operands for most of the instructions.\NSo you can do things like static Dialogue: 0,0:19:38.79,0:19:43.82,Default,,0000,0000,0000,,multiplies quite easily. It's not purist\NRISC though. It does have load or store Dialogue: 0,0:19:43.82,0:19:47.98,Default,,0000,0000,0000,,multiple instructions. So these will, as\Nthe name implies, load or store multiple Dialogue: 0,0:19:47.98,0:19:51.46,Default,,0000,0000,0000,,number of registers in one go. So one\Nregister per cycle, but it's all done Dialogue: 0,0:19:51.46,0:19:54.97,Default,,0000,0000,0000,,through one instruction. This is not RISC.\NAgain, there's a good reason for doing Dialogue: 0,0:19:54.97,0:19:59.30,Default,,0000,0000,0000,,that. So when one comes back and it gets\Nplugged into a board that looks a bit like Dialogue: 0,0:19:59.30,0:20:07.40,Default,,0000,0000,0000,,this. This is called the A2P, the ARM second\Nprocessor. It plugs into a BBC Micro. It's Dialogue: 0,0:20:07.40,0:20:11.28,Default,,0000,0000,0000,,basically there's a thing called the Tube,\Nwhich is sort of a FIFO like arrangement. Dialogue: 0,0:20:11.28,0:20:15.23,Default,,0000,0000,0000,,The BBC Micro can send messages one way\Nand this can send messages back. And the Dialogue: 0,0:20:15.23,0:20:20.25,Default,,0000,0000,0000,,BBC Micro has the discs, it has the I/O,\Nkeyboard and so on. And that's used as the Dialogue: 0,0:20:20.25,0:20:23.96,Default,,0000,0000,0000,,hosts to then download code into one\Nmegabytes of RAM up here and then you Dialogue: 0,0:20:23.96,0:20:29.01,Default,,0000,0000,0000,,combine the code on the ARM. So this was\Nthe initial system, 6 MHz. The Dialogue: 0,0:20:29.01,0:20:32.35,Default,,0000,0000,0000,,thing I found quite interesting about\Nthis, I mentioned that Steve had built Dialogue: 0,0:20:32.35,0:20:37.20,Default,,0000,0000,0000,,this BBC Basic simulation, one of the\Nearly bits of software that could run on Dialogue: 0,0:20:37.20,0:20:41.87,Default,,0000,0000,0000,,this. So he'd ported BBC Basic to ARM and\Nwritten an ARM version of it. The Basic Dialogue: 0,0:20:41.87,0:20:47.78,Default,,0000,0000,0000,,interpreter was very fast, very lean, and\Nit was running on this board early on. Dialogue: 0,0:20:47.78,0:20:51.75,Default,,0000,0000,0000,,They then built a simulator called ASIM,\Nwhich was an event based simulator for Dialogue: 0,0:20:51.75,0:20:55.24,Default,,0000,0000,0000,,doing logic design and all of the other\Nchips in the chips on the chipset that Dialogue: 0,0:20:55.24,0:20:59.02,Default,,0000,0000,0000,,were simulated using ASIM on ARM1 which is\Nquite nice. So this was the fastest Dialogue: 0,0:20:59.02,0:21:02.48,Default,,0000,0000,0000,,machine that they had around. They didn't\Nhave, you know, the thousands of machines Dialogue: 0,0:21:02.48,0:21:07.73,Default,,0000,0000,0000,,in the cluster like you'd have in a\Nmodern company doing EDA. They had Dialogue: 0,0:21:07.73,0:21:11.37,Default,,0000,0000,0000,,a very small number of machines and these\Nwere the fastest ones they had about. So Dialogue: 0,0:21:11.37,0:21:17.45,Default,,0000,0000,0000,,ARM2 was simulated on ARM1 and all the\Nother chipset. So then ARM2 comes along. Dialogue: 0,0:21:17.45,0:21:21.59,Default,,0000,0000,0000,,So it's a year later, this is a shrink of\Nthe design. It's based on the same basic Dialogue: 0,0:21:21.59,0:21:26.00,Default,,0000,0000,0000,,micro architecture but has a multiplier\Nnow. It's a booth multiplier , so it is at Dialogue: 0,0:21:26.00,0:21:32.09,Default,,0000,0000,0000,,worst case, 16 cycle, multiply just two\Nbits per clock. Again, no cache. But one Dialogue: 0,0:21:32.09,0:21:36.95,Default,,0000,0000,0000,,thing they did add in on to is banked\Nregisters. Some of the processor modes I Dialogue: 0,0:21:36.95,0:21:42.94,Default,,0000,0000,0000,,mentioned there's an interrupt mode. Next\Nslide, some of the processor modes will Dialogue: 0,0:21:42.94,0:21:47.96,Default,,0000,0000,0000,,basically give you different view on\Nregisters, which is very useful. These Dialogue: 0,0:21:47.96,0:21:51.09,Default,,0000,0000,0000,,were all validated at 8 MHz. So\Nthe product was designed for 8 MHz. Dialogue: 0,0:21:51.09,0:21:54.02,Default,,0000,0000,0000,,The company that built them\Nsaid, okay, put the stamp on the outside Dialogue: 0,0:21:54.02,0:21:57.68,Default,,0000,0000,0000,,saying 8 MHz. There's two\Nversions of this chip and I think they're Dialogue: 0,0:21:57.68,0:22:01.39,Default,,0000,0000,0000,,actually the same silicon. I've got a\Nsuspicion that they're the same. They just Dialogue: 0,0:22:01.39,0:22:05.42,Default,,0000,0000,0000,,tested this batch saying that works at 10\Nor 12. So on my project list is Dialogue: 0,0:22:05.42,0:22:12.27,Default,,0000,0000,0000,,overclocking my A3000 to see how fast\Nit'll go and see if I can get it to 12 MHz. Dialogue: 0,0:22:12.27,0:22:18.56,Default,,0000,0000,0000,,Okay. So the banking of the registers.\NARM has got this even modern 32 bit Dialogue: 0,0:22:18.56,0:22:25.06,Default,,0000,0000,0000,,type of interrupts and an IRQ\Npronounced "erk" in English and FIQ Dialogue: 0,0:22:25.06,0:22:28.56,Default,,0000,0000,0000,,pronounced "fic" in English. I appreciate it\Ndoesn't mean quite the same thing in Dialogue: 0,0:22:28.56,0:22:34.29,Default,,0000,0000,0000,,German. So I call if FIQ from here on in\Nand FIQ mode has this property where Dialogue: 0,0:22:34.29,0:22:37.83,Default,,0000,0000,0000,,the top half of the registers are effectively\Ndifferent registers when you get into Dialogue: 0,0:22:37.83,0:22:42.67,Default,,0000,0000,0000,,this mode. So this lets you first of all\Nyou don't have to back up those registers. Dialogue: 0,0:22:42.67,0:22:47.95,Default,,0000,0000,0000,,I mean your FIQ handler. And\Nsecondly if you can write an FIQ handler Dialogue: 0,0:22:47.95,0:22:51.97,Default,,0000,0000,0000,,using just those registers and there's\Nenough for doing most basic tasks, you Dialogue: 0,0:22:51.97,0:22:55.94,Default,,0000,0000,0000,,don't have to save and restore anything\Nwhen you get an interrupt. So this is Dialogue: 0,0:22:55.94,0:23:02.51,Default,,0000,0000,0000,,designed specifically to be very, very low\Noverhead interrupt mode. So I'm coming to Dialogue: 0,0:23:02.51,0:23:07.89,Default,,0000,0000,0000,,why there's a 26 bit address space. And so\NI found this link very unintuitive. So Dialogue: 0,0:23:07.89,0:23:13.52,Default,,0000,0000,0000,,unlike 32 bit ARM, the more modern\N1990s onwards ARMs, the program counter Dialogue: 0,0:23:13.52,0:23:17.02,Default,,0000,0000,0000,,register 15 doesn't just contain the\Nprogram counter, but also contains the Dialogue: 0,0:23:17.02,0:23:20.42,Default,,0000,0000,0000,,status flags and processor mode and\Neffectively all of the machine state is Dialogue: 0,0:23:20.42,0:23:24.20,Default,,0000,0000,0000,,packed in there as well. So I asked the\Nquestion, well why, why 64 megabytes of Dialogue: 0,0:23:24.20,0:23:27.70,Default,,0000,0000,0000,,address space? What's special about 64.\NAnd Mike told me, well, you're asking the Dialogue: 0,0:23:27.70,0:23:31.98,Default,,0000,0000,0000,,wrong question. It's the other way round.\NWhat we wanted was this property that all Dialogue: 0,0:23:31.98,0:23:35.99,Default,,0000,0000,0000,,of the machine state is in one register.\NSo this means you just have to save one Dialogue: 0,0:23:35.99,0:23:40.00,Default,,0000,0000,0000,,register. Well, you know, what's the harm\Nin saving two registers? And he reminded Dialogue: 0,0:23:40.00,0:23:43.49,Default,,0000,0000,0000,,me of this FIQ mode. Well, if you're\Nalready in a state where you've really Dialogue: 0,0:23:43.49,0:23:47.89,Default,,0000,0000,0000,,optimized your interrupt handler so that\Nyou don't need any other registers to deal Dialogue: 0,0:23:47.89,0:23:51.39,Default,,0000,0000,0000,,with, you're not saving restoring anything\Napart from your PC, then saving another Dialogue: 0,0:23:51.39,0:23:56.00,Default,,0000,0000,0000,,register is 50 percent overhead on that\Noperation. So that was the prime motivator Dialogue: 0,0:23:56.00,0:24:00.50,Default,,0000,0000,0000,,was to keep all of the state in one word.\NAnd then once you take all of the flags Dialogue: 0,0:24:00.50,0:24:04.60,Default,,0000,0000,0000,,away, you're left with 24 bits for a word\Naligned program counter, which leads to Dialogue: 0,0:24:04.60,0:24:09.80,Default,,0000,0000,0000,,26 bit addressing. And that was then seen\Nas well, 64 MB is enough. There were Dialogue: 0,0:24:09.80,0:24:14.69,Default,,0000,0000,0000,,machines in 1985 that, you know, could\Nconceivably have more memory than that. Dialogue: 0,0:24:14.69,0:24:18.26,Default,,0000,0000,0000,,But for a desktop that was still seen as a\Nvery large, very expensive amount of Dialogue: 0,0:24:18.26,0:24:24.45,Default,,0000,0000,0000,,memory. The other thing, you don't need to\Nreinvent another instruction to do Dialogue: 0,0:24:24.45,0:24:28.17,Default,,0000,0000,0000,,return from exception so you can return\Nusing one of your existing instructions. Dialogue: 0,0:24:28.17,0:24:32.74,Default,,0000,0000,0000,,In this case, it's the subtract into PC\Nwhich looks a bit strange, but trust me, Dialogue: 0,0:24:32.74,0:24:39.03,Default,,0000,0000,0000,,that does the right thing. So the memory\Ncontroller. This is - I mentioned the Dialogue: 0,0:24:39.03,0:24:43.04,Default,,0000,0000,0000,,address translation, so this has an MMU in\Nit. In fact, the thing directly on the Dialogue: 0,0:24:43.04,0:24:46.08,Default,,0000,0000,0000,,left hand side. I was\Nworried that these slides actually might Dialogue: 0,0:24:46.08,0:24:49.52,Default,,0000,0000,0000,,not be the right resolution and they might\Nbe sort of too small for people to see Dialogue: 0,0:24:49.52,0:24:53.57,Default,,0000,0000,0000,,this. And in fact, it's the size of a\Nhouse is really useful here. So the left Dialogue: 0,0:24:53.57,0:24:58.50,Default,,0000,0000,0000,,hand side of this chip is the MMU. This\Nchip is the same size as ARM2. Yeah, Dialogue: 0,0:24:58.50,0:25:02.38,Default,,0000,0000,0000,,pretty much. So that's part of the reason\Nwhy the MMU is on another chip ARM2 was Dialogue: 0,0:25:02.38,0:25:06.61,Default,,0000,0000,0000,,as big as they could make it to fit the\Nprice as you don't have anyone here done Dialogue: 0,0:25:06.61,0:25:10.81,Default,,0000,0000,0000,,silicon design. But as the area goes\Nup effectively your yield goes down and Dialogue: 0,0:25:10.81,0:25:14.69,Default,,0000,0000,0000,,the price it's a non-linear effect on\Nprice. So the MMU had to be on a separate Dialogue: 0,0:25:14.69,0:25:19.91,Default,,0000,0000,0000,,chip and it's half the size of that as\Nwell. MEMC does most mundane things Dialogue: 0,0:25:19.91,0:25:23.92,Default,,0000,0000,0000,,like it drives DRAM, it does refresh for\NDRAM and it converts from linear addresses Dialogue: 0,0:25:23.92,0:25:33.80,Default,,0000,0000,0000,,into row and column addresses which DRAM\Ntakes. So the key thing about this Dialogue: 0,0:25:33.80,0:25:39.09,Default,,0000,0000,0000,,ARM and MEMC binding is the key factor of\Nperformance is making use of memory Dialogue: 0,0:25:39.09,0:25:43.74,Default,,0000,0000,0000,,bandwidth. When the team had looked at all\Nthe other processors in Project A before Dialogue: 0,0:25:43.74,0:25:49.38,Default,,0000,0000,0000,,designing their own, one of the things\Nthey looked at was how well they utilized Dialogue: 0,0:25:49.38,0:25:56.32,Default,,0000,0000,0000,,DRAM and 68K and the semi chips made very,\Nvery poor use of DRAM bandwidth. Dialogue: 0,0:25:56.32,0:25:59.94,Default,,0000,0000,0000,,Steve said, well, okay. The DRAM is the\Nmost expensive component of any of these Dialogue: 0,0:25:59.94,0:26:04.28,Default,,0000,0000,0000,,machines and they're making poor use of\Nit. And I think a key insight here is if Dialogue: 0,0:26:04.28,0:26:07.74,Default,,0000,0000,0000,,you maximize that use of the DRAM, then\Nyou're going to be able to get much higher Dialogue: 0,0:26:07.74,0:26:13.49,Default,,0000,0000,0000,,performance in those machines. And so it's\N32 bits wide. The ARM is pipelined, so it can Dialogue: 0,0:26:13.49,0:26:18.73,Default,,0000,0000,0000,,do a 32 bit word every cycle. And it also\Nindicates whether it's sequential or non Dialogue: 0,0:26:18.73,0:26:25.25,Default,,0000,0000,0000,,sequential addressing. This\Nthen lets your MEMC Dialogue: 0,0:26:25.25,0:26:31.20,Default,,0000,0000,0000,,decide whether to do an N cycle or an S\Ncycle. So there's a fast one and a slow Dialogue: 0,0:26:31.20,0:26:35.22,Default,,0000,0000,0000,,one basically. So when you access a new\Nrandom address and DRAM, you have to open Dialogue: 0,0:26:35.22,0:26:40.71,Default,,0000,0000,0000,,that row and that takes twice the time.\NIt's a 4 MHz cycle. But then once Dialogue: 0,0:26:40.71,0:26:45.15,Default,,0000,0000,0000,,you've access that address and then once\Nyou're accessing linearly ahead of that Dialogue: 0,0:26:45.15,0:26:49.60,Default,,0000,0000,0000,,address, you can do fast page mode\Naccesses, which are 8 MHz cycles. Dialogue: 0,0:26:49.60,0:26:54.03,Default,,0000,0000,0000,,So ultimately, that's the reason\Nwhy these load store multiples exist. The Dialogue: 0,0:26:54.03,0:26:57.82,Default,,0000,0000,0000,,non-RISC instructions, they're there so\Nthat you can stream out registers and back Dialogue: 0,0:26:57.82,0:27:03.10,Default,,0000,0000,0000,,in and make use of this DRAM bandwidth. So\Nstore multiple. This is just a simple Dialogue: 0,0:27:03.10,0:27:07.86,Default,,0000,0000,0000,,calculation for 14 registers, you're\Nhitting about 25 megabytes a second out of Dialogue: 0,0:27:07.86,0:27:13.08,Default,,0000,0000,0000,,30. So this is it's not 100%, but it's way\Nmore than a 10th or an 8th. Dialogue: 0,0:27:13.08,0:27:16.88,Default,,0000,0000,0000,,Which a lot of the other processors\Nwere using. So this was really good. This Dialogue: 0,0:27:16.88,0:27:21.17,Default,,0000,0000,0000,,is the prime factor of why this machine\Nwas so fast. It's effectively the load store Dialogue: 0,0:27:21.17,0:27:28.07,Default,,0000,0000,0000,,multiple instructions and being able to\Naccess the stuff linearly. So the MMU is Dialogue: 0,0:27:28.07,0:27:36.98,Default,,0000,0000,0000,,weird. It's not TLB in the traditional\Nsense, so TLB's today, if you take your Dialogue: 0,0:27:36.98,0:27:43.04,Default,,0000,0000,0000,,MIPS chip or something where the TLB is\Nvisible to software, it will map a virtual Dialogue: 0,0:27:43.04,0:27:47.76,Default,,0000,0000,0000,,address into a chosen physical address and\Nyou'll have some number of entries and you Dialogue: 0,0:27:47.76,0:27:53.88,Default,,0000,0000,0000,,more or less arbitrarily, you know, poke\Nan entry and with the set mapping in it. Dialogue: 0,0:27:53.88,0:27:57.79,Default,,0000,0000,0000,,The MEMC does it upside down. So it says it's\Ngot a fixed number of entries for every Dialogue: 0,0:27:57.79,0:28:02.38,Default,,0000,0000,0000,,page in DRAM. And then for each of those\Nentries, it checks an incoming address to Dialogue: 0,0:28:02.38,0:28:08.60,Default,,0000,0000,0000,,see whether it matches. So it has all of\Nthose entries that we've showed on the Dialogue: 0,0:28:08.60,0:28:13.50,Default,,0000,0000,0000,,chip diagram a couple of slides ago. That\Nbig left hand side had that big array. All Dialogue: 0,0:28:13.50,0:28:16.83,Default,,0000,0000,0000,,of those effectively just storing a\Nvirtual address and then matching it and Dialogue: 0,0:28:16.83,0:28:20.03,Default,,0000,0000,0000,,have a comparator. And then one of them\Nlights up and says yes, it's mine. So Dialogue: 0,0:28:20.03,0:28:24.55,Default,,0000,0000,0000,,effectively, the aphysical page says that\Nvirtual address is mine instead of the Dialogue: 0,0:28:24.55,0:28:30.03,Default,,0000,0000,0000,,other way round. So this also limits your\Nmemory. If you're saying I have to have Dialogue: 0,0:28:30.03,0:28:34.48,Default,,0000,0000,0000,,one of these entries on chip per page of\Nphysical memory and you don't want pages Dialogue: 0,0:28:34.48,0:28:40.72,Default,,0000,0000,0000,,to be enormous. The 32 K if you do the\Nmaths is 4 MB over 128 pages, it's a Dialogue: 0,0:28:40.72,0:28:44.46,Default,,0000,0000,0000,,32K page. If you don't want the page to\Nget much bigger than that and trust me you Dialogue: 0,0:28:44.46,0:28:47.89,Default,,0000,0000,0000,,don't, then you need to add more of these\Nentries and it's already half the size of Dialogue: 0,0:28:47.89,0:28:52.54,Default,,0000,0000,0000,,the chip. So effectively, this is one of\Nthe limits of why you can only have 4 MB Dialogue: 0,0:28:52.54,0:28:58.36,Default,,0000,0000,0000,,on one of these memory\Ncontroller chips. OK. So VIDC is the core Dialogue: 0,0:28:58.36,0:29:05.23,Default,,0000,0000,0000,,of the video and sound system. It's a set\Nof FIFOs and a set of shift digital analog Dialogue: 0,0:29:05.23,0:29:09.97,Default,,0000,0000,0000,,converters for doing video and sound. You\Nstream stuff into the FIFOs and it does Dialogue: 0,0:29:09.97,0:29:14.85,Default,,0000,0000,0000,,the display timing and pallet lookup and\Nso forth. It has an 8 bit mode I Dialogue: 0,0:29:14.85,0:29:21.21,Default,,0000,0000,0000,,mentioned. It's slightly strange. It also\Nhas an output for transparency bit. So in Dialogue: 0,0:29:21.21,0:29:23.83,Default,,0000,0000,0000,,your palette you can set 12 bits of\Ncolor, but you can set a bit of Dialogue: 0,0:29:23.83,0:29:31.58,Default,,0000,0000,0000,,transparency as well so you can do video\Ngen- looking quite easily with this. So Dialogue: 0,0:29:31.58,0:29:36.70,Default,,0000,0000,0000,,there was a revision later on Tudor\Nexplains that the very first one had a bit Dialogue: 0,0:29:36.70,0:29:41.23,Default,,0000,0000,0000,,of crosstalk between the video and the\Nsound, so you'd get sound with noise on Dialogue: 0,0:29:41.23,0:29:45.48,Default,,0000,0000,0000,,it. That was basically video noise and\Nit's quite hard to get rid of. And so they Dialogue: 0,0:29:45.48,0:29:50.00,Default,,0000,0000,0000,,did this revision and the way he fixed it\Nwas quite cool. They shuffled the power Dialogue: 0,0:29:50.00,0:29:53.69,Default,,0000,0000,0000,,supply around and did all the sensible\Nengineering things. But he also filtered Dialogue: 0,0:29:53.69,0:29:58.05,Default,,0000,0000,0000,,out a bit of the noise that is being\Noutput on the sound. He Dialogue: 0,0:29:58.05,0:30:02.63,Default,,0000,0000,0000,,inverted it and then fed that back in as\Nthe reference current for the DACs. So that Dialogue: 0,0:30:02.63,0:30:06.09,Default,,0000,0000,0000,,sort of self compensating and took the\Nnoise a bit like the noise canceling Dialogue: 0,0:30:06.09,0:30:13.24,Default,,0000,0000,0000,,headphones. It was kind of a nice hack.\NAnd that was that was VIDC1. OK, the final Dialogue: 0,0:30:13.24,0:30:17.70,Default,,0000,0000,0000,,one, I'm going to stop showing you chip\Nplots after this, unfortunately, but just Dialogue: 0,0:30:17.70,0:30:20.98,Default,,0000,0000,0000,,get your fill while we're here. And again,\NI'm really glad this is enormous for the Dialogue: 0,0:30:20.98,0:30:25.59,Default,,0000,0000,0000,,people in the room and maybe those zooming\Nin online. There's a cool little Dialogue: 0,0:30:25.59,0:30:29.51,Default,,0000,0000,0000,,Illuminati eye logo in the bottom left\Ncorner. So I feared that you weren't gonna Dialogue: 0,0:30:29.51,0:30:34.01,Default,,0000,0000,0000,,be able to see and I didn't have time to\Ndo zoomed in version, but. Okay. So IOC Dialogue: 0,0:30:34.01,0:30:37.72,Default,,0000,0000,0000,,is the center of the IO system as much of\Nthe IO system as possible, all the random Dialogue: 0,0:30:37.72,0:30:41.03,Default,,0000,0000,0000,,bits of glue logic to do things like\Ntiming. Some peripherals are slower than Dialogue: 0,0:30:41.03,0:30:47.31,Default,,0000,0000,0000,,others lives in IOC. It contains a UART\Nfor the keyboard, so the keyboard is Dialogue: 0,0:30:47.31,0:30:52.02,Default,,0000,0000,0000,,looked after by an 8051 microcontroller. Just\Nnice and easy, you don't have to do scanning Dialogue: 0,0:30:52.02,0:30:57.43,Default,,0000,0000,0000,,in software. This microcontroller just sends\Nstuff up of serial port to this chip. So Dialogue: 0,0:30:57.43,0:31:02.04,Default,,0000,0000,0000,,UART keyboard, asynchronous receiver and\Ntransmitter. It was at one point called Dialogue: 0,0:31:02.04,0:31:06.08,Default,,0000,0000,0000,,the fast asynchronous receiver and\Ntransmitter. Mike got forced to change the Dialogue: 0,0:31:06.08,0:31:11.90,Default,,0000,0000,0000,,name. Not everyone has a 12 year old sense\Nof humor, but I admire his spirit. So the Dialogue: 0,0:31:11.90,0:31:15.63,Default,,0000,0000,0000,,other thing it does is interrupts all the\Ninterrupts go into IOC and it's got masks Dialogue: 0,0:31:15.63,0:31:20.34,Default,,0000,0000,0000,,and consolidates them effectively for\Nsending an interrupt up to the on the ARM. Dialogue: 0,0:31:20.34,0:31:24.69,Default,,0000,0000,0000,,The ARM can then check the status and do\Nfast response to it. So the eye of providence Dialogue: 0,0:31:24.69,0:31:27.54,Default,,0000,0000,0000,,there, the little logo I pointed out, Mike\Nsaid he put that in for future Dialogue: 0,0:31:27.54,0:31:35.80,Default,,0000,0000,0000,,archaeologists to wonder about. Okay. \NThat was it. I was hoping there'd be Dialogue: 0,0:31:35.80,0:31:39.44,Default,,0000,0000,0000,,this big back story about, you know, he\Nwas in the Illuminati or something. Maybe Dialogue: 0,0:31:39.44,0:31:44.69,Default,,0000,0000,0000,,he is, but not allowed to say anyway. So just\Nlike the other dev board I showed you so Dialogue: 0,0:31:44.69,0:31:49.93,Default,,0000,0000,0000,,this one's A 500 2P, it's still a second\Nprocessor that plugs into a BBC Micro. Dialogue: 0,0:31:49.93,0:31:54.46,Default,,0000,0000,0000,,It's still got this host having disk\Ndrives and so forth attached to it and Dialogue: 0,0:31:54.46,0:32:00.29,Default,,0000,0000,0000,,pushing stuff down the tube into the\Nmemory here. But now, finally Dialogue: 0,0:32:00.29,0:32:04.73,Default,,0000,0000,0000,,all of this, the chip set now\Nassembled in one place. So this is Dialogue: 0,0:32:04.73,0:32:08.10,Default,,0000,0000,0000,,starting to look like an Archimedes. It\Ngot video out. It's got keyboard Dialogue: 0,0:32:08.10,0:32:11.62,Default,,0000,0000,0000,,interface. It's got some expansion stuff.\NSo this is bring up an early software Dialogue: 0,0:32:11.62,0:32:17.72,Default,,0000,0000,0000,,headstart. But very shortly afterwards, we\Ngot the a five A500 internal to Acorn. And Dialogue: 0,0:32:17.72,0:32:21.46,Default,,0000,0000,0000,,this is really the first Archimedes. This\Nis the prototype Archimedes. Actually got Dialogue: 0,0:32:21.46,0:32:27.30,Default,,0000,0000,0000,,a gorgeous gray brick sort of look to it,\Nkind of concrete. It weighs like concrete, Dialogue: 0,0:32:27.30,0:32:31.48,Default,,0000,0000,0000,,too, but it has all the hallmarks. It's\Ngot the IO interfaces, it's got the Dialogue: 0,0:32:31.48,0:32:36.81,Default,,0000,0000,0000,,expansion slots. You can see at the back.\NIt's got all, it runs the same operating Dialogue: 0,0:32:36.81,0:32:39.55,Default,,0000,0000,0000,,system. Now, this was used for the OS\Ndevelopment. There's only a couple of Dialogue: 0,0:32:39.55,0:32:44.54,Default,,0000,0000,0000,,hundred of these made. Well, this is a\Nserial 222. So this is one of the last, Dialogue: 0,0:32:44.54,0:32:50.73,Default,,0000,0000,0000,,I think. But yeah. Only an internal to\NACORN. There are lots of nice tweaks to this Dialogue: 0,0:32:50.73,0:32:55.70,Default,,0000,0000,0000,,machine. So the hardware team had designed\Nthis, Tudor designed this as well as the Dialogue: 0,0:32:55.70,0:33:01.39,Default,,0000,0000,0000,,video system. And he said, well, his A500\Nwas the special one that he had a video Dialogue: 0,0:33:01.39,0:33:05.41,Default,,0000,0000,0000,,controller. He'd hand-picked one\Nof the VCs so that instead of running Dialogue: 0,0:33:05.41,0:33:10.86,Default,,0000,0000,0000,,at 24 MHz to run at 56, so some silicon\Nvariations in manufacturer. So he found a Dialogue: 0,0:33:10.86,0:33:16.17,Default,,0000,0000,0000,,56 MHz part so he could do. I\Nthink it was 1024 x 768, which is way out Dialogue: 0,0:33:16.17,0:33:22.40,Default,,0000,0000,0000,,of respect for the rest of the Archimedes.\NSo he had the really, really cool machine. Dialogue: 0,0:33:22.40,0:33:26.05,Default,,0000,0000,0000,,They also ran some of them at 12 MHz\Nas well instead of 8. This is a massive Dialogue: 0,0:33:26.05,0:33:30.50,Default,,0000,0000,0000,,performance improvement. I think it used\Nexpensive memory, which is kind of out of Dialogue: 0,0:33:30.50,0:33:37.18,Default,,0000,0000,0000,,reach for the product. Right. So \Nbelieve me, this is the simplified Dialogue: 0,0:33:37.18,0:33:41.24,Default,,0000,0000,0000,,circuit diagram. The technical reference\Nmanuals are available online if anyone wants Dialogue: 0,0:33:41.24,0:33:47.97,Default,,0000,0000,0000,,the complicated one. The main parts of the\Ndisplay are ARM, MEMC, VIDC and some RAM Dialogue: 0,0:33:47.97,0:33:52.05,Default,,0000,0000,0000,,and we have a little walk through them. So\Nthe clocks are generated actually by the Dialogue: 0,0:33:52.05,0:33:56.82,Default,,0000,0000,0000,,memory controller. Memory controller gives\Nthe clocks to the ARM. The main reason for Dialogue: 0,0:33:56.82,0:34:00.33,Default,,0000,0000,0000,,this is that the memory controller has to\Ndo some slow things now and then. It has Dialogue: 0,0:34:00.33,0:34:05.86,Default,,0000,0000,0000,,to open pages of DRAMs, refresh cycles and\Nthings. So it stops the CPU and generates Dialogue: 0,0:34:05.86,0:34:11.56,Default,,0000,0000,0000,,the clock and it pauses the CPU by\Nstopping that clock from time to time. Dialogue: 0,0:34:11.56,0:34:15.93,Default,,0000,0000,0000,,When you do a DRAM access, your adress on\Nbus along the top, the ARM outputs an Dialogue: 0,0:34:15.93,0:34:19.72,Default,,0000,0000,0000,,address that goes into the MEMC. The\NMEMC then converts that, it does an address Dialogue: 0,0:34:19.72,0:34:23.34,Default,,0000,0000,0000,,translation and then it converts that into\Na row and column addresses suitable for Dialogue: 0,0:34:23.34,0:34:27.14,Default,,0000,0000,0000,,DRAM. And then if you're doing a read\NDRAM outputs the address, outputs the data Dialogue: 0,0:34:27.14,0:34:33.42,Default,,0000,0000,0000,,onto the data bus, which ARM then sees.\NMEMC is the the critical path on Dialogue: 0,0:34:33.42,0:34:37.11,Default,,0000,0000,0000,,this, but the address flows through MEMC\Neffectively. Notice that MEMC is not on Dialogue: 0,0:34:37.11,0:34:41.33,Default,,0000,0000,0000,,the data bus. It just gets addresses\Nflowing through it, this is important later Dialogue: 0,0:34:41.33,0:34:44.89,Default,,0000,0000,0000,,on. ROM is another slow thing. Dialogue: 0,0:34:44.89,0:34:49.20,Default,,0000,0000,0000,,Another reason why MEMC might slow down\Nthe access from the CPU, it works in a Dialogue: 0,0:34:49.20,0:34:54.10,Default,,0000,0000,0000,,similar sort of way. There is also a\Npermission check done when you're doing Dialogue: 0,0:34:54.10,0:35:00.26,Default,,0000,0000,0000,,the address translation per... user\Npermission versus OS, a supervisor. Dialogue: 0,0:35:00.26,0:35:05.36,Default,,0000,0000,0000,,And so this information is output as part\Nof the cycle when the ARM does that access. Dialogue: 0,0:35:05.36,0:35:09.73,Default,,0000,0000,0000,,If you miss in that translation, you get\Na page fault or permission fault, then an Dialogue: 0,0:35:09.73,0:35:13.39,Default,,0000,0000,0000,,abort signal comes back and you\Ntake an exception. Dialogue: 0,0:35:13.39,0:35:17.41,Default,,0000,0000,0000,,And the ARM deals with that in software. Dialogue: 0,0:35:17.41,0:35:22.29,Default,,0000,0000,0000,,The data bus is a critical path, and so\Nthe IO stuff is buffered, it is kept away Dialogue: 0,0:35:22.29,0:35:27.60,Default,,0000,0000,0000,,from that. So the IO bus is 16 bits and\Nnot a lot 32 bit peripherals were around Dialogue: 0,0:35:27.60,0:35:32.60,Default,,0000,0000,0000,,in those days. All the peripherals 8 or\N16 bits. So that's the right thing to do. Dialogue: 0,0:35:32.60,0:35:36.15,Default,,0000,0000,0000,,The IOC decodes that and there's a\Nhandshake with MEMC. If it needs more Dialogue: 0,0:35:36.15,0:35:39.81,Default,,0000,0000,0000,,time, if it's accessing one of the\Nexpansion cards and the expansion card Dialogue: 0,0:35:39.81,0:35:47.69,Default,,0000,0000,0000,,has something slow on it then that's dealt\Nwith in the IOC. So I mentioned the Dialogue: 0,0:35:47.69,0:35:53.68,Default,,0000,0000,0000,,interrupt status that gets funneled into\NIOC and then back out again. There's a Dialogue: 0,0:35:53.68,0:35:57.60,Default,,0000,0000,0000,,VSync interrupt, but not an HSync\Ninterrupt. You have to use timers for that, Dialogue: 0,0:35:57.60,0:36:01.50,Default,,0000,0000,0000,,really annoyingly. There's one timer and\Nthere's a 2 MHz timer available. I Dialogue: 0,0:36:01.50,0:36:05.20,Default,,0000,0000,0000,,think I had that in a previous slide,\Nforgot to mention it. So if you want to Dialogue: 0,0:36:05.20,0:36:09.73,Default,,0000,0000,0000,,do funny palette switching stuff or copper\Nbars or something - that's possible with the Dialogue: 0,0:36:09.73,0:36:13.40,Default,,0000,0000,0000,,timers, it's also simple hardware mod to\Nmake a real HSync interrupt as well. Dialogue: 0,0:36:13.40,0:36:18.53,Default,,0000,0000,0000,,There's some spare interrupt inputs on the\NIOC as an exercise for you . So the bit I Dialogue: 0,0:36:18.53,0:36:23.44,Default,,0000,0000,0000,,really like about this system, I mentioned\Nthat MEMC is not on the data bus. The VIDC Dialogue: 0,0:36:23.44,0:36:28.08,Default,,0000,0000,0000,,is only on the data bus and it doesn't\Nhave an address bus either. The VIDC is the Dialogue: 0,0:36:28.08,0:36:31.20,Default,,0000,0000,0000,,thing responsible for turning the frame\Nbuffer into video, reading that frame Dialogue: 0,0:36:31.20,0:36:35.51,Default,,0000,0000,0000,,buffer out of RAM, so on. So how does it\Nactually do that RAM read without the Dialogue: 0,0:36:35.51,0:36:40.78,Default,,0000,0000,0000,,address? Well, the MEMC contains all of\Nthe registers for doing this DMA: the Dialogue: 0,0:36:40.78,0:36:44.97,Default,,0000,0000,0000,,start of the frame buffer, the current\Nposition and size, and so on. They all Dialogue: 0,0:36:44.97,0:36:51.41,Default,,0000,0000,0000,,live in the MEMC. So there's a handshake\Nwhere VIDC sends a request up to the MEMC. Dialogue: 0,0:36:51.41,0:36:55.24,Default,,0000,0000,0000,,When it's FIFO gets low, the MEMC then\Nactually generates the address into the Dialogue: 0,0:36:55.24,0:37:01.10,Default,,0000,0000,0000,,DRAM, DRAM outputs that data and\Nthen the MEMC, gives an acknowledge Dialogue: 0,0:37:01.10,0:37:05.51,Default,,0000,0000,0000,,to the ARM Excuse me - too many\Nchips. The MEMC gives an acknowledged to Dialogue: 0,0:37:05.51,0:37:11.21,Default,,0000,0000,0000,,VIDC, which then latches that data\Ninto the FIFO. So this partitioning is Dialogue: 0,0:37:11.21,0:37:16.71,Default,,0000,0000,0000,,quite neat. A lot of the video, DMA.\NThe video DMA stuff all lives in MEMC and Dialogue: 0,0:37:16.71,0:37:20.80,Default,,0000,0000,0000,,there's this kind of split across the two\Nchips. The sound one I've just Dialogue: 0,0:37:20.80,0:37:24.84,Default,,0000,0000,0000,,highlighted one interrupt that comes from\NMEMC. Sound works exactly the same way, Dialogue: 0,0:37:24.84,0:37:27.73,Default,,0000,0000,0000,,except there's a double buffering scheme\Nthat goes on. And when one half of it Dialogue: 0,0:37:27.73,0:37:32.36,Default,,0000,0000,0000,,becomes empty, you get an interrupt so you\Ncan refill that so you don't glitch your Dialogue: 0,0:37:32.36,0:37:39.70,Default,,0000,0000,0000,,sound. So this all works really very\Nsmoothly. So finally the high res- mono Dialogue: 0,0:37:39.70,0:37:44.51,Default,,0000,0000,0000,,thing that I mentioned before is quite\Nnovel way they did that. Tudor had realized Dialogue: 0,0:37:44.51,0:37:49.93,Default,,0000,0000,0000,,that with one external component to the\Nshift register and running very fast, he Dialogue: 0,0:37:49.93,0:37:53.40,Default,,0000,0000,0000,,could implement this very high resolution\Nmode without really affecting the rest of Dialogue: 0,0:37:53.40,0:37:59.28,Default,,0000,0000,0000,,the chip. So VIDC still runs at \N24 MHz to sort of VGA resolution. It Dialogue: 0,0:37:59.28,0:38:05.29,Default,,0000,0000,0000,,outputs on a digital bus that was a test\Nboard, originally. It outputs 4 bits. So 4 Dialogue: 0,0:38:05.29,0:38:09.42,Default,,0000,0000,0000,,pixels in one chunk at 24 MHz and\Nthis external component then shifts Dialogue: 0,0:38:09.42,0:38:13.88,Default,,0000,0000,0000,,through that 4 times the speed. There's\None component. I mean, this is a Dialogue: 0,0:38:13.88,0:38:17.57,Default,,0000,0000,0000,,very cheap way of doing this. And as I\Nsaid, this high res- mode is very Dialogue: 0,0:38:17.57,0:38:23.01,Default,,0000,0000,0000,,unusual for machines of this era.\NI've got a feeling an A500 the top end Dialogue: 0,0:38:23.01,0:38:26.98,Default,,0000,0000,0000,,machine, if anyone's got one of these and\Nwants to try this trick and please get in Dialogue: 0,0:38:26.98,0:38:31.08,Default,,0000,0000,0000,,touch, I've got a feeling an \NA500 will do 1280 x 1024 by Dialogue: 0,0:38:31.08,0:38:35.75,Default,,0000,0000,0000,,overclocking this. I think all of the\Nparts survive it. But for some reason, Dialogue: 0,0:38:35.75,0:38:40.37,Default,,0000,0000,0000,,ACORN didn't support that on the board.\NAnd finally, clock selection VIDC on Dialogue: 0,0:38:40.37,0:38:44.84,Default,,0000,0000,0000,,some of the machines, quite flexible set\Nof clocks for different resolutions, Dialogue: 0,0:38:44.84,0:38:51.17,Default,,0000,0000,0000,,basically. So MEMC is not on the data bus.\NHow do we program it? It's got registers Dialogue: 0,0:38:51.17,0:38:55.26,Default,,0000,0000,0000,,for DMA and it's got all this address\Ntranslation. So the memory map I showed Dialogue: 0,0:38:55.26,0:39:00.91,Default,,0000,0000,0000,,before has an 8 MB space reserved for\Nthe address translation registers. It Dialogue: 0,0:39:00.91,0:39:04.69,Default,,0000,0000,0000,,doesn't have 8 MB of it. I mean,\Ndoesn't have two million... 32 bit registers Dialogue: 0,0:39:04.69,0:39:09.82,Default,,0000,0000,0000,,behind there, which is a hint of what's\Ngoing on here. So what you do is you write Dialogue: 0,0:39:09.82,0:39:14.41,Default,,0000,0000,0000,,any value to this space and you encode the\Ninformation that you want to put into one Dialogue: 0,0:39:14.41,0:39:19.54,Default,,0000,0000,0000,,of these registers in the address. So this\Naddress, the top three bits are 1 - it's Dialogue: 0,0:39:19.54,0:39:25.23,Default,,0000,0000,0000,,in the top 8 MB of the 64 MB\Naddress space and you format your Dialogue: 0,0:39:25.23,0:39:28.100,Default,,0000,0000,0000,,logical physical page information in this\Naddress and then you write any byte Dialogue: 0,0:39:28.100,0:39:35.48,Default,,0000,0000,0000,,effectively. This sort of feels\Nreally dirty, but also really a very nice Dialogue: 0,0:39:35.48,0:39:39.78,Default,,0000,0000,0000,,way of doing it because there's no other\Nspace in the address map. And this reads Dialogue: 0,0:39:39.78,0:39:45.07,Default,,0000,0000,0000,,to the the price balance. So it's not\Nworth having an address bus going into Dialogue: 0,0:39:45.07,0:39:49.81,Default,,0000,0000,0000,,MEMC costing 32 more pins just to write\Nthese registers as opposed to playing this Dialogue: 0,0:39:49.81,0:39:55.85,Default,,0000,0000,0000,,sort of trick. If you have that address \Nbus just for that data bus, just for Dialogue: 0,0:39:55.85,0:39:59.99,Default,,0000,0000,0000,,that, then you have to get to a more \Nexpensive package. And this was Dialogue: 0,0:39:59.99,0:40:05.14,Default,,0000,0000,0000,,really in their minds: a 68 pin chip\Nversus an 84 pin chip. It was a big deal. Dialogue: 0,0:40:05.14,0:40:08.72,Default,,0000,0000,0000,,So everything they really strived\Nto make sure it was in the very smallest Dialogue: 0,0:40:08.72,0:40:13.25,Default,,0000,0000,0000,,package possible. And this system\Npartitioning effort led to these sorts of Dialogue: 0,0:40:13.25,0:40:22.89,Default,,0000,0000,0000,,tricks to then program it. So on the\NA540, we get multiple MEMCs. Each one is Dialogue: 0,0:40:22.89,0:40:27.33,Default,,0000,0000,0000,,assigned a colored stripe here of the\Nphysical address space. So you have a Dialogue: 0,0:40:27.33,0:40:31.05,Default,,0000,0000,0000,,16 MB space, each one looks after \N4 MB of it. But then when you do a Dialogue: 0,0:40:31.05,0:40:36.04,Default,,0000,0000,0000,,virtual access in the bottom half of the\Nuser space, regular program access, all of Dialogue: 0,0:40:36.04,0:40:39.36,Default,,0000,0000,0000,,them light up and all of them will\Ntranslate that address in parallel. And Dialogue: 0,0:40:39.36,0:40:43.66,Default,,0000,0000,0000,,one of them hopefully will translate and\Nthen energize the RAM to do the read, for Dialogue: 0,0:40:43.66,0:40:49.93,Default,,0000,0000,0000,,example. When you put an ARM 3 in this\Nsystem, the ARM 3 has its cache and then Dialogue: 0,0:40:49.93,0:40:54.42,Default,,0000,0000,0000,,the address leads into the MEMC. So then\Nthat means that the address is being Dialogue: 0,0:40:54.42,0:40:58.24,Default,,0000,0000,0000,,translated outside of the cache or after\Nthe cache. So your caching virtual Dialogue: 0,0:40:58.24,0:41:02.90,Default,,0000,0000,0000,,addresses and as we all know, this is kind\Nof bad for performance because whenever Dialogue: 0,0:41:02.90,0:41:07.46,Default,,0000,0000,0000,,you change that virtual address space, you\Nhave to invalidate your cache. Or tag it, Dialogue: 0,0:41:07.46,0:41:11.46,Default,,0000,0000,0000,,but they didn't do that. There's other ways\Nof solving this problem. Basically on this Dialogue: 0,0:41:11.46,0:41:14.95,Default,,0000,0000,0000,,machine, what you need to do is invalidate\Nthe whole cache. It's quite a quick Dialogue: 0,0:41:14.95,0:41:23.54,Default,,0000,0000,0000,,operation, but it's still not good for\Nperformance to have an empty cache. The Dialogue: 0,0:41:23.54,0:41:28.39,Default,,0000,0000,0000,,only DMA present in the system is for the\Nvideo, for the video and sound. I/O Dialogue: 0,0:41:28.39,0:41:32.57,Default,,0000,0000,0000,,doesn't have any DMA at all. And this is\Nanother area where as younger engineer Dialogue: 0,0:41:32.57,0:41:35.97,Default,,0000,0000,0000,,"crap, why didn't they have DMA? That\Nwould be way better." DMA is the solution Dialogue: 0,0:41:35.97,0:41:40.99,Default,,0000,0000,0000,,to everyone's problems, as we all know.\NAnd I think the quote on the right Dialogue: 0,0:41:40.99,0:41:47.39,Default,,0000,0000,0000,,ties in with the ACORN team's discovery\Nthat all of these other processes needed Dialogue: 0,0:41:47.39,0:41:51.97,Default,,0000,0000,0000,,quite complex chipsets, quite expensive\Nsupport chips. So the quote on the right Dialogue: 0,0:41:51.97,0:41:56.54,Default,,0000,0000,0000,,says that if you've got some chips, that\Nvendors will be charging more for their Dialogue: 0,0:41:56.54,0:42:03.26,Default,,0000,0000,0000,,DMA devices even than the CPU. So not\Nhaving dedicated DMA engine on board is a Dialogue: 0,0:42:03.26,0:42:08.93,Default,,0000,0000,0000,,massive cost saving. The comment I made on\Nthe previous 2 slides about the system Dialogue: 0,0:42:08.93,0:42:14.44,Default,,0000,0000,0000,,partitioning, putting a lot of attention\Ninto how many pins were on one chip versus Dialogue: 0,0:42:14.44,0:42:19.38,Default,,0000,0000,0000,,another, how many buses were going around\Nthe place. Not having IOC having to access Dialogue: 0,0:42:19.38,0:42:25.02,Default,,0000,0000,0000,,memory was a massive saving in cost for\Nthe number of pins and the system as a Dialogue: 0,0:42:25.02,0:42:33.54,Default,,0000,0000,0000,,whole. The other thing is the FIQ mode\Nwas effectively the means for doing IO. Dialogue: 0,0:42:33.54,0:42:37.100,Default,,0000,0000,0000,,Therefore, FIQ Mode was designed to be an\Nincredibly low overhead way of doing Dialogue: 0,0:42:37.100,0:42:44.01,Default,,0000,0000,0000,,programed IO, having the CPU do the\NIO. So this was saying that the CPU is Dialogue: 0,0:42:44.01,0:42:48.85,Default,,0000,0000,0000,,going to be doing all of the IO stuff, but\Nlets just optimize it, let's make it make Dialogue: 0,0:42:48.85,0:42:53.93,Default,,0000,0000,0000,,it as good as it could be and that's \Nwhat led to the programmed IO. I also Dialogue: 0,0:42:53.93,0:42:57.85,Default,,0000,0000,0000,,remember ARM 2 didn't have a cache. If you\Ndon't have a cache on your CPU then Dialogue: 0,0:42:57.85,0:43:03.10,Default,,0000,0000,0000,,DMA is going to hold up the CPU anyway, \Nso no cycles. DMA is not any Dialogue: 0,0:43:03.10,0:43:06.96,Default,,0000,0000,0000,,performance gain. You may as well get\Nthe CPU to do it and then get the CPU to Dialogue: 0,0:43:06.96,0:43:13.03,Default,,0000,0000,0000,,do it in the lowest overhead way as possible.\NI think this can be summarized as bringing Dialogue: 0,0:43:13.03,0:43:17.41,Default,,0000,0000,0000,,the "RISC principles" to the system. So\Nthe RISC principle, say for your CPU, you Dialogue: 0,0:43:17.41,0:43:21.42,Default,,0000,0000,0000,,don't put anything in the CPU that you can\Ndo in software and this is saying, okay, Dialogue: 0,0:43:21.42,0:43:26.79,Default,,0000,0000,0000,,we'll actually software can do the IO just\Nas well without a cache as the DMA Dialogue: 0,0:43:26.79,0:43:29.80,Default,,0000,0000,0000,,system. So let's get software to do that.\NAnd I think this is a kind of a nice way Dialogue: 0,0:43:29.80,0:43:34.34,Default,,0000,0000,0000,,of seeing it. This is part of the cost\Noptimization for really very little Dialogue: 0,0:43:34.34,0:43:39.91,Default,,0000,0000,0000,,degradation in performance compared to\Ndoing in hardware. So this is an IO card. Dialogue: 0,0:43:39.91,0:43:43.38,Default,,0000,0000,0000,,The euro cards then nice and easy. The\Nonly thing I wanted to say here was this Dialogue: 0,0:43:43.38,0:43:48.84,Default,,0000,0000,0000,,is my SCSI card and it has a ROM on the\Nleft hand side. And so. This is the Dialogue: 0,0:43:48.84,0:43:53.73,Default,,0000,0000,0000,,expansion ROM basically many, many years\Nbefore PCI made this popular. Your drivers Dialogue: 0,0:43:53.73,0:43:58.95,Default,,0000,0000,0000,,are on this ROM. This is a SCSI disc\Nplugging into this and you can plug this Dialogue: 0,0:43:58.95,0:44:02.99,Default,,0000,0000,0000,,card in and then boot off the disk. You\Ndon't need any other software to make it Dialogue: 0,0:44:02.99,0:44:07.67,Default,,0000,0000,0000,,work. So this is just a very nice user\Nexperience. There is no messing around Dialogue: 0,0:44:07.67,0:44:11.69,Default,,0000,0000,0000,,with configuring IO windows or interrupts\Nor any of the iSCSI sort of stuff that was Dialogue: 0,0:44:11.69,0:44:17.87,Default,,0000,0000,0000,,going on at the time. So to summarize some\Nof the the hardware stuff that we've seen, Dialogue: 0,0:44:17.87,0:44:21.95,Default,,0000,0000,0000,,the ARM is pipelined and it has the load-\Nstore-multiple -instructions which make Dialogue: 0,0:44:21.95,0:44:27.95,Default,,0000,0000,0000,,for a very high bandwidth utilization.\NThat's what gives it its high performance. Dialogue: 0,0:44:27.95,0:44:32.67,Default,,0000,0000,0000,,The machine was really simple. So\Nattention to detail about separating, Dialogue: 0,0:44:32.67,0:44:37.24,Default,,0000,0000,0000,,partitioning the work between the chips\Nand reducing the chip cost as much as Dialogue: 0,0:44:37.24,0:44:44.57,Default,,0000,0000,0000,,possible. Keeping that balanced was really\Na good idea. The machine was designed when Dialogue: 0,0:44:44.57,0:44:49.40,Default,,0000,0000,0000,,memory and CPUs were about the same speed.\NSo this is before that kind of flipped Dialogue: 0,0:44:49.40,0:44:52.91,Default,,0000,0000,0000,,over. An 8 MHz ARM 2 was\Ndesigned to use 8 MHz memory. Dialogue: 0,0:44:52.91,0:44:56.51,Default,,0000,0000,0000,,There's no need to have a cache at all on\Nthere these days it sounds really crazy Dialogue: 0,0:44:56.51,0:45:01.41,Default,,0000,0000,0000,,not to have a cache on the CPU, but if your\Nmemory is not that much slower than this Dialogue: 0,0:45:01.41,0:45:07.81,Default,,0000,0000,0000,,is a huge cost saving, but it is also risk\Nsaving. This was the first real proper CPU. Dialogue: 0,0:45:07.81,0:45:11.67,Default,,0000,0000,0000,,If we don't count ARM 1 to say ARM 1 was a\Ntest, but ARM 2 is that, you know, the Dialogue: 0,0:45:11.67,0:45:16.49,Default,,0000,0000,0000,,first product CPU. And having a cache on\Nthat would have been a huge risk for a Dialogue: 0,0:45:16.49,0:45:20.64,Default,,0000,0000,0000,,design team that hadn't dealt with the\Nstructures that complicated at that Dialogue: 0,0:45:20.64,0:45:22.60,Default,,0000,0000,0000,,point. So that was the right\Nthing to do, I think Dialogue: 0,0:45:22.60,0:45:25.57,Default,,0000,0000,0000,,and I talked about DMA. I'm actually Dialogue: 0,0:45:25.57,0:45:28.64,Default,,0000,0000,0000,,converse on this. I thought this was crap.\NAnd actually, I think this was a really Dialogue: 0,0:45:28.64,0:45:33.32,Default,,0000,0000,0000,,good example of balanced design. What's\Nthe right tool for the job? Software is Dialogue: 0,0:45:33.32,0:45:37.76,Default,,0000,0000,0000,,going to do the IO, so let's make sure\Nthat FIQ mode, it makes sure that Dialogue: 0,0:45:37.76,0:45:44.64,Default,,0000,0000,0000,,there's low overhead as possible. We\Ntalked about system partitioning. The MMU. Dialogue: 0,0:45:44.64,0:45:49.30,Default,,0000,0000,0000,,I still think it's weird and \Nbackward. I think there is a Dialogue: 0,0:45:49.30,0:45:56.03,Default,,0000,0000,0000,,strong argument though that a more\Nfamiliar TLB is a massively complicated Dialogue: 0,0:45:56.03,0:45:59.34,Default,,0000,0000,0000,,compared to what they did here. And I\Nthink the main drive here was not just Dialogue: 0,0:45:59.34,0:46:06.12,Default,,0000,0000,0000,,area on the chip, but also to make it much\Nsimpler to implement. So it worked. And I Dialogue: 0,0:46:06.12,0:46:09.45,Default,,0000,0000,0000,,think this was they really didn't have\Nthat many shots of doing this. This wasn't Dialogue: 0,0:46:09.45,0:46:14.78,Default,,0000,0000,0000,,a company or a team that could afford to\Nhave many goes at this product. And I Dialogue: 0,0:46:14.78,0:46:20.66,Default,,0000,0000,0000,,think that says it all. I think they did a\Ngreat job. Okay. So the OS story is a Dialogue: 0,0:46:20.66,0:46:24.60,Default,,0000,0000,0000,,little bit more complicated. Remember,\Nit's gonna be this office automation Dialogue: 0,0:46:24.60,0:46:28.92,Default,,0000,0000,0000,,machine a bit like a Xerox star. Was going\Nto have this wonderful high res mono mode Dialogue: 0,0:46:28.92,0:46:33.73,Default,,0000,0000,0000,,and people gonna be laser printing from\Nit. So just like Xerox PARC, Acorn started Dialogue: 0,0:46:33.73,0:46:37.91,Default,,0000,0000,0000,,Palo Alto based research center.\NCalifornians and beanbags writing an Dialogue: 0,0:46:37.91,0:46:43.32,Default,,0000,0000,0000,,operating system using a micro kernel in\NModula-2 all of the trendy boxes ticked Dialogue: 0,0:46:43.32,0:46:49.40,Default,,0000,0000,0000,,here for the mid 80s. It was by the sounds\Na very advanced operating system and it Dialogue: 0,0:46:49.40,0:46:54.03,Default,,0000,0000,0000,,did virtual memory and so on, is very\Nresource hungry, though. And it was never Dialogue: 0,0:46:54.03,0:47:00.13,Default,,0000,0000,0000,,really very performant. Ultimately, the\Nhardware got done quicker than the Dialogue: 0,0:47:00.13,0:47:05.40,Default,,0000,0000,0000,,software. And after a year or two.\NManagement got the jitters. Hardware was Dialogue: 0,0:47:05.40,0:47:09.32,Default,,0000,0000,0000,,looming and said, well, next year we're\Ngoing to have the computer ready. Where's Dialogue: 0,0:47:09.32,0:47:13.17,Default,,0000,0000,0000,,the operating system? And the project got\Ncanned. And this is a real shame. I'd love Dialogue: 0,0:47:13.17,0:47:16.60,Default,,0000,0000,0000,,to know more about this operating system.\NVirtually nothing is documented outside of Dialogue: 0,0:47:16.60,0:47:21.57,Default,,0000,0000,0000,,Acorn. Even the people, I spoke to, didn't\Nwork on this. A bunch of people in Dialogue: 0,0:47:21.57,0:47:25.25,Default,,0000,0000,0000,,California that kind of disappeared with\Nit. So if anyone has this software Dialogue: 0,0:47:25.25,0:47:29.26,Default,,0000,0000,0000,,archived anywhere, then get in touch.\NComputer Museum around the corner from me Dialogue: 0,0:47:29.26,0:47:35.37,Default,,0000,0000,0000,,is raring to go on that. That'll be really\Ncool thing to archive. So anyway, they Dialogue: 0,0:47:35.37,0:47:39.98,Default,,0000,0000,0000,,had now a desperate situation. They had to\Ngo to Plan B, which was in under a year write Dialogue: 0,0:47:39.98,0:47:43.24,Default,,0000,0000,0000,,an operating system for the machine\Nthat was on its way to being delivered. Dialogue: 0,0:47:43.24,0:47:48.26,Default,,0000,0000,0000,,And it kind of shows Arthur was I mean, I\Nthink the team did a really good job in Dialogue: 0,0:47:48.26,0:47:53.16,Default,,0000,0000,0000,,getting something out of the door in half\Na year, but it was a little bit flaky. Dialogue: 0,0:47:53.16,0:47:57.16,Default,,0000,0000,0000,,RISC OS then a year later, developed\Nfrom Arthur. I don't know if anyone's Dialogue: 0,0:47:57.16,0:48:01.61,Default,,0000,0000,0000,,heard of RISC OS, but Arthur is\Nvery, very niche and basically got Dialogue: 0,0:48:01.61,0:48:07.17,Default,,0000,0000,0000,,completely replaced by RISC OS because\Nit was a bit less usable than RISC OS. Dialogue: 0,0:48:07.17,0:48:12.06,Default,,0000,0000,0000,,Another really strong point that this\Nhad it's quite a big ROM. So 2 MB going Dialogue: 0,0:48:12.06,0:48:17.40,Default,,0000,0000,0000,,up...sorry, 0,5 MB in the 80s going\Nup to 2 MB in the early 90s. Dialogue: 0,0:48:17.40,0:48:21.74,Default,,0000,0000,0000,,There's a lot of stuff in ROM. One of\Nthose things is BBC Basic 5. I know Dialogue: 0,0:48:21.74,0:48:29.29,Default,,0000,0000,0000,,it's 2019, and I know Basic is basic, but\NBBC Basic is actually quite good. It has Dialogue: 0,0:48:29.29,0:48:32.86,Default,,0000,0000,0000,,procedures and it's got support for all\Nthe graphics and sound. You could write GUI Dialogue: 0,0:48:32.86,0:48:36.66,Default,,0000,0000,0000,,applications in Basic and a lot of people\Ndid. It's also very fast. So Sophie Wilson Dialogue: 0,0:48:36.66,0:48:42.92,Default,,0000,0000,0000,,wrote this very, very optimized Basic\Ninterpreter. I talked about the modules Dialogue: 0,0:48:42.92,0:48:45.59,Default,,0000,0000,0000,,and podules. This is the expansion\NROM things. And a really great user Dialogue: 0,0:48:45.59,0:48:50.59,Default,,0000,0000,0000,,experience there. But speaking of user\Nexperience, this was ARTHUR . I never used Dialogue: 0,0:48:50.59,0:48:57.97,Default,,0000,0000,0000,,ARTHUR. I just dug out a ROM and had a\Nplay with it. It's bloody horrible. So that Dialogue: 0,0:48:57.97,0:49:03.82,Default,,0000,0000,0000,,went away quickly. At the time also. So\Npart of this emergency plan B was to take Dialogue: 0,0:49:03.82,0:49:08.21,Default,,0000,0000,0000,,the Acorn soft team who were supposed to\Nbe writing applications for this and get Dialogue: 0,0:49:08.21,0:49:12.08,Default,,0000,0000,0000,,them to quickly knock out an operating\Nsystem. So at launch, basically, this is Dialogue: 0,0:49:12.08,0:49:15.75,Default,,0000,0000,0000,,one of the only things that you could do\Nwith the machine. Had a great demo called Dialogue: 0,0:49:15.75,0:49:20.57,Default,,0000,0000,0000,,Lander, of a great game called Zarch,\Nwhich is 3D space. You could fly around, Dialogue: 0,0:49:20.57,0:49:27.03,Default,,0000,0000,0000,,it didn't have serious business\Napplications. And, you know, it was very Dialogue: 0,0:49:27.03,0:49:31.08,Default,,0000,0000,0000,,there was not much you could do with this\Nreally expensive machine at launch and Dialogue: 0,0:49:31.08,0:49:35.45,Default,,0000,0000,0000,,that really hurt it, I think. So let me\Nget RISC OS 2 in 1988 and this is now Dialogue: 0,0:49:35.45,0:49:42.22,Default,,0000,0000,0000,,looking less like a vomit sort of thing,\Nmuch nicer machine. And then eventually Dialogue: 0,0:49:42.22,0:49:46.75,Default,,0000,0000,0000,,RISC OS 3. It was drag and drop between\Napplications. It's all multitasking, Dialogue: 0,0:49:46.75,0:49:52.85,Default,,0000,0000,0000,,does outline font anti aliasing\Nand so on. So just lastly, I want to Dialogue: 0,0:49:52.85,0:49:55.77,Default,,0000,0000,0000,,quickly touch on the really interesting\Noperating systems that ACORN had a Unix Dialogue: 0,0:49:55.77,0:49:59.08,Default,,0000,0000,0000,,operating system. So as well as being a\Ngeek, I'm also UNIX geek and I've always Dialogue: 0,0:49:59.08,0:50:04.61,Default,,0000,0000,0000,,been fascinated by RISCiX. These machines\Nare astonishingly expensive. They were Dialogue: 0,0:50:04.61,0:50:08.19,Default,,0000,0000,0000,,the existing Archimedes machines with a\Ndifferent sticker on. So that's A540 with Dialogue: 0,0:50:08.19,0:50:14.85,Default,,0000,0000,0000,,a sticker on the front. And this OS\Nwas developed after the Archimedes was Dialogue: 0,0:50:14.85,0:50:18.36,Default,,0000,0000,0000,,already designed at that point when this\NOS was being developed. So Dialogue: 0,0:50:18.36,0:50:20.95,Default,,0000,0000,0000,,there's a lot of stuff about the hardware\Nthat wasn't quite right for a Unix Dialogue: 0,0:50:20.95,0:50:26.23,Default,,0000,0000,0000,,operating system. 32K page size on a 4\Nmegabyte machine really, really killed you Dialogue: 0,0:50:26.23,0:50:29.90,Default,,0000,0000,0000,,in terms of your page cache and and that\Nkind of thing. They turned this into a bit Dialogue: 0,0:50:29.90,0:50:35.09,Default,,0000,0000,0000,,of an opportunity. At least they made good\Non some of this. There was a quite a novel Dialogue: 0,0:50:35.09,0:50:42.38,Default,,0000,0000,0000,,online decompression scheme for you to\Ndemand a page- text from a binary Dialogue: 0,0:50:42.38,0:50:46.17,Default,,0000,0000,0000,,and it would decompress into your 32K\Npage, but it was stored in a Dialogue: 0,0:50:46.17,0:50:53.66,Default,,0000,0000,0000,,sparse way on disk. So actually on disk\Nuse was a lot less than you'd expect. The Dialogue: 0,0:50:53.66,0:50:56.64,Default,,0000,0000,0000,,only way it fit on some of the\Nsmaller machines. Dialogue: 0,0:50:56.64,0:51:02.16,Default,,0000,0000,0000,,Also Acorn TechL the department that\Ndesigned the cyber truck it turns out. Dialogue: 0,0:51:02.16,0:51:06.23,Default,,0000,0000,0000,,This was their view of the A680,\Nwhich is an unreleased workstation. Dialogue: 0,0:51:06.23,0:51:08.94,Default,,0000,0000,0000,,I love this picture.\NI like that piece of cheese or Dialogue: 0,0:51:08.94,0:51:13.38,Default,,0000,0000,0000,,cake as the mouse. That's my favorite\Npart. But this is the real machine. So Dialogue: 0,0:51:13.38,0:51:18.73,Default,,0000,0000,0000,,this is an unreleased prototype I found at\Nthe computer museum. It's notable. And Dialogue: 0,0:51:18.73,0:51:22.13,Default,,0000,0000,0000,,it's got 2 MEMCs. It's got a 8MB of\NRAM. It's only designed to run RISC iX, Dialogue: 0,0:51:22.13,0:51:26.10,Default,,0000,0000,0000,,the Unix operating system and has highres\Nmonitor only doesn't have color, who's Dialogue: 0,0:51:26.10,0:51:30.28,Default,,0000,0000,0000,,designed to run frame maker and driver\Nlaser printers and be a kind of desktop Dialogue: 0,0:51:30.28,0:51:35.25,Default,,0000,0000,0000,,publishing workstation. I've always been\Nfascinated by RISC iX, as I said a while Dialogue: 0,0:51:35.25,0:51:41.45,Default,,0000,0000,0000,,ago I hacked around on ArcEm for a while.\NI got it booting in ArcEm. I'd never seen Dialogue: 0,0:51:41.45,0:51:46.64,Default,,0000,0000,0000,,this before. I never used a RISC iX\Nmachine. So there we go, it boots, it is Dialogue: 0,0:51:46.64,0:51:51.13,Default,,0000,0000,0000,,multi-user. But wait, there's more. It has\Na really cool X-Server, a very fast one. I Dialogue: 0,0:51:51.13,0:51:54.73,Default,,0000,0000,0000,,think Sophie Wilson again worked on\Nthe X server here. So it's very well Dialogue: 0,0:51:54.73,0:51:58.02,Default,,0000,0000,0000,,optimized and very fast for a machine of\Nits era. And it makes quite a nice little Dialogue: 0,0:51:58.02,0:52:02.90,Default,,0000,0000,0000,,Unix workstation. It's quite a cool little\Nsystem, by the way Tudor, the guy that Dialogue: 0,0:52:02.90,0:52:07.10,Default,,0000,0000,0000,,designed the VIDC and the IO system called\Nme a sado forgetting this working in Dialogue: 0,0:52:07.10,0:52:14.15,Default,,0000,0000,0000,,there. That's my claim to fame. Finally,\Nand I want to leave some time for Dialogue: 0,0:52:14.15,0:52:19.51,Default,,0000,0000,0000,,questions. There's a lot of useful stuff\Nin ROM. One of them is BBC Basic. Basic Dialogue: 0,0:52:19.51,0:52:23.01,Default,,0000,0000,0000,,has an assembler so you can walk up to\Nthis machine with a floppy disk and write Dialogue: 0,0:52:23.01,0:52:29.53,Default,,0000,0000,0000,,assembler has a special bit of syntax\Nthere and then you can just call it. And Dialogue: 0,0:52:29.53,0:52:32.46,Default,,0000,0000,0000,,so this is really powerful. So at school\Nor something with the floppy disk, you can Dialogue: 0,0:52:32.46,0:52:37.20,Default,,0000,0000,0000,,do something that's a bit more than basic\Nprograming. Bizarrely, I mostly write that Dialogue: 0,0:52:37.20,0:52:41.42,Default,,0000,0000,0000,,with only two or three tiny syntax errors\Nafter about 20 years away from this. It's Dialogue: 0,0:52:41.42,0:52:46.06,Default,,0000,0000,0000,,in there somewhere. Legacy wise, the\Nmachine didn't sell very many under a Dialogue: 0,0:52:46.06,0:52:50.93,Default,,0000,0000,0000,,hundred thousand easily. I don't think it\Nreally made a massive impact. PCs had Dialogue: 0,0:52:50.93,0:52:54.64,Default,,0000,0000,0000,,already taken off by then. The ARM\Nprocessor, not going to go on about the Dialogue: 0,0:52:54.64,0:52:58.92,Default,,0000,0000,0000,,company. That's clear that that\Nobviously has changed the world in many Dialogue: 0,0:52:58.92,0:53:04.14,Default,,0000,0000,0000,,ways. The thing I really took away from\Nthis exercise was that a handful of smart Dialogue: 0,0:53:04.14,0:53:10.09,Default,,0000,0000,0000,,people. Not that many. No, order of a dozen\Ndesigned multiple chips, designed a custom Dialogue: 0,0:53:10.09,0:53:14.60,Default,,0000,0000,0000,,computer from scratch, got it working. And\Nit was quite good. And I think that this Dialogue: 0,0:53:14.60,0:53:17.38,Default,,0000,0000,0000,,really turned people's heads. It made\Npeople think differently that the people Dialogue: 0,0:53:17.38,0:53:21.16,Default,,0000,0000,0000,,that were not Motorola and IBM really,\Nreally big companies with enormous Dialogue: 0,0:53:21.16,0:53:27.48,Default,,0000,0000,0000,,resources could do this and could make it\Nwork. I think actually that led to the Dialogue: 0,0:53:27.48,0:53:30.81,Default,,0000,0000,0000,,thinking that people could design their\Nsystems on the chip in the 90s and that Dialogue: 0,0:53:30.81,0:53:35.31,Default,,0000,0000,0000,,market taking off. So I think this is\Nreally key in getting people thinking that Dialogue: 0,0:53:35.31,0:53:40.42,Default,,0000,0000,0000,,way. It was possible to design your own\Nsilicon. And finally, I just want to thank Dialogue: 0,0:53:40.42,0:53:45.28,Default,,0000,0000,0000,,the people I spoke to and Adrian and\NJason. Their center of computing history in Dialogue: 0,0:53:45.28,0:53:49.05,Default,,0000,0000,0000,,Cambridge. If you're in Cambridge, then\Nplease visit there. It's a really cool Dialogue: 0,0:53:49.05,0:53:56.27,Default,,0000,0000,0000,,museum. And with that, I'll wrap up. If\Nthere's any time for questions, then I'm Dialogue: 0,0:53:56.27,0:53:58.36,Default,,0000,0000,0000,,getting a blank look. No time for\Nquestions? Dialogue: 0,0:53:58.36,0:54:01.89,Default,,0000,0000,0000,,Herald: There's about 5 minutes left for\Nquestions. Dialogue: 0,0:54:01.89,0:54:07.88,Default,,0000,0000,0000,,Matt: Fantastic! Or come up to me afterwards.\NI'm happy to chat more about this. Dialogue: 0,0:54:07.88,0:54:18.94,Default,,0000,0000,0000,,{\i1}applause{\i0}\NHerald:The first question is for the Dialogue: 0,0:54:18.94,0:54:29.80,Default,,0000,0000,0000,,Internet. Signal angel, will you?\NWell, grab your microphones and get the Dialogue: 0,0:54:29.80,0:54:36.70,Default,,0000,0000,0000,,first of the audio in the room here. There\Nthat microphone, please ask a question. Dialogue: 0,0:54:36.70,0:54:44.13,Default,,0000,0000,0000,,Mic1: You mentioned that the system is\Nmaking good use of the memory, but how is Dialogue: 0,0:54:44.13,0:54:50.46,Default,,0000,0000,0000,,that actually not completely being\Nstalled on memory? Having no cache and Dialogue: 0,0:54:50.46,0:54:55.45,Default,,0000,0000,0000,,same cycle time for the cache- for the\Nmemory as for the CPU. Dialogue: 0,0:54:55.45,0:55:01.00,Default,,0000,0000,0000,,M: Good question. So how is it not always\Nstalled on memory ? I mean. Well, it's Dialogue: 0,0:55:01.00,0:55:04.39,Default,,0000,0000,0000,,sometimes stalled on memory when you do\Nsomething that's non sequential. You have Dialogue: 0,0:55:04.39,0:55:08.87,Default,,0000,0000,0000,,to take one of the slow cycles. This was\Nthe N cycle. The key is you try and Dialogue: 0,0:55:08.87,0:55:11.47,Default,,0000,0000,0000,,maximize the amount of time that you're\Ndoing sequential stuff. Dialogue: 0,0:55:11.47,0:55:16.22,Default,,0000,0000,0000,,So on the ARM 2 you wanted to unroll loops\Nas much as possible. So you're fetching Dialogue: 0,0:55:16.22,0:55:19.80,Default,,0000,0000,0000,,your instructions sequentially, right? You\Nwanted to make as much use of load-store Dialogue: 0,0:55:19.80,0:55:24.29,Default,,0000,0000,0000,,multiples. You could load single registers\Nwith an individual register load, but it Dialogue: 0,0:55:24.29,0:55:28.71,Default,,0000,0000,0000,,was much more efficient to pay that cost.\NJust once the start of the instruction and Dialogue: 0,0:55:28.71,0:55:33.62,Default,,0000,0000,0000,,then stream stuff sequentially. So you're\Nright that it is still stalled sometimes, Dialogue: 0,0:55:33.62,0:55:37.14,Default,,0000,0000,0000,,but that was still a good\Ntradeoff, I think, for a system that Dialogue: 0,0:55:37.14,0:55:40.55,Default,,0000,0000,0000,,didn't have a cache for other reasons.\NM1: Thanks. Dialogue: 0,0:55:40.55,0:55:45.14,Default,,0000,0000,0000,,Herald: Next question is for the Internet.\NSignal Angel: Are there any Acorns on Dialogue: 0,0:55:45.14,0:55:49.84,Default,,0000,0000,0000,,sale right now or if you want to get into\Nthis kind of hardware where do you get it? Dialogue: 0,0:55:49.84,0:55:52.81,Default,,0000,0000,0000,,Herald: Can you repeat the first sentence,\Nplease? Sorry, the first part. Dialogue: 0,0:55:52.81,0:55:56.26,Default,,0000,0000,0000,,S: If you want to get into this kind of\Nhardware right now, if you want to buy it Dialogue: 0,0:55:56.26,0:55:58.84,Default,,0000,0000,0000,,right now.\NM: Yeah, good question. How do you Dialogue: 0,0:55:58.84,0:56:06.36,Default,,0000,0000,0000,,get hold of one drive prices up on eBay? I\Nguess I hate to say it. Might be fun to Dialogue: 0,0:56:06.36,0:56:09.17,Default,,0000,0000,0000,,play around in emulators. Always\Nperfer that to hack around on the Dialogue: 0,0:56:09.17,0:56:12.31,Default,,0000,0000,0000,,real thing. Emulators always feel a bit\Nstrange. There are a bunch of really good Dialogue: 0,0:56:12.31,0:56:19.18,Default,,0000,0000,0000,,emulators out there. Quite complete. Yeah,\NI think it just I would just go on Dialogue: 0,0:56:19.18,0:56:23.26,Default,,0000,0000,0000,,auction sites and try and find one.\NUnfortunately, they're not completely Dialogue: 0,0:56:23.26,0:56:27.83,Default,,0000,0000,0000,,rare. I mean that's the thing, they\Ndid sell. Not quite sure. Exact figure, Dialogue: 0,0:56:27.83,0:56:31.50,Default,,0000,0000,0000,,but you know, there were tens and tens of\Nthousands of these things made. So I would Dialogue: 0,0:56:31.50,0:56:35.13,Default,,0000,0000,0000,,look also in Britain more than elsewhere.\NAlthough I do understand that Germany had Dialogue: 0,0:56:35.13,0:56:40.17,Default,,0000,0000,0000,,quite a few. If you can get a hold of one,\Nthough, I do suggest doing so. I think Dialogue: 0,0:56:40.17,0:56:46.26,Default,,0000,0000,0000,,they're really fun to play with.\NHerald: OK, next question. Dialogue: 0,0:56:46.26,0:56:51.86,Default,,0000,0000,0000,,M2: So I found myself looking at the\Ndocumentation for the LVM/STM instructions Dialogue: 0,0:56:51.86,0:56:58.05,Default,,0000,0000,0000,,while devaluing something on ARM just last\Nweek. And just maybe wonder what's your Dialogue: 0,0:56:58.05,0:57:04.03,Default,,0000,0000,0000,,thought? Are there any quirks of the\NArchimedes that have crept into the modern Dialogue: 0,0:57:04.03,0:57:06.90,Default,,0000,0000,0000,,ARM design and instruction set that you\Nare aware of? Dialogue: 0,0:57:06.90,0:57:13.45,Default,,0000,0000,0000,,M: Most of them got purged. So there are\Nthe 26 bits adressing. There was a Dialogue: 0,0:57:13.45,0:57:19.41,Default,,0000,0000,0000,,couple of strange uses of, there is an XOR\Ninstruction into PC for changing flags. So Dialogue: 0,0:57:19.41,0:57:25.16,Default,,0000,0000,0000,,there was a great purge when the ARM 6 was\Ndesigned and the ARM 6. I should know Dialogue: 0,0:57:25.16,0:57:31.56,Default,,0000,0000,0000,,this ARM v3. That's got 32 bit addressing\Nand lost this. These weirdnesses Dialogue: 0,0:57:31.56,0:57:35.69,Default,,0000,0000,0000,,got moved out.\NI can't think of aside from just the Dialogue: 0,0:57:35.69,0:57:40.62,Default,,0000,0000,0000,,resulting ARM 32 instructions that being\Nquite quirky and having a lot of good Dialogue: 0,0:57:40.62,0:57:46.79,Default,,0000,0000,0000,,quirks. This shifted register as sort of a\Nfree thing you can do. For example, you Dialogue: 0,0:57:46.79,0:57:52.06,Default,,0000,0000,0000,,can add one register to a shifted register\Nin one cycle. I think that's a good quirk. Dialogue: 0,0:57:52.06,0:57:55.12,Default,,0000,0000,0000,,So in terms of the inheriting that\Ninstruction set and not changing those Dialogue: 0,0:57:55.12,0:58:05.96,Default,,0000,0000,0000,,things. Maybe that counts?\NHerald: Any further questions? Internet, Dialogue: 0,0:58:05.96,0:58:11.44,Default,,0000,0000,0000,,any new questions? No? Okay, so in that \Ncase one round of applause for Matt Evans. Dialogue: 0,0:58:11.44,0:58:13.58,Default,,0000,0000,0000,,M: Thank you. Dialogue: 0,0:58:13.58,0:58:21.14,Default,,0000,0000,0000,,{\i1}applause{\i0} Dialogue: 0,0:58:21.14,0:58:27.68,Default,,0000,0000,0000,,{\i1}postroll music{\i0} Dialogue: 0,0:58:27.68,0:58:43.66,Default,,0000,0000,0000,,Subtitles created by c3subtitles.de\Nin the year 2021. Join, and help us!