Good afternoon friends, and welcome back to super computing. We're live here at theCUBE in Dallas. I'm joined by my co-host, David. My name is Savannah Peterson, and our fabulous guest. I feel like this is almost his show to a degree, given his role at Dell. He is the vice president of HPC over at Dell. Roger Pohani, thank you so much for being on the show with us. How you doing? Thank you guys. I'm doing okay. It's good to be back in person. It's a great show. It's really filled in nicely today, and a lot of great stuff happening. It's great to be around all of our fellow hardware nerds. The Dell portfolio grew by three products, I believe. Can you give us a bit of an intro on that? Sure, well, yesterday afternoon and yesterday evening, we had a series of events that announced our new AI portfolio, our official intelligence portfolio, which will really help scale where I think the world is going in the future with the creation of all this data and what we can do with it. So, yeah, it was an exciting day for us yesterday. We had a session over in a ballroom where we did a product announce, and then in the evening had an unveil in our booth here at the Super Compute Conference, which was pretty eventful. Cupcakes, champagne, drinks, and most importantly, Yeah, sounds like we've been on for a good time. Should we get the invite? Most importantly, some really cool new servers for our customers. Well, tell us about them. Yeah. So what's new, what's in the news? Well, you know, as you think about artificial intelligence and what customers are needing to do, and the way artificial intelligence is going to change how, you know, frankly, the world works, we have now developed and designed new purpose-built hardware, new purpose-built servers for a variety of AI and artificial intelligence needs. We launched our first eight-way, you know, NVIDIA H100, A100, SXM product yesterday. We launched a four-way H100 product yesterday and a two-U, fully liquid-cooled Intel Datacenter Max GPU server yesterday as well. So, you know, a full range of portfolio for a variety of customer needs, depending on their use cases, what they're trying to do, their infrastructure, we're able to now provide, you know, servers and hardware that help, you know, meet those needs and those use cases. So, I want to double-click. You just said something interesting, water-cooled. Yeah. So where does, at what point do you need to move in the direction of water-cooling?  It all depends on what the customers are trying to accommodate, right? I think that there's a dichotomy that's existing now between customers who have already or are planning liquid-cooled infrastructures and power distribution to the rack. So you take those two together and if you have the power distribution to the rack, you want to take advantage of the density. To take advantage of the density, you need to be able to cool the servers and therefore liquid-cooling comes into play. Now, you have other customers that either don't have the power to the rack or aren't ready for liquid-cooling and at that point, you know, they're not going to want to take advantage, they can't take advantage of the density. So there's this dichotomy in products and that's why we've got our XE9640, which is a 2U dense liquid-cooled, but we also have our XE8640, which is a 4U air-cooled, right? Or liquid-assisted air-cooled, right?  You don't have to take advantage of the density, the expense of liquid-cooling, unless you're ready to do that. Otherwise, we've got this other option for you. And so that's really what dichotomy is beginning to exist in our customers' infrastructures today. I was curious about that. So do you see, is there a category or a vertical that is more in the liquid-cooling zone because that's a priority in terms of the density or, yeah. Yeah, I mean, you've got your large HPC installations, right?  You've got, you know, federal government installations. You've got financial tech installations. You've got colos that are built for sustainability and density and space that can also take advantage of it. Then you've got others that are, you know, more enterprises, more in the mainstream of what they do where, you know, they're not ready for that. So it just depends on the scale of the customer that we're talking about and what they're trying to do and where they're doing it. So we hear, you know, we hear a supercomputing conference and HPC is sort of the kind of trailing, mini version of supercomputing in a way where maybe you have someone who, they don't need two million CPU cores, but maybe they need 100,000 CPU cores. So it's all a matter of scale. What is, can you identify kind of an HPC sweet spot right now as Dell customers are adopting the kinds of things that you just announced? You know, I think- How big are these clusters at this point? Well, let me hit something else first. I think people talk about HPC as something really specific. And what we're seeing now with the, you know, vast amount of data creation, the need for computational analytics, the need for artificial intelligence, the HPC is kind of morphing, right, into, you know, more and more general customer use cases. And so where before you used to think about HPC is research and academics and computational dynamics. Now, you know, there is a significant Venn diagram overlap with just regular artificial intelligence, right? And so that is beginning to change the nature of how we think about HPC. You think about the vast data that's being created. You've got data-driven HPC, where you're running computational analytics on this data that's giving you insights or outcomes or information. It's not just, hey, I'm running, you know, physics calculations or astronomical calculations. It is now expanding in a variety of ways where it's democratizing into, you know, customers who wouldn't actually talk about themselves as HPC customers. And when you meet with them, it's like, well, yeah, but your compute needs are actually looking like HPC customers. So let's talk to you about these products. Let's talk to you about these solutions, whether it's software solutions, hardware solutions, or even purpose-built hardware like we talked about. That now becomes the new norm. Customer feedback and community engagement is big for you. You know, this portfolio of products that was developed based on customer feedback, correct? Yep. So everything we do at Dell is customer-driven. We want to drive customer-driven innovation, customer-driven value to meet our customers' needs. So yeah, we spent a while researching these products, researching these needs, understanding is this one product, is it two products, is it three products? Talking to our partners, driving our own innovation and IP, and then where they're going with their road maps to be able to deliver kind of a harmonized solution to customers. So yeah, it was a good amount of customer engagement.  I'm like, hey, we've talked about this, this is what you said you wanted. Now, he was representative of a group of customers and we validated that with other customers and it's also a way of me making sure he buys it. But it's heavily customer-driven and that's where understanding those use cases and where they fit drove the various products in terms of capability, in terms of size, in terms of liquid versus air cooling, in terms of things like number of PCIe lanes, right? What the networking infrastructure was going to look like. All customer-driven, all designed to meet where customers are going in their artificial intelligence journey, in their AI journey. It feels really collaborative. I mean, you've got both the Intel and the Nvidia GPU on your new product. There's a lot of co-lab between academics and the private sector. What has you most excited today about supercomputing? What it's going to enable. If you think about what artificial intelligence is going to enable, it's going to enable faster medical research, right? Genomics, the next pandemic, hopefully not anytime soon, we'll be able to diagnose, we'll be able to track it so much faster through artificial intelligence, right? The data that was created in this last one is going to be an amazing source of research to go address stuff like that in the future and get to the heart of the problem faster. If you think about manufacturing and process improvement, you can now simulate your entire manufacturing process. You don't have to run physical pilots, right? You can simulate it all, get 90% of the way there, which means you're either a factory process, we'll get reinvented faster, or a new factory can get up and running faster. Think about retail, how retail products are laid out. You can use media analytics to track how customers go through the store, what they're buying, you can lay things out differently. You're not going to have in the future people going to test cell phone reception, can you hear me now, can you hear me now? You can simulate where customers are, patterns to ensure that the 5G infrastructure is set up to the maximum advantage. All of that through digital simulation, through digital twins, through media analytics, through natural language processing, customer experience is going to be better, communication's going to be better, all of this stuff with using this data, training it and then applying it is probably what excites me the most about supercomputing and really computing the future. So on the hardware front, kind of digging down below the covers, the surface a little more, Dell has been well known for democratizing things in IT, making them available at a variety of levels. Never a one size fits all company. These latest announcements would be fair to say they represent sort of the tip of the spear in terms of high performance. What about RPC, regular performance computing? Where's the overlap, because we're in this season where we've got AMD and Intel leapfrogging one another, new bus architectures, the connectivity that's plugged into these things are getting faster and faster and faster. So from a Dell perspective, where does my term RPC, regular performance computing and HPC begin? Are you seeing people build stuff on kind of general purpose clusters also? Well, sure, I mean, you can run a good amount of artificial acceleration on high core count CPUs without acceleration. And you can do it with PCIe accelerators, and then you can do it with some of the very specific high performance accelerators like the Intel data center max GPUs or NVIDIAs A100 or H100. So there are these scale up opportunities. If you think about our mission to democratize compute, not just HPC, but general compute, is about making it easier for customers to implement to get the value out of what they're trying to do. So we focus on that with reference designs or validated designs that take out a good amount of time that customers would have to do it on their own. We can cut by six to 12 months the ability for customers. I'm going to use an HPC example and then I'll come back to your regular performance compute by us doing the work, us determining the configuration, determining the software packages, testing it, tuning it so that by the time it gets to the customer, they get to take advantage of the expertise of Dell engineers, Dell scale, and they are ready to go in a much faster point of view. The challenge with AI is, and he talked to customers, they all know what it can lead to and the benefits of it. Sometimes they just don't know how to start. We are trying to make it easier for customers to start. Whether it is using regular RPC or non-optimized, non-specialized compute, or as you move up the value stack into compute capability, our goal is to make it easier for customers to start to get on their journey and to get to what they're trying to do faster. So where do I see regular performance compute? They go hand in hand, right? As you think about what customers are trying to do and I think a lot of customers, like we talked about, don't actually think about what they're trying to do is high performance computing. They don't think of themselves as one of those specialized institutions that are HPC but they're on this glide path to greater and greater compute needs and greater and greater compute attributes that merge kind of regular performance computing and high performance computing to where it's hard to really draw the line, especially when you get to data-driven HPC. Data's everywhere. And so much data and it sounds like a lot of people are very early in this journey from our conversation with Travis. I mean, five AI programs per very large company or less at this point for 75% of customers. That's pretty wild.  Last question for you, you've been at Dell 24 years. 25 in this coming March. What has a company like that done to retain talent like you for more than two and a half decades? You know, for me, and I'd like to say I had an atypical journey, but I don't think I have, right, there has always been opportunity for me, right? You know, I started off as a quality engineer. A couple of years later, I'm living in Singapore, running services for enterprise and APJ. I come back a couple of years in Austin, then I'm in our Bangalore Development Center helping set that up, then I come back, then I'm in our Taiwan Development Center helping with some of the work out there. And then I come back. There has always been the next opportunity before I could even think about am I ready for the next opportunity? And so for me, why would I leave, right? Why would I do anything different given that there's always been the next opportunity? The other thing is jobs are what you make of it and Dell embraces that. So if there's something that needs to be done or there was an opportunity or even in the case of our AI ML portfolio, we saw an opportunity, we reviewed it, we talked about it and then we went all in. So that innovation, that opportunity and then most of all the people at Dell, right? I can't ask to work with a better set of folks from the top on down. Simple as that. So it's culture. It is culture. Really at the end of the day. It is culture. That's fantastic. Roger, thank you so much for being here with us. Thank you guys. The show. Thanks. Really appreciate it. Really appreciate it. Yeah, this was such a pleasure and thank you for tuning into theCUBE. Live from Dallas, here at Supercomputing, my name is Savannah Peterson and we'll see y'all in just a little bit.


begin This is an unusually a large number of people here today wonder Why that is So it's midterm week. I'm sure you guys were At home over spring break thinking I can't wait to get back to Beautiful Buffalo so that I can take midterm in 421 521 So but that's what we're going to do this week So today able to review Wednesday's the exam and on Friday We will go over the exam and solutions in class and we will resume our normally scheduled programming next Monday as I've announced several times there are Reduced office hours this week partly because we don't have an assignment out also partly so that the TAs won't kill me when I asked them to grade a hundred and fifty exams starting on Friday So we will probably also have office hours a little skimpy next week as well I know that assignment 3 will be out we'll keep I think we'll keep to the original schedule But some of the normal TAs may be busy grading your exams rather than helping you with assignment 3 All right, so today what we'll do is we'll go over a couple of practice exams. There are now I think five exams posted online maybe six midterms Two two five I think there are six actually I think there are six previous midterms There were two years where I gave two exams last year I gave one and there was a practice for the first year. So there's plenty of ways to Prepare I would suggest that if you guys want to practice you sit down with one of these and try to do it in 50 minutes So it's these are available All the lecture slides are up this year in a nice format. So I feel like you guys have plenty of information to prepare So anyway, let's just go through the exam people haven't taken a look at it before the first ten questions are supposed to be quite easy and Usually people find them that way Hello, oh, oh, hello, okay Forget to do something All right Okay, oh Whoops my apologies Oops All right, so The place where people will probably have the most fun is on the long answer questions We'll get to those in a minute. The short answer questions are not intended to be very difficult. So here's an example We've talked about several cases where operating systems provide some sort of illusion to processes. What are some examples of these? What's one? somebody anybody Right so by time-slicing the processor we can make it look like each process has its own CPU and Potentially we can hopefully make it look to processes like there are many more CPU cores on the machine than the machine actually physically has So that's one illusion. What's another one? Yeah Yeah, Adamissides, so that's not a bad one using synchronization primitives We can make it look like a single of act a set of actions It actually required doing multiple things that aren't atomic from the perspective of the machine our atomic with respect to the code That's executed. So they exit they they sort of complete as a block, right another good one What's another one more recent from memory? Yeah Yeah, we did concurrency got currency animosity. What else? Yeah, address basis So I'm gonna make it look like you have this huge contiguous, you know, two to the 31 bytes of virtual address Of memory, right? We know now that those addresses are virtual addresses and that memory isn't necessarily real But that's the illusion we provide to processes because it's used, right? Those were probably the answers we were looking for there may be some other ones as well. All right. Oh This thing's going to drive me nuts today, okay Okay, so here we go. I like this question So we've talked about and then there may be a question like this on the exam I've written the exam so I know exactly what's on the exam So this question is not on the exam of course because I never reuse questions Which means unfortunately for you guys every year the exams get more and more bizarre, right? It's just like stranger and stranger things. I have to think I'm just kidding the exam this year is fine It's not bizarre at all So we we've talked about how locking share data structures can cause Things to slow down Ideally when I have multiple cores, I want things to be able to proceed independently on those four So they don't get in each other's way, but once I have to grab a lock Effectively what I'm doing is I'm serializing Multiple threads that I want to be able to actually execute concurrent right, so here's So here's some example code that we gave you And the question was how do you change the locking strategy in this piece of code? To improve concurrency, so let's scroll down a little bit show you the code snippet What's happening here is that there's an array of some structure and threads are looping in order to deposit some Value into this structure. They're looping through this structure Looking for a value claiming the value and writing some data into it What they're doing in this code example right now is that they're doing this while they hold some lock that protects the data structure from concurrent accesses because if I didn't have a lock it's possible that two threads Would overwrite each other's deposits or would overwrite each other's values Right, so I want to make sure that every thread finds a unique spot in this data structure to use okay So first of all, what's the problem here and that the the question also pointed out that you were you were instructed to assume that this This array is usually pretty crowded usually have a lot. It has a lot of values in it So it's unlikely that I'm going to be able to find a value quickly. I probably gonna have to investigate a couple of different entries So what's the problem? How is this going to slow things down on a multi-core system? Yeah Okay, well, we have the beginnings of a solution here, but let's let's describe the problem here first, right? So what's the problem? Yeah Yeah, so okay, so there's there's one little minor knit here, which is that we're starting from the beginning every time You know you could fix that that's not necessarily going to make a huge difference But you know if I had written this a little more careful I might have chosen a random index to start at but it's a great point I certainly if I'm putting things in an honor of an array To optimize for performance, I don't want to start at the beginning So so that's one problem, but but what's the more fundamental problem with this code? What is it? What is it doing that we don't want to do? Yeah? Yeah, there's a Great answer. There's a big critical section For performance reasons. We want to creep our critical sections as small as possible This is looping over a potentially large and crowded array while holding a lock So the critical section now includes this whole loop Which I told you could potentially take a while to terminate because there may not be very many empty entries in this particular data structure Okay, so starting with Gila's answer. What how can I do better? Do I need to do somebody give me? Okay, so so ideally I want to protect only the right operation. So so what's one sort of? What's one maybe obvious solution that comes to mind What could I do rather than having one big lock? For the entire table What else could I do? Right, so I got to have a single lock per entry unfortunately the Text and your intuition as programmers should push back against that idea a little bit why? It's going to cause your array to get quite a bit bigger probably at least twice as big Depending on how efficient your locking data structures are but putting a lock on every entry is not really Appropriate and in fact the question text instructed you not to do that Well, it didn't say not do that specifically it said don't dramatically change the spatial requirements for this particular piece of code So I can't do that. What can I do? I've got to use one in theory. I'm going to use one lock That seems like the thing. I'm I can't use many. I might as well stick with one. What can I do to optimize the? user reader writer lock Okay, I think I could get that to work. I can they actually do something that's even simpler. Yeah All right, so one thing I could do is I can move the lock inside the for loop Like it only grab the lock When I'm checking the value So how is this better it is maybe better it's not Best this full credit better, but we're going in the right direction. What's better about this? Yeah doesn't know They have three or four threads that are trying to acquire they're trying to do this simultaneously What's better about moving it inside the for right? So the idea is I've had multiple threads I don't have this in systems. We sometimes call this front of the line blocking So I don't have a guy at the beginning of the line who's spinning through the entire array holding the lock who is preventing Everybody behind him for making progress instead. What can happen is that multiple threads sort of simultaneously will be moving through the array So that sounds good, but have I really reduced the size of the critical section here at all? Well, no answer my question first. Yeah No, no, no, I want to do this step-by-step, right? I mean maybe people see what the answer is but have I reduced the size if I move the lock to here, right? And I drop it and acquire it every time I move through the array. Have I shortened the critical section? Yeah, damn Well, remember I'm grabbing it even before I check anything about the array, right? Yeah, okay. Well, let's we'll get there, right? But but one thing is I could put it right after here, which would allow more interleaving, right? So that would improve the ability of multiple threads to search simultaneously But the total amount of time a thread would have to acquire the lock would still be the same So what what can I do top? Okay, so I can move it inside the if statement So I take my lock acquire and I put it here now. Where am I going to drop the lock? Before the break Yeah, I could probably drop it actually right here once I'm done modifying the global structure, but whatever. It doesn't really matter So is this safe if that's all I do Let's say that all I do is I take my lock acquire and I put lock acquire here And I put lock release here or after failed and it doesn't really matter. Yeah, right? How? What can happen? Yeah Right. I have two threads that essentially simultaneously They check that a particular index is valid. They're both checking the same index They both see that it's not valid Now one of them grabs the lock and sets it to be valid and stores an entry and the other one grabs the lock and Overwrites the entry that the first guy just wrote. So this is exactly what I didn't want to happen This solution is essentially equivalent to not using a lock at all But I made some progress here. What else do I need to do? Yeah No, you could you can but that's there's a better solution Yeah, okay, and I don't have a new locking structure. I have to use the locks. I have yeah, right? So remember I it's not safe to rely on the value that's stored inside the shared data structure Until I have the lock, but that doesn't mean that I can't use that value as a hint So the the solution here is to move the lock here Once I grab the lock. I have to recheck valid So the first thing I do once I get the lock is I have to make sure that valid is still zero if Valid is has changed That means that somebody else raced in there and beat me to it and then I have to break out drop the lock and keep looking But the idea here is that I'm only going to acquire the lock when I think that I've found a valid Entry that I can use this makes sense. Does anyone have questions about this? Again as long as I only read the value of valid as a hint, right? This is I'm only reading it to I could never write it without the lock I cannot modify the shared data structure without the lock But I can read the shared data structure without the lock as long as I only use it as a hint about when to acquire the lock So that solution works quite well Right and in most cases it reduces the critical section to only a couple of instructions Any questions about this example? Yeah, yeah, so that's a good point, right? It's it's possible that if I do it this way I may need to loop through the array again or do something else to make sure that I haven't That my hint hasn't failed, right? I Try to think about if that actually I Think I'm only going to miss fire though if it looks like it's free But but you're right It's also possible that that value is changing to one, right? So it's possible that I read it without the lock and then right after I read it It changes to zero and I missed a chance to find that entry. This is a good point This may affect the ability of this solution to find a valid entry, right? And I might need to there might be another way to fix this, right? So for example, I can maintain a count of the number of valid entries in the array to make sure that when I'm finished If I fail out I failed out because there's really no space, right? On the other hand with an example like this if you think about it given that there's always Items coming in and out of the array It's always unclear when to stop looking right because even in the first case when I have the global lock I might need to drop it let some people take some items out of the array and then reacquire it and look again Right, so whenever I have a shared data structure like this. It's always possible. I need to wait a little bit, right? Of course, I could use a CV to do that. It's a good point Any other questions about this particular example, but this is a common approach to safely using read access to data structures as a hit which is read lock read again Okay. Yeah What's that? Right Yep Yep, absolutely. Yeah, the idea here is that this will allow multiple threads to search the array Simultaneously right without having one thread blocking everybody from from proceed All right Hey All right, maybe a little bit easier three system calls that allocate virtual addresses Maybe one Or two sec three S break for M map there's others. Those are the big ones and The semantics associated with each I'll let you guys review that that this is you know Some of these are are pretty much straight from election notes M map M map give me some virtual addresses that point to a file Okay, so question five This question asks you to think about new month So yeah, Diana Yeah, like how do they allocate virtual addresses, right? You know s break. I asked the Colonel to move the breakpoint so I can have more heat. That's that's semantics What do they do? How do they work? All right, so this question I'm looking at a new miss system So this is something I will commonly ask you guys to do on exams or on midterms is to think about a system with some Properties that are different in the systems that we're using used to talk about and Apply but apply some of our design principles to these systems I find these questions fun to write and I think they're a good chance for you guys to think about How you're actually going to use knowledge in this class in the future, okay?  I want to give you guys to see You guys applying the design principles that you're learning to new problems So here's an example. I have a new ma machine What that means is that? The latency associated with accessing memory is non uniform but most of the machines you guys are used to thinking about the memory accesses are Relatively late relatively uniform. I've got memory and you know memories got some low-level details And things like that but all else being equal reading a bite of memory Performs identically regardless of the bite of physical memory that I'm actually reading on a new system This is in the case and there's all sorts of different reasons why this could be true memory could be on another machine Memory might I might have a system with so many cores that I can't provide the same memory latencies to all of them If memory is literally farther away on the physical chip or something like that Anyway, the point is that I've got memory But not all memory on a new machine performs identically for every core so and Imagine that the way this machine is set up is is describing the question is that I have some memory that's fast And then a larger amount of memory that's slow so the first thing it asks you is How does? the design this particular design complicate My address space abstraction What additional consideration does this introduce into the address space abstraction that processes have not been used to? What was one of the things that I liked about the address space abstraction? What what additional complication does this introduce or should look up the statistics? Maybe nobody answered this question. It's too weird Why it's not that complicated Yeah, that's right. That's the that is something that we've noticed in the past But the smaller the number of people that answer a question the higher the average is Especially with these questions where you can pick multiple ones Yeah Yeah, sure. I mean this is not it's not designed to be a trick question The idea is now where the OS puts stuff even when it's in physical memory matters So I might have two pages that to the process or side by side But those pages even when they're paged in right? It's one thing to stall a process while I go get a page from disk and move it back into memory It's another thing where the process the pages are there But there's this one page that's slower than the other page both in memory. They're both physically resident But the performance on those two pages is different. Yeah So this the second part of the question I think what which is I think what you're answering is at a high level describe a way to make use of this Numa property And it asks you to use a system design principle that we've talked about it at a high level If I have some memory that's fast and some memory that's slow I have a small amount of memory that's fast of course and a large amount of memory that's slow What do I do? Yeah Yeah, I'm more gentle than that though. Yeah Yeah, these are all variants of what principle. Yeah Make it into a cache right the heart that the the computer the the computer a series of caches, right? I've got registers. I've got L1 L2 L3 caches now. I've got a cache in memory, too I've got a small amount of memory then I'm going to use to cache The contents and I'm going to use the same cache management principles I use everywhere else when something is Accessed a lot. I put it. I try to move it into that part of memory so that performance improves When something is accessed less frequently, it's okay to put it in a slower part of now That was it. So I don't yeah, I guess Maybe maybe people answer these questions based on word count, right? That's another deceiving property. I will point out actually the longer the question is the more likely it is that I've told you something about the answer in the question The short ones are the ones that get you. Yeah Yeah Use it as a cache. I think we accepted that answer for basically full points. All right to schedule in algorithms How about three or four that we've talked about what's one? Random what's two on robin three? All that little feedback cues rotating staircase. There's four, right? Not a not a difficult question. Okay I think we have one more the short answer Now we get to my favorites Yeah, I'm not even gonna go through. Well Okay, geez This is the part of the exam where you can rest your brain a little bit, right? These questions are not designed to be that hard, okay? So here's my process page table like I said before because I'm the nicest person on earth I always use base 10 arithmetic on these nothing has changed this year. I haven't gotten any meaner And so I've got a hundred bite pages. There's my page table You know, I've got permissions in there. I've got a physical page number I have a virtual page number and just ask you to translate these addresses, right? So let's do one of them together a Store to address 365,000 for what is the virtual page number? I Do assume you can separate base 10 numerals into their significant figures 365,000 bite pages. This is the offset. So 365 is my virtual page number What is that map to? 8308 that's my physical page number and do I have permission to store a value to this address? Yes, it's RWE. Okay, so what results is a store to address 8,300,008,000 for That makes sense Not particularly this this year's is a little more interesting, but not terribly terribly interesting. So whatever you guys will get it Okay, any questions about this? Yeah, what's that? What's E under permission Execute that comes in handy when I'm doing a fetch, right? So fetch is Going to fetch and execute Something a bite from that particular address It's a good question. All right Onward, okay, so there will be two long answer questions of which you are free to choose one. Please don't answer both of them So last year's okay, so the first one was about smartphone interactivity detection We had discussed internet we've discussed interactivity detection in class in Terms of and so so what first of all I think the first part of this problem is so so one piece of advice and The TA's definitely noticed this last year while grading them in terms follow the instructions Okay, these questions have first second Next, you know, I mean you can circle the parts of the question you need to answer It's amazing how many people don't even bother doing that They just ramble about something sort of semi-related to the question It's very difficult to assign them points because they didn't do the things that we asked them to do So please just follow the questions are very clear In fact this year there's even points embedded in the question So you know how we're going to grade them, you know what you need to do So please just make sure you complete complete the question So first describe the interactivity Detection problem and explain why this information is generally important to thread scheduling You want to take a take a run at that? Yeah So what is okay, so what is interactivity detection? Broadly speaking there are two types of tasks going on on your system Interactivity detection is distinguishing between yeah, you want to continue, right? So so what are interactive threads doing? Yeah No, no, that's that's a heuristic that we used to try to figure out which ones they are from a high level What are they doing? Yeah What's that even a higher level than that very simple answer this question. Yeah Well, they could be doing that they might not be yeah maybe Yeah Maybe Something you're gonna notice Right, they're interacting with you. They're they're doing something That you're gonna notice if it slows down All the thing you guys mentioned are examples of that But there are threads that are somehow involved in communicating with you or that are somehow You know driving information to your eyeballs Okay, a thread that's going in background and doing a bunch of reorganization of your disk It's not typically something you're going to notice unless you're sitting there staring at that disc defrag screen for some reason, right? Anyway, the point is that if the threat is involved in some way, okay now The you know the fact that this is the interactivity detection problem should maybe give you a hint that Something the same something like oh the threat is sleeping a lot is not high level enough, right? That what makes this challenging is it's very hard to determine which tasks are which it's very easy to think about it Conceptually, it's not a hard distinction to make but from the perspective of the system given the information the system has available It's very difficult to Determine right Okay, so Two reasons why interactivity interactivity detection could be even more important on Mobile Smartphone Tell me why this problem is important on mobile devices Yeah Exact right so one big reason is the these are battery constrained devices, so If I make a bad decision and I allow a thread that you don't a task a Process that you don't even notice to do all sorts of work That's not that you're not you're not interacting with you don't understand it's happening Then you're going to pull your phone out first of all it's going to get warm of course You're going to know something's wrong because you have this little pocket warmer all of a sudden And then you're going to pull it up and the battery is going to be almost dead and it's noon Right, and that's when something has gone wrong There you know I have made a mistake. There was all this activity going on you didn't even notice So that's one reason The other reason is simply that you know another possible reason would be simply that people Spend a lot of time interacting with these devices right pull out my phone. I want to check my email I do that quickly. I put it back in my pocket I don't spend a lot of time staring at it. It has this sort of passive role a lot of the time, right? You know with my email client or with some interactive thing on my desktop if it takes a little longer to deliver a notification That's okay, right with the phone when I'm interacting with it. I may be trying to put it away as soon as possible I hope that's what you guys are doing right rather than like navigating through the whole staring at it You might walk into something Okay, so So now consider how the differences between smartphones and traditional devices affect the interactivity detection problem and Propose a new approach to interactive detection that responds to these differences So it asks you to compare with traditional devices So what's what's so what are some of the things that are different about smartphones from traditional devices? Other than the things we've already talked about the things We've already talked about our problems Right the device runs out of battery too soon What are some opportunities? That I might be able to take advantage of on smartphones to improve interactivity detection. Yeah, so that's a great point, right? Smartphones because they have a smaller screen. There's just one thing that I'm doing at a particular time So an easy like they have really super easy heuristic is like and this is actually something that Android does whatever's in the foreground Meaning it's painting the screen Is the thing that gets higher priority on a desktop, you know I've got two monitors that are that wide who knows the desktop doesn't know what I'm looking at the smartphone does There's only one thing that's painting right so that's that's one Thing that that the solution we gave people credit for noticing. What are some other things? Yeah, damn Okay, so yeah, it's possible that the well the touchscreen You could probably map mouse events to touch screens, but I think you're headed in the right direction here Smartphones have some capabilities that typical devices don't have They have cameras on them sort of by default They know where they are They have sensors that can detect Orientation and other things on some level there is a lot more information available to smartphones that you could potentially plug into This problem by default your laptop doesn't have a GPS chip Maybe some of them do now, but most of them might not By default, you know fancy laptops have I guess maybe all laptops now have forward-facing cameras But you know in the past they happen desktops a lot still a lot of them don't so these were some of the differences we were asking you guys to notice and If you notice them, you didn't really have to talk We weren't asking you to come up with the next latest greatest schedule in algorithm We just wanted you guys to see some of the opportunities and challenges of doing interactivity on this class of device Any questions about this problem? All right Let's look at the second question. Okay, so jumbo pages Well, I think we got about to the same point last year with VM So this question should be something you guys should be able to think about So jumbo pages We talked about 4k pages That's been a very traditional page size, but there are systems now that are starting to support larger pages First explain why and in what cases 64k pages would improve or degrade OS performance so What's the So give me a case where they're gonna improve performance. I think we actually talked about the classes. Yeah What's yeah, so what's the general principle here, right? Bigger pages are gonna be good if there's a certain property that holds Yeah, so in general spatial locality helps me if If I use one byte on a particular page What's the probability? I'm going to use all the other bytes on that page Imagine one byte pages With a one byte page the probability that I'm going to use another byte on that page is Well zero because I already used the one byte that I used to get it in but essentially a hundred percent, right? I use one byte. I use everybody on the page with an infinitely sized page The probability I'm going to use every other byte is zero Every other size in between there's some trade-off so with pages like ones that might be used to store video or audio the The data is so big You know a page might only store less than a second of a high-def video So what's the probability these are going to hit pause? Right in the middle of that page very small Clearly when I hit pause I'm going to be on some page But even if I'm using 64k pages the probability is very very high that once I hit one byte on that page I need the whole thing so I shouldn't have it broken up into eight pages so Okay, so and then this is essentially the answer to the second question part of this question Which is what information about virtual memory use could help the OS decide whether to locate content on a jumbo or regular size page And what I want to know are the axis patterns on that page so the spatial locality on that page That's not necessarily information that the OS can gather We'll talk about that a little bit after midterm week, but it is the information that I would want Want to know what the probability is I'm going to use One or more other bytes on that page. Ideally the entire page Second explain how in certain cases you can implement jumbo page like functionality on top of an existing system that supports 4k pages without changing the underlying memory management Hardware so you're you're like, you know, you're you're working at this silly software company your boss He's not going to actually be able to change the hardware Right pretend you have an MMU that only supports 4k pages How can you get jumbo page like? functionality Without actually having jumbo pages, right whenever I get a page fault, right actually sorry a TLB fault in a particular region I Load a bunch of other pages while I'm in the process of paging in that particular page I also grab a bunch of other pages So when the page has been swapped out when I have a hit inside a particular Super page region that consists of 16 pages. I get every other page as well. Does that make sense? Actually technically this little more flexible than 64k pages because I can get you know Eight pages on either side of the page. It was faulted. I don't even have to break it up in this very static way I can just grab a little bit of data before and after So what benefits of jumbo pages are preserved or lost? So what MMU features are required for this to work? I think the answer was essential. I need to be able to see TLB faults I don't remember have to look at the look at the solution which benefits of jumbo pages are preserved or lost by your approach What benefit is preserved what we just talked about so I should reduce the fault rate Because when I get one fault if the other pages around that page were actually really needed If I go get them it means that the process is not going to fault again for a couple of more pages. That's good But what's the real reason? Potentially at the MMU level to use jumbo pages What's a benefit that I'm going to lose if I really don't have jumbo page support in the MMU and in the TLB? Yeah, you know the translation speed will be the same Yeah, yeah, I can I can implement continuity if I want to What was our other trade-off with page size? Yeah, essentially remember the trade-off with page size was page size too small Lot great spatial locality can't map very much memory with a fixed size TLB page size too big can map a lot of memory, but very little spatial locality And so the benefit of 64k pages is that one TLB entry can now map 16 times more memory than with the traditional 4k page If I use this hacky way of preloading entries into the TLB based on fault behavior and surrounding pages I lose that benefit. I'm like, but you know I gain the other ones Okay questions about this Question All right, any other general questions about this exam? I will go over I will switch to one of the 2013 exams for just the last five minutes What is this yep, okay, what do you guys want to see short answer? Long answer Okay, nothing All right long answer. Ah, okay, cool This is 2013 that the first question has to do with being able to predict wait times so remember when we were talking about Schedulers one of the things we wanted to know was when a thread sleeps How long is it going to sleep? So this question asks you to think about a couple of different ways to do this All right very quickly what are what are some cases in which thread sleep times might be extremely predictable Remember when I put a thread on a weight cue It's waiting for something to happen What are cases where I might be able to predict how long that thing's going to take? What are some events that would land a thread on a red cue that I'd probably be able to predict how long it's gonna take? Yeah What's that? Okay, I want to play it's a little more specific. It's not what's that Okay, that's that's interesting. I could potentially try to use the past to predict the future here But in certain cases I have threads that might be doing a variety of different things with different distributions We're gonna all get combined. Let's say I just want to know something about what it's doing. Yeah Yeah, so certain things on your system. I Probably something that you can mull One thing would be disk IO So is there going to be some variance in disk IO? Yeah, of course because other Threads and processes are also using the disk But it's likely that if I know how long the disk cue is I might be able to guess And certainly I can produce a bound I can probably say it's very you know It's very likely that this thread will wake up within this amount of time. What's another like? What's a really simple example here? Yeah, okay, so it's a lock Okay, I like the second answer better locks not so much because that depends on other threads. Oh clock Sorry, okay. Yeah timer right if it's waiting for a timer to go off at that point I know exactly how long it's going to wait for that. I don't have to do any prediction at all, right? Yeah, sorry. It was like a lot Clock yes, it's waiting for a timer. Great. What are some cases where this would be highly unpredictable? Or I might as well just give up and not even try Yeah Way down the user. What else? Yeah network traffic Not not going to be doable Depends on the quality of the website that you're visiting Okay, so If I could have this information, how would I incorporate it into a scheduling algorithm? Let me give you an example. It's a really really high priority threat That goes to sleep What do I want to ensure the highest priority threat in the system? Yeah, I I want to be there when it wakes up, right? Immediately, I don't want to have another thread in the middle of some big timer quantum that I've set up I want to be ready, right? So ideally for example as It the time that it's waking up is approaching what I want to do is I want to schedule a thread to run right? Until the point where it's going to wake up So when that thread thricks context which is out Literally the moment that the high priority thread gets back from the weight queue It is immediately chosen by the schedule. So essentially I want the Scheduling process to happen as soon after it gets off the weight queue as I can That you know that that's that's one of the examples. I think there was there would maybe one other one, okay? Okay last But not least This well, I Don't think we do we talk about this this year. It's one of the lectures. I Didn't give something. I skipped over. I'm not sure we really talked about threading models So actually I think we did but I don't know. I don't really care you can look up this this question In the solution, I don't think I spend as much time on this particular problem this year All right, let me know the couple minutes up any general questions Really gonna discuss this. Yeah Yeah Yeah, I mean if you guys asked during an exam the TAs would tell you what those instructions did, right? I don't expect you to have memorized the entire MIPS Instruction set. I mean the the exams I give are I try to be as conceptual as possible, right? I'm other than Every year the stupid plug-and-chug VM translation example The rest of the exam is really aimed at getting you to think and not regurgitate Like random stuff that you from a MIPS data sheet that you forgot to memorize So yeah, that wasn't really the point of of that question But it's fair, right? The goal of the midterm is to be fair I don't want to I don't want to penalize people because they didn't memorize some silly thing I mean there are things you need to know But yeah, there are things that we've covered in class All right, any other questions? Good luck. So the process will be the same as the pre-term We will get in here early. We'll have exams on seats. It'll be a seating chart an hour beforehand Please plan on leaving codes in the back or in the front And we will start once a reasonable number of people are seated and ready to go I will see you on Wednesday


The women have earned every MOS that they are in. They have proved that they can do it. They have proved that they are worthy of being in every MOS that we have in the Marine Corps. I am very pleased that we have come this far. I know I'm a trailblazer. I know I have opened doors for women and I am very proud that the fact that they have walked through those doors and and they have continued to open doors for those that are going to be coming behind them. We have proved that we are worthy to be called Marines and we have worked very hard at and we continue, the women are continuing to work very hard at proving that they are Marines.


So I'm going to talk about my fight, my personal fight with modern laptops, which you might say is a bit of a quick sci-fi, but that's why I say personal. But before I start, I have to thank my employer for giving me some time to come here. I'm not speaking for them, these are my words, not theirs, but they still gave me some time during the week to prepare for this and come along. And that also being said, if you're interested in working in Hong Kong in finance, I'm hiring. I don't know if this is the right crown, but they asked me to say that. So I'm a developer and a system engineer, and I've been doing that for many years. Which just means that I feel like I want to actually control the hardware I've got. And by doing that, I can make it work the way I want it to work. Part of that means that when things change, they often change in a way that I don't like. So when I go and look for a new laptop, about five years ago, it was when this first happened, I said, hang on, none of the laptops out there are ones that I like. Which may be a little bit grumpy and make me want to say, OK, what can I actually change about this? What can I fix? How can I make myself less grumpy? How do I kind of be productive about this? So what that meant was I look around and I say, what hardware is there? What can I use? What have they done to the features I used to like? What is it that I can change? And looking at all the bits on the laptops that have changed, all the things that have disappeared, like various ports that I used to like and use, there was one thing that stood out as being important. One thing that I could possibly actually address was the keyboard on the laptop. There was this very, very clear change in the way that keyboards on laptops were. And mostly it was a layout, but some of it was the way they felt as well. But it was a small enough thing, keyboards are kind of an isolated part of the laptop, but I thought, OK, let's see if I can change that. Is there a way I can make the laptop better for me by fiddling with the keyboard? And just as an example of some of the things that I saw on the laptops that changed, this, I thought, was a very strange design choice over here where the cat clock key used to be. Now, they didn't do this for many other laptops, but this was the kind of thing I was looking at and going, why would you do that? Who wants this? So I moved on to slightly less controversial changes. On the right, we have the laptop, at the time, was the laptop that I could purchase as my upgrade. And on the left was the laptop that had the features that I actually wanted. And I could see that there was a fairly significant set of changes between these two laptops. Not massive changes, a lot of people would say, but I'd be using that layout for about 10 years when they changed it. And that was all my muscle memory, all my, where my keys and my fingers went. It all changed. So I could deal with some of the changes they made, like they've gone the island keys, which apparently is trendy these days. I don't mind that. It's just a thing.  So, oh, look, if you look here on these keys, I'm not going to show that very well on this, but there's a gap around each key. So each key is an island to itself. Whereas over here, it's also a little bit hard for me to tell you. You can see they kind of sloped way to the edges, so there's no gap between each key. And if you look at around about, like I said, about five, six years ago, every laptop changed. Oh, it's like the chicklet. I don't know if chicklet is the right word. I think chicklet is an implementation detail. But physically, they changed the shape. So, and they called it island keys. It was a, I think Apple did it first, so they did it as well. So this was the keyboard that I was looking at. Yes? Yeah. Well, it's got missing keys. So there's an entire row of keys gone on the X230. You look at the top row here, the entire row of keys are gone. And the feel of the keyboard was different, right? I was really used to the feel of the keyboard as well as the layout. So I said, OK, is this something that's possible to change? So I pulled it apart the laptop and discovered that the actual keyboard itself, the connector on the keyboard I liked matched the connector on the motherboard for the new laptop. Oh, well, you know, maybe I could just plug it in. Maybe it'll just work. But they did actually add some new features with the new laptop. See, it turns out you can't just plug it in. You end up with little bits of the circuit board blowing up. If you're lucky. If you're unlucky, big bits of the circuit board blow up and the mouse keys stop working or maybe some of the other keys stop working. The backlight that they put into the keyboard actually had the backlight went through it. And so the old keyboard didn't support the backlight. The new keyboard did. So the new laptop short circuited through the old keyboard and caused a bit of damage. Not, if you're lucky, too much.  Other people said that they had problems. Then we've got the actual differences between the two keyboards. When I plugged it in successfully, a lot of the keys work. But the two differences, the extra row of keys, they're all mapped up. They didn't work properly. And the function key combos you could get on your laptop, they didn't work properly. The decals on the function keys don't match with what the functions actually did anymore. Other people worked out a way of actually fixing this. They got a razor blade and the fine bits of wire and rewired where the keys were on the keyboard. I wasn't going to do that, so I didn't. But the keys that weren't working turned out they're all still physically connected. Found a circuit diagram. It showed me all the connections were there. So all the keys were actually available to be used. It's just they're not plumbed in in software. Which again meant that okay, if it's software, I should be able to just apply a patch and make a change. But this is in the keyboard controller in the embedded firmware on the laptop itself. So it's not something that a lot of people have access to. It turns out I found that there was somebody who had reverse engineered some of their keyboard controller and something that was even older than my laptop that was 10 years old. And it had a keyboard table in there. So I was able to use that to look at the firmware that I had from my new laptop and I had from my old laptop and compare it to the firmware that somebody else had reverse engineered. And they all had exactly the same keyboard table, exactly the same layout. And I was like, oh look, all the keys are there. I just have to patch in the same keyboard map to adjust it so that it had the missing keys featured. It turns out that didn't actually fix the problem because of something else. Quick question. The both laptops physically and both keyboard physically are interchangeable. There was no dimension change. Yeah, no. There's no dimension change. That was part of why I chose this as a simple target that I could actually achieve. So newer laptops have some dimensional changes without changing some of the keyboard connectors. I haven't tried that yet, but later on in the talk. If you want to know what an embedded controller is, it's just another CPU that's on your computer. In this laptop, it controls the battery as well. In a lot of laptops, it probably will. But the primary thing for me was it controlled the keyboard. And I couldn't actually patch it because it's protected by a signature. There's a check sums and there's some encryption in there. So I was kind of stalled at that point. I had a patch that I thought would work, but I couldn't apply it to the keyboard. Until this guy, he was looking at the other part. He was looking at the battery. He said, I want my battery to work, my aftermarket battery to work. So he blogged on how he got that working and wrote a series of articles and some software that allowed me to actually then reflash my embedded controller. So thanks to Matthew for doing that. But even after doing that, it still didn't work. None of the keys that were completely unfunctional became functional after my patch. Some of the keys that were in the wrong spot, I could change around. But the ones that were dead keys remained dead keys. And the ones that were the function combos, they didn't change at all because I hadn't changed that patch.  The Matthew Chapman's work allowed me to decrypt the firmware, which allowed me to then apply some reverse engineering, which allowed me to use a tool called Radair, which had the ability to reverse engineer the CPU firmware. So this tool allows you to then look closely at it, label the parts you've found, work out how they relate to each other, and move on from there to saying, ah, I figured out where things were. So it's got a bit of a learning curve and it needed a bunch of fixes to make the CPU work. But that was all just took time. It was relatively straightforward stuff. There's plenty of tutorials about that. And amongst the other tools that I used is a thing called VBindiff. It's a very handy tool if you're doing reverse engineering stuff because it's very easy to use. And it can show you the differences between two binary files.  So I lined them all up in this tool and you can see it showing me right there in red, the places where the keyboard table differs between the two laptops. So I could look at that and I could say, OK, here's how I can structure the kind of patch. My first stock try of the patch was basically just this, copying the data from the old laptop to the new laptop. And then applying that with a hex editor. So I've got another tool that I use called HTE, which is a very handy little bundle of tools. It'll do hex editing. It'll do searching of binaries quite competently. It also has a bit of an assembler and a disassembler in there. It's kind of all in one thing. So it's just a little toolkit to have. And using these three things and a lot of reverse engineering time, I was able to find some structures in the firmware to work out where the things were. So the first thing I found, obviously, was the keysim array, which is the list of where on the keyboard produces what key press.  This firmware was a bunch of lists to lists of lists. So there was all kinds of things in there. And some of them were the ones that needed to be touched to fix the rest of it. So I kind of at this point was posting a couple of, hey, has anybody looked at this? And found somebody in Russia called Nitrocaster who said, hey, I can help you with this. So he actually identified there was a bitmap in the firmware of which keys actually worked. So when I applied my patch and some of the keys produced no key press, it was because this bitmap wasn't right. So he found that and he said, why don't you try this? So we added that to the map of structures that it found and then continued on looking. And we both together found where the keyboard table was for the function key presses. Turns out there were two of those. So we found them and tried them as well. There's a lot more of these tables in the firmware. There's quite a lot more. There's about 30 or 40 kilobytes worth of these tables. And this is just, I don't know, maybe a tenth of what I found. I did end up with automated tools to do some of this, especially to produce these diagrams. But this is just the keyboard part. And part of what I was doing is once I'd worked out that there was all these lists, he's going through and saying it's not this. Stop looking at that one. It's not this. Stop looking at that one. But isolating it down to the actual entries that happened to have the firmware patch that I needed to apply. So after doing all that, I did actually successfully patch my keyboard. So I've got the X230 laptop, which was at the time relatively new. And the X220 keyboard successfully in there. And it's like two things that didn't work. There's no caps lock key on the X230. So I couldn't work out a way of, no caps lock light. So I couldn't work out a way of turning the caps lock light on the old keyboard. And one or two other things that are similarly not going to stop me from using it as a day-to-day keyboard. So then we published it. And this is where my situation changed. We went to the ThinkPad forums where people had been whinging about these keyboards for quite some time. And we said, this is what we've done. We've successfully changed the keyboards over. This is exactly what everybody's been asking for. But turns out that what we'd done wasn't something that people could follow.  We had to put together all the patches we did into a repository and say, here. Here is everything collected together. And I published it again. And that's when I discovered that I didn't actually know who my audience was. My collection of patches that I put together into a GitHub repository and said, here's all the tools you need was suitable for somebody who was perhaps a developer. But most of the people on the forums who were asking for these kind of patches, they weren't developers. They probably didn't even know what Git was, let alone GitHub. So I had to step back and go, right. Rewrite all of these, change the instructions, automate it as much as possible and say, what can I do to make this simple for you? Hand it a little bit by my question of, no, I can't just send you the binary results because this is actually somebody else's copyrighted firmware. And it's a big company and I don't want them angry with me. I want them, in fact, happy with me so they send me more laptops. So that was kind of a difficult thing to do to streamline it. It's gone to the point where I think people can apply it, but it's a learning experience for people who haven't actually touched development environments before. And that led to the next thing. Once it was relatively easy for people to apply, everybody came out of the woodwork and said, but I've got a different laptop. Can you support my laptop? And it turned out we could. There's about seven different laptops that ended up being supported from this ThinkPad range. They're all from the approximate the same era. But there is structure in there for me to try and disassemble laptops from other eras because it's still something I want to be able to do is look at newer laptops. And then asking the question of can I automate it even better for them? Now that I've got all these laptops, wide range of support, how does Lenovo actually apply these patches to the ThinkPad laptops? They have their own software for doing it. I thought maybe if I could reverse engineer what that software is, I could work out a way of automating it completely and saying here is a all-in-one thing that will download everything and then patch your firmware for you. So they had a thing called DOS Flash. They also had a Windows tool. I didn't look at that. The DOS Flash is smaller, simpler, and therefore a little bit easier to inspect when there's one. And it does something to the laptop to tell it to have the firmware. I didn't know what. So I tried to apply some tracing to it to work out how it worked. But you can't easily trace DOS programs. So we ended up writing a framework to wrap around the DOS Flash that captured what it did. Essentially tracing the DOS system calls that it did while it was doing them and trying to show what steps it was doing at the time. It also had the ability to trace things that it did to the hardware as it did them. So I got to the point where I figured out what it was trying to do to the hardware. But I couldn't work out what answer it was looking for back from the hardware. At the time, the only way I thought I could do that, and it's still the case, is that I would need to get real hardware and point this half-hacked-apart, weird version of the firmware update on some real hardware. And I didn't actually have a spare laptop to do that on, so I chose not to go further at that point. I still would like to investigate that a little bit further, but the situation has moved on. Modern laptops don't use the DOS Flash tool. They use a UEFI environment and have a completely different flashing program that is built to work with UEFI. So it's a different way. It probably has a different protocol. If I did this in the future and I expect I still want to be able to fix these problems in the future, I'll be using a different thing to analyze it. And a similar kind of technology, though, pull apart the actual program that's running through firmware and try and see what it's doing to that firmware. So from this point, my next steps were, well, you know, continue to try and work out how to reverse engineer the firmware, enjoy my upgraded laptop, which I did. I was quite happy with it. One of the plans I had for the future, because it was by that point, the X230 was by that point a couple of years old. It wasn't the latest laptop. I did still want a newer laptop, was to take a miniaturized version of a USB keyboard adapter suitable for this physical keyboard and then hide that inside somebody else's laptop. And that would require some physical dimension changes with a Dremel. And I've actually built a prototype of that, but I didn't find another laptop that was worth attacking with some kind of case mod. But that's what I assume I'll be doing in the future. If I do continue trying to apply these keyboard changes, it will be with a USB adapter inside, or perhaps finding a more open laptop that I can actually just attach the keyboard to and tell its firmware, hey, this is the right one. But all in all, the aim was to try and get newer hardware because, well, I do use my computer a lot. I would be nice to have a nice fast computer, which was the state of play around about October last year where the ThinkPad people decided that they had a 25th anniversary event, including releasing a new laptop. The laptop they released had the keyboard I wanted. So finally I was able to buy a laptop I wanted. So the laptop I've got today is a brand new laptop, as of six months ago, which is the first time I've had a new laptop in six years. And so that's a fairly eye-opening how fast they are this case. But it also opens up other possibilities. This laptop has a keyboard in it from a company that is renowned for selling spare parts. I haven't yet purchased one of these keyboards, but theoretically you can buy this keyboard for, it's actually relatively expensive, but you can buy the keyboard in this laptop and put it into another laptop, a modern laptop. I've started investigating, okay, what are the connectors, what does the firmware look like on this laptop if I wanted to apply this limited edition keyboard to one of the normal laptops that will be available easily. And it seems like you can just plug it in. So they've got the right firmware. I can take that keyboard and plug this keyboard into a T470 ThinkPad laptop if I can get the keyboard. So I'm still investigating, I'm still looking forward, I'm still trying to work out what it will be in a year's time or so when I get an urge for a newer laptop. But I don't have any straightforward answers, because it's a personal aim to try and say, no, I want to bend this hardware to my will. So I want to make sure that I can get the computers that I own to work for me. And I want to try and say, this is possible for people to do. Yes, a lot of what I did was complicated, but a lot of what I did was based on a lot of other people's work. The collaborating with them allowed me to get to where I was. And there's a lot more options out there than there used to be for reverse engineering tools and facilities to be able to do this kind of stuff. So I'd like to think that I've inspired somebody else to not necessarily fix their laptop keyboard, but to fix something that they think is not working, fix something that is not working for them and not just use the off-the-shelf model. So any questions? How do you feel about Apple laptops? Well, I thought Apple laptops for many years, right? And I think it's changed that recently. Apple laptops were the best hardware design of any laptop you could get. But the physical layout of the keyboard had even less keys than the one that I had with the ThinkPad. So, you know, I was really disappointed that I couldn't buy an Apple laptop hardware, the motherboard, the screen, with a slightly different keyboard and mouse. And I think their hardware has gone slightly downhill since then. But what about the sort of the top programmable keys that the records hold? So, let's see. If you look at the top right corner there, the X1 Generation 2, it's just before Apple released the keyboard with the screen on it. What's it got in place of its function keys? It's not a screen, but other than that, it's pretty much the same thing. It's a set of soft keys that light up depending on what functions they've got. So, other than being an OLED screen, it's pretty much the same as what the Apple's got. I thought that was crazy. From a point of view of somebody who actually types and uses the function keys as part of touch typing, that's nuts. Why would you ever want to lose the ability to have the haptic feedback of being able to press the function key? So, yeah, that's what I think about the Apple keyboard. It's not a trigger. Question. There's a Russian company, what are they? And they used to have this Optimus keyboard which had an OLED screen. But they actually released a new one, not laptop, it's desktop. What it is, it's one big LCD panel behind a bunch of clear island keys. So, it's just an image full of the screen. I haven't seen that. If you had this for laptops and now your only problem was there were just a bunch of island keys and it was stuck with those. But you could have whatever you wanted on it. Would that actually solve your problem? If the key press was, you know, it felt like you're pressing a keyboard, then probably yes. I mean, there have been a number of keys boards where you could swap the keys around and it's all down to can you remap the keyboard, can you tell the operating system to have the right keys. So, you know, that would certainly help. But I've needed an inform factor of a laptop and what they seem to be aiming for with modern laptops. If you look, they're getting dinner and dinner and dinner and the keyboards are getting less and less good to type on. So, you know, if they did implement what you're suggesting in a laptop form factor, I bet you it wouldn't be nice to type on. Which is disappointing. We've ordered the normal laptops. There is a modification which we can buy the latest hardware to be involved in the score game. Like the latest gen 7 laptops and you want them to do the score game. Okay, right. So, you're talking about the Chinese NB51. So, there's a company that has taken laptops from about eight years ago and has thrown away the motherboard and built their own motherboard for it. The newest one that they've built has the laptop keyboard before the X221. So, I'm just waiting for them to produce one for the X220 with that keyboard. And I'll try it out. The reports are that it's an interesting experience to use one of those laptops. It's not perfectly integrated. It's not great. But, you know, if it's possible for me to buy one, I'll probably try that, yeah. It's certainly the best option if somebody else has decided to build a new laptop inside the old laptop for me. I think we're almost out of time for questions. Yeah, I guess. One minute. One minute. Is there one more question? I have a question for you. What do you want to say? I'll be hanging around, so if you want it, you can grab me afterwards.


Greetings and welcome to the Introduction to Astronomy. In this lecture we are going to discuss astrobiology and the possibilities of life in the universe. So we can look, first of all, what do we mean by life here on Earth and how does that lead us to consider the possibilities that life might exist elsewhere in the universe. So what kind of things are important for life? Well one thing we have to remember is that the Big Bang created only two elements, only hydrogen and helium. Everything else was created in stars. So that means that the very earliest planets to form couldn't have looked like the Earth because there would have been no heavier elements anything other than hydrogen and helium from which to form them. So what do we mean so we need other heavier elements we need things like carbon, we need things like oxygen and other elements things like iron that make up our blood we need those and those all had to have been created in stars. We also want to qualify what we mean when we say organic molecules. An organic molecule does not mean that it is living. It simply means that it is a carbon compound and carbon forms some very complex compounds giving rise to its own chemistry but it does not mean just because a molecule is organic means that it is based on carbon does not mean that it is necessarily living. And the other thing we want to look at is liquid water. Is liquid water a very important and this is the only known object with liquid water on the surface just this one and we picture it here that is our Earth. We know that Mars maybe had liquid water in the past or did have liquid water in the past and there may be other planets outside our solar system that have water but this is the only one that is known to have liquid water in the on its surface currently. So let's look a little bit here what do we mean one of the things we sometimes talk about is what we call the Copernican principle and what that means is that the Earth is not unique and it goes back to the time of Copernicus where Copernicus said that we were not the center of the solar system but the Sun was at the center instead. So we're not the center of the solar system we're not the center of the galaxy we're not the center of the universe we're not the center of anything. So when we talk about the Copernican principle we're really saying that the Earth is not something unique that there are lots of habitable planets out there and there could be more Earth-like planets out there in the universe in fact we've detected a number of Earth-type planets we just don't know whether life has evolved elsewhere. And one of this leads rise to a paradox that we call the Fermi paradox which was proposed by Enrico Fermi and he suggested that you know if other civilizations formed why haven't we found them yet? Why are they not here visiting us if other civilizations formed? Because what would happen very quickly kind of shown in the map here is that when a civilization formed on a star and developed space travel it should be able to colonize other planets very quickly and then those would colonize other planets around other stars and over relatively short times galactically speaking meaning many millions or even hundreds of millions of years that civilization would expand out and cover the and cover the galaxy so there should be civilizations all over the place. So what we may mean is that maybe this travel is a lot harder than we think it might be or that science fiction would lead us to believe that you know maybe there are easier ways to travel maybe there are not maybe it is very difficult to travel between the stars but even things that would be technologically capable now are not something and would still be able to explore the stars at least the nearby stars over things like millions of years you would be able to travel that kind of distance there. So it is a big what we call a paradox as to why these other civilizations have not yet been detected. So let's go and look at what we mean by astrobiology or the biology of of astronomy and one of the things that we look at one of the things we talk about are amino acids. Amino acids are the building blocks of life they make up our DNA that is inside each of ourselves that tells everything about a living creature. So the amino acids are the building blocks of that and they are very common they are found in meteorites and other organic compounds are found in things like molecular clouds dark regions here that we see we can actually detect the emissions of organic compounds. So we know that organic compounds form very easily in regions of star formation leaving the possibility that they could become parts of newly forming planets. But how about looking within a planet how easy is it to form these amino acids which would then possibly lead you to DNA? And one thing we look at that is an experiment that was done in the 1950s was the Miller-Urie experiment and what that did was to simulate the primordial atmosphere of the earth so not the atmosphere that it's made up of today nitrogen and oxygen primarily but what would have been present things like methane and ammonia and water and hydrogen that would have been present in the simulated in the sorry in the early atmosphere of the earth. So we simulate that here we put the atmosphere those gases that we believe would have been present we subject them to heat and electrical discharges as would have occurred in the early earth that we would have had you know lightning storms we would have had more heat and what we do is then run the water run you run water vapor through it so the water vapor runs through and as it condenses out there's a trap here where we can contain contain anything that forms so what we see in this trap is that we find amino acids and organic molecules that form from these basic compounds that we know would have been present in the early earth's atmosphere so what we see is not necessarily that life is easy to form but that the basing basic building blocks of life can't could have formed on the conditions present in the early earth and these compounds are not unique to earth so they likely could have formed elsewhere so we see that the building blocks of life are very common what we don't know is how common it is for life itself to actually form so how do we do that jump it's a very big step from organic compounds which are very common to life life is something that we don't know of other than here on the earth so what we want to look at is what was the early earth like at the time the earth might have looked something like this very hot molten impact constantly being impacted and that was sterilizing the surface so life was unable to form very early on however over time over that first few hundred million years the impact slowed and the oceans began to form and in the oceans we would find organic molecules much as we saw with the with the Miller-Urie experiment so what we see uh one one of the things that we find is that early fossilized life actually occurred very early on in the history of the earth we believe life itself may have formed earlier but we have to see what was actually able to form and one of the things that we see are these stromatolites and these objects here are actually formed very early on in fossilized remnants of them have been found dating back to three and a half billion years these are some of the very oldest objects that we see various oldest evidence of living objects now likely life had to exist before these so life formed if the earth is four and a half billion years old it had to have formed very shortly after the earth formed itself so it seems like there has been life on earth for the vast majority of the time that the earth has been around so we see some of this early evidence from long ago how do we form more complex molecules we need to make a jump we need to jump from chemical evolution which is what we've been looking at in things like the Miller-Urie experiment to biological evolution so there's a big jump there you can have chemical reactions that can make these compounds but how do we get that into something that is actually living one of the things is the DNA which contains all of the information about the organisms it's built on the amino acids that we've already talked about so you put the amino acids together in the right pattern and this molecule is able to replicate itself one of the beginning signs of life is that there it is able to reproduce so when we talk about chemical evolution we don't have any reproduction going on here we actually have reproduction that DNA can split itself and replicate itself and make identical copies you also have the RNA which is a simpler molecule which aids in the flow of the genetic information could this be some kind of intermediate step between the organic molecules again we said that these are common to DNA and then to life so how do we get it could this be an intermediate step leading to life now one of the things that we see on earth and that we associate with life is oxygen what do we see about oxygen in the atmosphere and what we find is that for the vast majority of the earth's history there was very little oxygen in the atmosphere oxygen was tied up maybe in things like carbon dioxide or water but if we look at the percentage here very very small until about 650 or so million years before the present that's only the last half billion years of the earth's history so at the time of the very earliest life there was no oxygen in the earth's atmosphere now it took time and the oxygen content has then come up and then settled down to about the 21% we know of it today but this is about the time that photosynthesis began early on and oxygen began to accumulate so we had a very low level of oxygen even two and two point four billion years ago but it would not have been sufficient for us to be able to breathe this is only at about a three percent range of the earth's atmosphere so would not have been sufficient oxygen for us to breathe and it hasn't been till the last half billion years that we've actually gotten significant quantities of this the development of free oxygen meaning not tied up in other molecules meant that we actually formed the ozone layer which allowed life to move from water where life had existed for most of that to land and that was the development of the ozone layer which protected us from ultraviolet radiation ultraviolet radiation very damaging and sterilizing and would rip apart these organic molecules as they formed especially out on land without the water in the ocean to protect them but the development of the ozone layer absorbing a lot of that ultraviolet light then allowed life to move on to land and that's what we begin to see here shortly after life begins to move from the oceans on to land so while life existed on earth for the vast majority of earth's history life was only in the oceans now when we talk about habitable environments what do we mean they're based on what we're used to here on earth so we are opening our own form of bias we think perhaps that life in the universe has to be something like like us there are possibilities of alternative biochemistries science fiction is good about putting things like silicon based life life based on silicon instead of carbon because carbon silicon shares some chemical similarities to carbon can you have life that is based on some other liquid that is not water but these are really all speculation we have no idea until we can actually someday maybe get out there in the universe to see what is going on what other types of life there might be we like water as a solvent because it is needed some kind of liquid is really needed to facilitate biological and chemical reactions if you dry out the organic molecules they're not going to react together and form a great chains water happens to be liquid at a very narrow range of temperatures and pressures so it's not necessarily common as a liquid it is very common in the solar system either is a gas or a solid but liquid exists only that we know of here on the earth so other liquids things like methane exist on titan but the temperatures are much colder and when temperatures are colder reactions seem to go much slower so the the reactions would go slower would it be as likely for life to have formed some place where the temperatures are bitterly cold even if you did have a liquid so water is one thing we look at another is carbon and carbon again is the basis of life on earth we also use what we call the biogenic elements which include hydrogen nitrogen oxygen phosphorus and sulfur which are very primary elements needed for life are they required maybe not maybe we can imagine life built on something else but it's hard to figure out exactly how that's going to work maybe it's because we just haven't detected it yet maybe it's because it simply is not possible but it is something to be considered as a possibility now one of the types of life that we look at is called the extremophiles that there are types of life that can exist in very extreme conditions for humans it's not we have very strict limits as to what ranges we can live very high temperatures very low temperatures and human life will cease to exist ph the acidity is also very very narrow ranges so we cannot exist if our body chemistry gets thrown off will become ill and possibly even die depending on how far off the ph level or the acidity becomes extremophiles on the other hand can exist and even thrive in some of the most extreme conditions we have things like thermophiles which exists at high temperatures even up to the boiling point of water we have psychrophiles which can exist at low temperatures 25 degrees below zero Celsius so extremely bitterly cold temperatures temperatures acidophiles and alkylophiles exist at high and low ph levels and other organisms that can exist even with high levels of salt very high pressures or high levels of radiation so these things that would destroy human life still other other objects are able to exist and other creatures are able to exist with these one of those is what we call the tardigrade tardigrades were actually discovered back in the 1700s and they exist under a very wide variety of conditions this is an extremely enlarged image of one seen here but they can exist under extreme temperatures hot or cold pressures high or low radiation levels dehydration starvation in fact they can even tested that they can survive in the vacuum of space for up to 10 days so what it seems to show is that life is very hardy it's very good at finding a way to survive and the tardigrade and other extremophiles are one example of this so let's finish up here with our summary and what we've looked at in this section is we know life it's based on carbon it's based on water that's what we use is our basis for life elsewhere in the universe that does introduce a bias because we limit where we're going to look for life because we're going to look for place things based on carbon and we're going to look for areas that actually have water especially in a liquid form we know that life on earth formed very early within the first billion years after the earth formed so life has been here on earth for a very long time and we talked about some of the organisms that can survive extreme conditions including surviving in the vacuum of space for more than a week so that concludes our lecture on astrobiology we'll be back again next time for another topic in astronomy so until then have a great day everyone and i will see you in class