Trevor Burrus And I'm Aaron Powell. Aaron Powell Joining us today is Todd Zawicki, senior fellow at the Cato Institute and George Mason University Foundation Professor of Law at George Mason University School of Law. Welcome to Free Thoughts, Todd. Todd Zawicki Thanks guys. Great to be here. Aaron Powell So I'd like to start with a softball but important question and it's somewhat related to what my dad does which is banking law in Colorado and he always complains that half of his job is explaining to legislators what banks are because they don't seem to, they just want to put all these regulations on them and he's like, let me tell you what a bank is, right? So what is a bank and why are banks important? Todd Zawicki Well banks, the basic thing about banks is they've been around forever and basically ever since they've been around nobody's understood what they did but nobody likes it. And here's what I've learned about banking and I come at this from the perspective of sort of the ordinary depositor from the sense that I think in terms of consumer credit which is when you're early in your lifespan you're a borrower, right? Which is that you borrow money in order to buy a car, buy a house, get an education, furnish an apartment or whatever. Later in your life you're a lender and most people don't think of that and that's an important concept which is what banks do is convert deposit, fundamentally convert deposits into lending and most people don't think of it that way but the reason the bank pays you interest is because you're making a loan to the bank and so when you're older like I am in my 50s, I'm a lender now, right? I'm lending to the bank, the bank bundles all those up and lends it out to people. They pay me interest, they charge even more interest than the loans that they make but that's why we have this whole apparatus of deposit insurance and everything else but it's fundamentally all a bank is is it takes loans from the public, bundles it up and lends it out to somebody else and so they just basically convert deposits into lendable funds that come out the other side and that's the point that people don't get, right? That's what gives rise to all the questions about fractional reserve banking, bank runs, bank failures like we had in the bailouts and that sort of thing is people intuitively think that the money in the bank is theirs yet they still want to be paid interest on it as if it's a loan and that's what it is, is a short-term loan to the bank that the bank then converts into something else. Is that different the bank as you've described? Is that different from on the one hand an investment bank and then on the other hand a credit union? Credit unions are fundamentally the same. The only difference with the credit union is that they've got special tax exam status, they've got membership rules but fundamentally they do the same thing. They take their members money, pay interest on it and turn around and lend it out to other people. They're limited in what kind of loans they can make and that sort of thing. Investment banks are fundamentally different in that investment banks are not collecting deposits. Investment banks basically take investment capital and invest it in other projects. Ironically, there is an analogy in consumer finance to that also which is something like a payday lender. For example, payday lenders don't take in deposits. Basically, they take investment capital. Some of it is money that they get from other people repaying their payday loans but they don't take deposits. They just basically have money. People give them money, they invest it if they're a publicly held company and then they lend it out to people and they try to make an operating profit. In that sense, they're a mini version of an investment bank. One of the things that you hear every now and then when it comes to investment banking versus consumer banking is Glass-Steagall. I remember an episode of Aaron Sorkin's newsroom where one character says that with Glass-Steagall, we won a world war and we put men on the moon and we created the greatest consumer economy and tried to blame it all on Glass-Steagall. What is Glass-Steagall and why are some people so obsessed about it? Glass-Steagall, without getting into too much of the details, Glass-Steagall created this so-called wall between investment banks and depository institutions. What I was describing earlier was a depository institution where you take consumer deposits and convert it into a lendable capital. The logic of Glass-Steagall is essentially that you can protect the depository banking system from risk. And it singled out a particular type of risk which they thought was a risk that should be called investment banking, but that's just one type of risk. For example, the SNL crisis of the 80s, Glass-Steagall is around for that. Lending inherently has risk. This particular risk is something that should be outside the banking system and even crazier risk which is basically what an SNL was. Let's take short-term deposits and then make 30-year loans. That is somehow considered safe and was allowed by a Glass-Steagall type mentality. And so I think the mythology of Glass-Steagall is much more relevant than the reality. So it was repealed in the late 90s, correct? It was repealed in the late 90s when President Clinton was president. I think it was repealed for good reasons which is this arbitrary idea that we can create a risk-free banking system or that we can really create a risk-free financial system I think is probably a more accurate way of trying to figure it out where the risk just goes elsewhere in the system. It was repealed in the 90s. It's got a lot of mythology, but I have yet to see anybody explain to me how the repeal of Glass-Steagall meaningfully influenced the 2008 financial crisis. And a lot of people have pointed to the fact that financial crisis, the grounds for the financial crisis was traditional banks, right? It wasn't investment banks that were the problems. Traditional banks and the mortgages that they were writing and the old thrift institutions like Wachovia that were the inheritors of the old SNLs. When you talk about risk, it makes me think about another thing I think a lot of people think about banks and investment financial services in general is that these businesses are incentivized or want to be really risky that we got I think after the financial crisis we have this idea that Wall Street people are got their foot on the gas and that what they really want to do is be extremely risky with your money and possibly impoverish you. But that seems to me like not a good business plan. Just as I would say, I mean, there are definitely people who like to go out there and maybe risk a lot to make a big reward. But in general, is there a lot of incentive to be really risky in the financial system? Well, if you create a system where you privatize the gains and socialize the losses. Well, that's not risky though because they're socialized. Yeah, you get what you pay for, right? And so that's basically what we did was we allowed them to keep their gains and then when these risks went belly up, we bailed them out and that was that, right? So obviously, the key is you've got to align the you've got to get the incentives, right? The way and we have a very messy goofy history of financial regulation in the United States, right? For the longest time, for all kind of political reasons, we didn't even allow branch banking and then we allowed branch banking within states and now we allow full branch banking, right? Interstate banking and that sort of thing. But one of the reasons the Great Depression was such a fiasco is because we got these little mom and pop banks essentially, right? These little who would hold some farm loans, right? And that's basically their whole balance sheet. And people kind of figured out that wasn't a good idea, that wasn't going to help stabilize the financial system. And so over time, we've kind of overcome some of those political rules, but a lot of that is still in kind of the country's DNA, you know, this trust of banks and the idea that people don't really understand what banks do and so we've got to regulate them, we've got to keep them from taking risk and that sort of thing. Whereas I think to your point is unless banks can externalize their risk taking on the rest of us, there's no reason for them to come up with a model that's doomed to cause them to blow up, right? It's only when you create a world in which where you privatize the gains and socialize the losses that you could get anything that looks like excessive risk taking. On this kind of quantifying risk or like me as a consumer, so if I go and I'm going to buy a stock, I kind of know conceptually that the stock market is somewhat risky and I can get when I go to buy the stock, I can see, you know, here's the chart of how it's done over the years and the problem of induction aside that I can see like if it seems to be pretty steady or it's been all over the place or whatever, but when I go and open a savings account at my local bank, that's not the kind of information they give me. They don't tell me like here's the kinds of investments we're making and here's how many have defaulted and all that and so is there a need for regulation to either protect me because what this means is they could be much more risky than I would be willing to invest with if I knew and so either to protect me or to make sure that I have better information about the kind of risk that I'm entering into. Yeah, Aaron, I mean this is a great question, right? And this is when I think about financial regulation, this is the issue that I want to say keeps me awake at night, but the issue I can't figure out the easy solution to, which is the following, which as we said at the outset, the reason the bank pays me interest on my savings account is because I'm lending it to the bank and the bank is turning it around and making profit with it, right? And so they pay back some to me, say 1%, they lend it out of 4%, they make a 3% return, right? I get 1%. That's the logic, right? But the reality is I am lending them the money and it's only because they can take it and convert it and put it in something that has risk that I get back, right? Now, given that the world in which I have to monitor with my $12,000 in the bank, am I really supposed to monitor what the bank is going to do with it? That makes no sense at all, right, for individuals. This is the logic, right? You've got huge free riding problems where people would free ride, you've got information problems and it just doesn't make sense that all of us is hundreds of millions of individual depositors should be monitoring what the banks do with it, right? So what do we end up doing? And then you've got that and then you have, you actually do have the bank run phenomenon, right? Where a solvent bank could have a bank run simply because they aren't liquid enough the day that all the depositors show up, right? And all the depositors show up and demand their money. So this is where then we get deposit insurance, right? Deposit insurance is designed so that to save me the cost of having to monitor my investments in the bank. But as soon as you have deposit insurance, you have exactly what Trevor and I were just talking about, which is now you have the bank playing with the taxpayers' money. That creates then the potential for the bank to engage in overly risky behavior, right? So then what do you have? Then you have to say, well, we have to have regulation and inspect the banks in order to make sure that we aren't having what's called the moral hazard problem, right? If the bank basically acts acting recklessly because it's not their money, it's the taxpayers' money. And so in some sense, I mean, it's not completely accurate, but sort of the original sin that leads to the whole apparatus of banking regulation is deposit insurance. But the problem is nobody has been able to come up with a really compelling... There's a lot of theories and a lot of people in this building who have great ideas, but in terms of actually winning the war on ideas and explaining to people why they've got a better mouse trap, nobody's really been able to come up with a system that they've been able to explain to people it's better than deposit insurance. But as soon as you buy the premise, in some sense, you buy the bit and this whole cascade of regulation then tends to flow from this little kernel of deposit insurance. You said that the problem here is suddenly once they've got the deposit insurance, then they're playing with the taxpayers' money. But why wouldn't it just be that if I invest in a bank and then that bank makes risky decisions and so loses all of it, the insurance is insurance for me. So the government pays me back what I lost, but that bank still goes bankrupt or that bank could still be on hook for, say, reimbursing the government for it. So they're not getting to play with free money? Yeah. I mean, I was oversimplifying the point. But it's not the bank's money. The bank isn't going to be the one who's going to pay me back. They're not a real borrower in that sense. It's not like lending money to Walmart or somebody or Kmart. I mean, look at Kmart and Sears where ordinary people had stock or maybe even had bonds that went belly up and they got paid pennies on the dollar. That doesn't happen when it's a bank as opposed to some other business. Do we really need to have consumers know or require that they know that much or monitor their $12,000 bank account? Because if I compared it to something like food production, the Romaine let us scare every cent, right? Obviously, I think anyone who understands market forces that Chipotle's scare had had its healthcare scare made Chipotle extremely conscious of how clean its food was, much more than any government regulator could possibly do. And any company that produces Romaine that gets an e-call, I scare, is going to really try and clamp down. They're going to go out of business. Now, that doesn't require their consumers to know where the Romaine lettuce comes from and monitor all these things that they don't know. They just look at companies that have a reputation on the line to go out of business if they get such a food scare. Is that not enough for banks that like Bank of America simply is not going to in under most circumstances play fast and loose with my money and I don't actually have to monitor them at all. I just have to know that they care about their self-interest. Yeah. I mean, and I want to make it clear is I'm not advocating for deposit insurance, right? What I'm saying is that there is in fact an identifiable problem and a lot of people have come up with solutions, including things like name brands and all the things that you point to, Trevor, you could have private insurance. I think probably is something that could make sense, right? Where somebody was writing private deposit insurance. What I'm saying is that that is actually a very vexing problem and that people haven't kind of really come up with a generally accepted response, right? And so George Selgen, for example, my colleague here now is one of the all-time leading experts on free banking, right? Yeah. And he can explain this to you and he can explain how deposit insurance work and a lot of had to do with name brands and had to do with the people around the bank had their own skin in the game. You could create those kind of systems and I think there's a lot of sense to it and people just haven't quite gravitated towards that, right? You could come up with a lot of solutions, I think. And so I don't want to say that that's the only solution, but that's kind of what the inherent problem is. There's a second problem that I've been fascinated with for a while. I wrote an essay a few years ago called Making the Banking System Anti-Fragile and it was a book review of Taleb's book on anti-fragility. And what I point out there is that when we talk about risk and this goes back to your questionnaire and there's actually two concepts of risk in the financial system, which is there's the risk of a particular bank failing and there's the systemic risk of the banking system. And what our kind of command and control central planning version of regulation we have today is focused on the former, which is the individual bank. And they want to keep individual banks from failing. So what they basically do is dictate sort of the platonic form of the perfect bank balance sheet, right? And that'll be the world's safest bank, right? The problem is that what they've ended up doing is making every bank look the same, right? So if they're off a little bit on one bank, then they're off a lot when it comes to thousands of banks, right? And so I think in terms of trying to make individual banks less risky, it's possible we've made the banking system more risky. And it may be that if we allow for more trial and error, more experimentation at the individual bank level, we might actually have a more stable systemic banking system, which I don't think people think about. The other half of that is you can prevent bank failures beforehand, or we could focus more on mitigating the fallout from bank failures after the fact, right? And instead, we've kind of got a cookie cutter model that we've had for almost 100 years now of how we think you're supposed to regulate banks. And this is hard to believe, but yet again and again, we keep having banking crises. How does or how ought a regulator to approach these kinds of questions? Because what you're saying is like, there are different things that we need to weigh. There are different kinds of risks. There are different ways we might approach it. Some might work, some might not. A lot of them are susceptible to shocks that are unpredictable. And the regulator is sitting back and saying, okay, I've got to do something, even if that's like deciding to deregulate, they've got to do something. And they're doing this all with people's savings. And so it's hard to run. You don't want to run experiments in here because the individualized costs for failure are very high. Not necessarily how do you answer these questions, but how do you approach thinking about these questions from the perspective of someone who has to then make decisions about them? Yeah. And the real problem here is not just what should they do, but what do they actually do? So one of the classes I teach in one of the course books that I have is on public choice economics. That's one of my fields that I've worked a lot in. And one of the things we know from public choice is that bureaucrats respond to incentives just like everybody else does. And so one of the impacts of that is that what a bureaucrats' personal incentives are may not be aligned with the overall job he's supposed to do, what we call agency cost. So a good example is the FDA. And the FDA constantly gets criticized over time because drugs take too long to approve and are too expensive to approve. And the reason is because from the perspective of the individual FDA person, they get very little credit if a drug is approved and a lot of blame if a drug turns out to be dangerous. And my colleague here, John Allison, former president, Kato, obviously, and a fellow colleague of mine here in the financial markets group, said this happened in the financial crisis. After the financial crisis with the bailout money, the TARP money, banks are supposed to lend that out. But individual bank examiners out in the field at the first bank of Omaha or whatever, are basically saying, heck no, you're not making any risky loans because my job is to keep this bank from failing not to try to save the American economy. But if you have every single bank examiner with that risk averse incentive because they didn't get credit if the bank was going to make marginally riskier loans that might help the economy, they got a lot of blame if it failed. And so I think that's a lot of what the problem here is, right, is that you have to have somebody who has the ability and the willingness to look at it from the whole system, right, the kind of things we're talking about, to think in terms of what is the optimal, you know, or is there, you know, so what is the optimal rate of bank failures? Which is not zero. Which is not zero that's consistent with the overall, you know, preserving the overall stability of the banking system. But we also have it for individual consumers, right. One of the things that happened during the financial crisis was money market funds, right. Every time you open a money market fund, what does it say? This is not FDIC insured, right. But what happened was because it was an FDIC insured, it was a little riskier, banks would give you a little more yield for it and they'd say, well, it's just as good as a savings account, right. And it turns out, it was just as good as a savings account because when the rubber hit the road and the banks went down, they bailed it out and they treated money market funds just as if they were savings accounts, right. And so you've always got a frontier, right. There's always a margin right between what, as soon as you put in things like insurance and stuff like that, there's always a margin there where people could get a little more yield and they think, well, it's not that much more risk, right. But then it can sometimes become the self-fulfilling cycle, I think. So our last major financial law, which I think we're still passing rags under if I would correct is Dodd-Frank, which was passed in the wake of the financial crisis. And it occurs to me that the financial, the history of our financial system is kind of this crisis on the viathan story where Bob Higgs' book has been on free thoughts where he discusses war in war powers where there's a crisis and then suddenly you get an increase in government regulation. So we had a crisis and we passed this huge law called Dodd-Frank. What in general did Dodd-Frank do or purport to do to solve the problem or make it worse? Either one, your choice. Well, first I want to endorse your comparison to Bob Higgs. And in fact, one of the things I've been fighting against the last 10 years is there are people who, in particular, Adrian Vermeul and Eric Posner, two law professors who've drawn a direct comparison between the war on terror in 2001 and the financial crisis in 2008 and have called for basically saying that that shows why we need to be able to unleash executive discretion and throw the rule of law overboard in times of crisis. Because that never goes wrong. Yeah, right, exactly. But they've drawn exactly that same parallel. And that's exactly what happened was as a result of the financial crisis, the banks got billions and billions, tens of billions of dollars, but they're going to be paying it off in pain for a very long time, which is that what it did was it allowed the politicians and the regulators to get their hooks even more into the banks than they had been previously. And they got a pretty good argument. We gave you $700 billion and we want to make sure it doesn't happen again. But what they've done since then isn't just that. I mean, Dodd-Frank is a lot more than that. And the way the regulators had implemented it was a lot more than that, particularly under the Obama administration with Operation Choke Point and various other things. And Dodd-Frank itself had a lot of things were just kind of a wish list for people that had been around for a long time, the Durban Amendment and things like that. Here's what's fascinating to me about Dodd-Frank. I've spent the last 10 years touring the country lecturing on college campuses and law schools and to federal society lawyers, chapters, and other lectures and that sort of thing. And every time I lecture on Dodd-Frank, at some point I ask congressional staffers, I've asked this here, I say, Dodd-Frank was supposed to do one thing, which was what? Get rid of bailouts. Dodd-Frank said, we're getting rid of bailouts and we're getting rid of Too Big to Fail. I'll tell you guys, as I've traveled the country, I have asked that question to literally thousands of people. And one person, the smart Alec kid at West Virginia University in the back corner raises hand. I've asked the congressional staffers, everybody, I say, how many of you think Dodd-Frank got rid of bailouts or never bailing out another bank? Nobody believes it. Voters don't believe it. Markets don't believe it, right? The Too Big to Fail subsidy still seems to be there. We passed 2,400 pages of legislation, tens and thousands of pages of regulation, tens or hundreds of billions of dollars in compliance cost. And Dodd-Frank did not do the one thing it was supposed to do. If you want to know Dodd-Frank in a nutshell, that's it. So how was Dodd-Frank supposed to do that? How was it supposed to end bailouts and too big to fail? Yeah. Well, the logic of Dodd-Frank was two fold, which was we were going to come up with a better system of regulation that would prevent bank failures on the front end, and we would guarantee that banks would never be bailed out on the back end. Then they came up with this sort of convoluted process on the back end of putting banks into what he mounted to a receivership and guaranteeing that they would be liquidated, right? On the front end, we would have this whole system of SIFIs, systemically important financial institutions. It would be subject to particular intents of regulation. We'd have stress tests. We would have the Volcker rule, which would get rid of, supposedly get rid of the risk that was in the system. So all these things on the front end that were supposed to control risk, and then on the back end, basically the idea is, we're going to make sure we never bail you out. We're going to make sure you get liquidated, essentially, is what it is. And one of the things that's interesting about that that shows how politics work is David Schiele and his excellent book on Dodd-Frank, he notes that the idea that they came up with for getting rid of bailouts, they just kind of jimmied it up, and it's not clear it would work or what. But one of the points he makes that's very interesting is for non-depository institutions. For example, most people think a bankruptcy system is actually the best way to do it. And it turns out, if you actually look at the Lehman bankruptcy, it worked out pretty well, even though it was messy at first. We have hundreds of years of bankruptcy law that is done with this stuff. And hundreds of years of bankruptcy law, the rule of law operates. So why didn't they consider a bankruptcy option? Well, it's because Dodd and Frank wanted to write the law. Bankruptcy is under the jurisdiction of the Judiciary Committee. Dodd and Frank are in the Banking and Financial Services Committee. So basically, they started with the premise of we're writing the law. Now let's figure out if we can reverse engineer some system that would say they don't even consider what most people think would be the best option. But that was the idea. And the idea isn't so much that the system in theory couldn't work. Some people I respect say it would work. The problem is nobody believes it will actually be tried, right? Which is, it was passed on a party line vote, pretty much with no Republican support, this completely untried system by the Democrats. And nobody I talk to thinks that if the banking system goes into crisis, that the Secretary of Treasury is going to walk into President Trump's office and say, all right, the Oval Office and Mr. President, there's this completely made up system that the Democrats put in place 10 years ago. It's never been tried before. It might work, but let's bet the economy on it, right? And nobody believes that's going to happen, right? They don't have the political will for it. They don't have the way of doing it. And so what you've created is a system in which banks rationally expect to be bailed out. Markets rationally expect banks to be bailed out. And once you have that expectation, it becomes self-fulfilling. And in the end, that's what Tank Paulson said when he was Secretary of the Treasury. We're bailing out the banks because the markets expect us to bail out the banks. Seems like a self-fulfilling prophecy. It's exactly a self-fulfilling prophecy, which is the expectations become self-fulfilling. And so what we talk about this in economics is what we call the need for credible commitment, right? Which is, it's got to be a credible commitment that you will actually not bail out the banks. And nobody believes that. And that's the problem. It's a political problem, not a legal or economic problem really. It seems like the designation of certain institutions as statistically important financial institutions is basically a list of who they will bail out. I mean, if you've got that status, I mean, I don't know if you get a badge or a sign you can hang on your door or something, but you pretty much are signaling that we're probably going to be bailed out and other ones aren't going to be bailed out. Does the market reflect that? That's how the market treats it, yes. And so what they talk about is what's called a too big to fail subsidy, which is those banks can access capital markets and raise money in capital markets more cheaply than banks that don't have that badge, right? There's costs that go along with it. Compliance costs, regulatory costs. Higher compliance costs and that sort of thing. But it looks like for those banks, the benefits exceed the cost in light of what their returns at capital have been and their ability to continue growing relative to other rivals. It would seem then that we would, so a lot of the same people who seem to be very pro-banking regulation are very anti-monopoly. They love antitrust. And this seems like what you just described to be exactly the kind of thing that would upset them. Because if this subsidy kind of exists, it not only may prop these people up or encourage them to be more risky, but it's going to make it awfully hard for people, new entrants in the market to compete with the ones that have been designated. So is that a worry? I mean, should it be a worry? Ted, that's the great irony of all of this, Aaron, is that what Dodd-Frank's great legacy is and is going to be is to make two big DeFell institutions even bigger and more important and drive smaller institutions out of business. Every industry that Dodd-Frank has touched, from Ted Collection to mortgages to banks, have had this effect. And it's for two reasons. And so what we see is that the largest banks keep getting larger and increasing their market share and smaller banks estimates vary, but have been shrinking about twice the size of what it was before Dodd-Frank. And that's for two reasons. The first is the too big DeFell subsidy, which just gets converted into lower cost of capital. The second is the cost of regulation, which is most regulation has the impact that it does not scale in banking regulation as it doesn't scale proportionally to size. So it's not a linear function, which is to say the small banks spend a higher percentage of their revenue on compliance with regulation than large banks. For Citibank, 150 new compliance officers are the rounding error. For some small community bank with 10 employees, hiring one more compliance officer could be the difference between a profit and a loss. And it has to do with there aren't that many more forms to fill out. You can get economies of scale and all that sort of thing. And so what that's done is that regulatory cost on the small banks has driven a lot of business. Congress finally passed a regulatory relief bill this spring that was designed to address that and addresses in kind of a little bit haphazard fashion the way they did it. And so we'll see whether or not that has an impact. But so far, Dodd-Frank's great legacy has been to consolidate the industry. And there is a great irony there, of course, which is that the small banks who didn't cause the crisis are the ones who are getting hit the hardest.  Well, then we get the kind of double whammy where so much of the free market theory on banking where we say we don't necessarily need regulation is because we have competition. But that would also lower competition. And so then, if like, well, we only have four banks or whatever, and they all know everyone on the hill and they all, you know, we don't have competition anymore. So now we need regulation. So our system doesn't work. And then someone comes to free marketers and says, look, this free market system doesn't work because they need more regulation. Or like, well, we left the free market system about 40 years ago. And that's the thing. Again, my dad has said that he represents community banks. And he said he doesn't think there'll be almost any community banks in 15 years. That's a problem that I mean, we libertarians and free marketers face. And basically, everywhere, everyone's like, they just pointed out free market didn't work. And it's like, that's not even close to a free market. Well, something my dad had pointed out is that we might get to the point where you have to pay the bank to take your deposit, which is really bizarre. It flips the entire system on its head where the bank should be paying you in the interest rate or something for you giving them your money. But if the regulations are so high, you might actually have to pay the bank to take your deposit. And that's like some tipping point almost where it's flipped around on its head. Well, implicitly, that's actually happened Trevor, mainly because of the Durban Amendment, right? The Durban Amendment placed price control on debit cards, cutting debit card for large banks in half. The response to that was is that the revenues that have been generated for consumer accounts through debit card usage on interchange fees, and that's the fee that gets paid to your bank when you like swipe your card to target or something like that, say one or 2%. To make up for that revenue shortfall, what did they do? They just started imposing costs and new fees on account holders. Now upper middle class people, middle class upper middle class people, we didn't really notice it, right? All we had to do was increase our average monthly balance and we continued to get free checking. We tend to consume other products from the bank, whether mortgage or car loan or whatever. But low income people all of a sudden were having to pay $10, $15 a month for bank account. So free checking went from 76% of banking accounts to 38% of banking accounts in the period after the Durban Amendment. The average monthly fee for those who did not have free checking doubled during that period. That's equivalent to basically having to pay the bank to take your money and what that really fell hardest on was lower income consumers. And that's one of the other things that happened in the wake of the financial crisis was between the Durban Amendment, which took away free checking, the Credit Card Act, which was a rule of legislation that interfered with the ability of credit card issuers to be able to adjust prices when risk changed. Between the regulations on mortgages, what we ended up doing was taking away from low income consumers, we took away their bank accounts, we took away their credit cards, we made it, we took away mortgages. And so what we ended up doing was basically taking low income consumers and driving them out of the mainstream financial system. And as a result, payday lenders boomed, right? And of course, the way Washington works is because all these people were turning to payday lenders, that meant we had to get rid of payday loans, which is essentially what they ended up doing, tried to do at the Consumer Financial Protection Bureau, though it looks like it'll be undone. This notion though of paying, like the consumer paying the bank instead of earning interest. In the abstract, so I have a checking and savings account with my bank, I also don't have any loans from that bank. So the services that I'm using is the reason I put my money in there because they're giving me interest, but it's some vanishingly small amount, right? It's convenient for me to have my money there because then I can withdraw it from ATMs, I don't have to carry it around in my pocket, I can use my debit card to buy things, so on and so forth. It's probably safer there than it would be under my mattress and all the other reasons that we wouldn't want to use cash. And those all seem like those are valuable services provided to me. So outside of like their specific instance, like certain people would have a harder time getting loans or whatever, like would it be bad if part or a large portion of the consumer banking industry shifted to a model where I was basically just paying my bank a small monthly fee for the service of giving me these things? You could have that, but here's my view, it's two-fold, which is first, financial inclusion is a stepping stone to people's success in life. I believe financial inclusion is a moral imperative, which is to create a – where people can basically get integrated in the financial system to be able to buy a card, to be able to get a credit card, to have a bank account. That is a springboard to a lot of other things in your life to basically live from a financial perspective, economics of the American dream. And so if you force consumers to pay for a bank account, that makes it more expensive for people to do that. And maybe it's optimal to do that, but I think that there's a lot of benefit to consumers from having access to financial services. Having said that, I am frustrated. I think the American commercial banking system is incredibly non-innovative. I think partly that's caused by regulation. I think partly it's because of this kind of system we've created where the government basically protects them from competition by telling them that they're not going to have to worry about failure. So why innovate if you don't have to? But I think that what we need is a greater array of banking products, more things that are accessible like online banking platforms, things that are – right now, we basically, they put you in the unbanked bucket or the full bells and whistles bank account bucket. A lot of people don't need those two extremes. They just need to have some way to be able to pay bills, especially younger people. And maybe they transit into something more formal. And I think that we need more innovation in the system. I think I'm a big promoter of fintech potentially, things like that that can get financial products to people who've been traditionally outside the system. This is something else you hear about banks quite often in Wall Street in general, which of course is this giant group of people that we lump it together, investors and traders and banks and everything. But has Wall Street captured the government? I don't know if I would say that. And there's kind of a mutual sort of thing going on there. I've written about this in some of my articles. One of the class that we distinguish between two concepts in public choices is rent seeking, where the interest group goes to the government and asks for a favor and rent extraction, where the politician goes to the industry and basically threatens to harm them unless they give them money to buy them off. And there was a famous story that Tim Carney reported when Dodd-Frank was being written when Senator Schumer went up the Wall Street. And prior to Dodd-Frank, hedge funds had largely stayed outside of the political process, right? They weren't that involved. And Chuck Schumer, Senator Schumer went up to the hedge funds, called them all together in New York and basically said, look guys, you got a lot of money and none of it's appearing in Washington. And we, you know, and I know that hedge funds didn't cause the financial crisis, but the American public doesn't know that. And we're thinking maybe it's time to maybe slap some regulations on hedge funds, unless you can persuade us not to, right? And they came up with several million reasons why they should not include hedge funds in Dodd-Frank and largely that was successful. But when you say they came up with several million reasons, you don't mean that they paid the politician millions of dollars to go away. Yeah, that there were massive investments by hedge funds in the Democratic Party and in political campaigns and in lobbying efforts and the like. So I was being a bit tongue in cheek. But basically what happened was they went from being non-players in Washington to being millions of dollars in every electoral cycle players. And what they got out of it was that the federal government did not pass ruinous regulations on them, which was what the threat was. That's what we call rent extraction, right? And so we have this entanglement and I think we see the same thing in the banking system, right? Which is that in exchange for the bailout money, in exchange for their protection, the government, especially during the Obama administration, sort of used the banks to as an off balance sheet sort of social policy thing, whether it goes back to the Community Reinvestment Act, which my colleague here at Diego wrote a great piece this week talking about the Community Reinvestment Act and the American Banker or whether it was various things that the CFPB did or various other things that bank regulators do, where they basically use banks to accomplish social policies, more or less in exchange for protecting them from competition and failure. And that's, whether it's Wall Street or banks, that's kind of the kind of crony capitalism system we have with this heavily regulated system where the rule of law is really not present in any shape or form in our financial regulatory system. It's all sort of back room deals and non-transparent according to very flexible standards. And a lot of it is who's got the best lobbyist to be able to protect themselves. So we look at the theme kind of, I think of this conversation we're talking about FDIC, so deposit insurance, kind of changing the risk function for banks and then trying to monitor what's going on and then stacking on top of that and crises occur and all this stuff. It seems to me that if we don't increase competition in banking, we will have to, really backwards, we will have to increase regulation if we continue to incentivize risky investments or putting money into places that are less sure of things. And if that goes up, we will end up with state banking or things like this. How do we actually roll this back? How do we increase competition? Because we have so little of it now that we need more regulation. But is there any way out of this sort of mired pit? Well, the idea of state banking, of course, is not completely hypothetical. I want to Senator Elizabeth Warren's pet project the last few years is post office banking. And if you're familiar with that, where post offices would turn into banks taking deposits and making small dollar loans and that sort of thing. And so there's actually proposals for that are along those lines.  I think that grossly misses the point on the art of underwriting and risk assessment and all that sort of stuff. But it is goes back to Mises and the dynamics of intervention, which is once you start down this path and once you start with deposit insurance, which is kind of the original sin, to some extent, the rest makes sense. Not the abusive stuff where you start using the banks basically to promote your own pet projects or operation choke point where during the Obama administration, the FDIC tried to shut off bank accounts to legal businesses like payday lenders. I mean, that stuff's just bad news, right? But a lot of the regulation kind of flows from that one simple idea in the economics of it. And so how do you... There was an old woman who swallowed a fly problem.  And it's banking and it's healthcare, right? And it's higher education. And Neil McCluskey here, the director of education studies, and I have a book coming out at the end of January on trying to introduce competition and consumer choice into the higher education system as a system for reform. But all these areas, once you get the government in there and once you break the incentives, the problem with higher education is federal financial aid, right? And federal financial grants, which break the link between what I pay for and what I get. Now you've basically created a third party payer system, which then leads to making sure that the universities are credible, which leads to accreditation, which drives up cost, which creates cartels, which dampens competition, right? Every time you start down that one step down there, you really do get Mises' dynamic of interventionism, where each intervention creates unintended consequences, which then need to be addressed, which create new unintended consequences. And to sort of summarize it, Jeb Henserling, who's retiring now, but was chairman of the House Financial Services Committee, he was ranking minority member, I think, when Dodd-Frank was passed. And he said, I remember his speech on the floor of the House was, I think he said, this legislation that formed, he had his 900 pages long, and there's at least three unintended consequences on every page of this legislation. Somewhere in Dodd-Frank is the next financial crisis. We know that. We know that there's something in Dodd-Frank that's going to create some sort of quirk that's going to end up spawning the next financial crisis. And then we're going to have a whole new slate of regulations to deal with that, which create their own unintended consequences in the next financial crisis. That's just the dynamic and more complicated regulation, more discretionary regulation, just doesn't seem to solve these problems. I think that what we really need to think in terms of is going back to the rule of law, right? Going back to getting the basics right, understanding the rule of law, putting liability in the right place, and kind of work over those principles, rather than creating unintended consequences and rushing to address those with more complex regulation that creates more uncertainty and, you know, the next problem. Thanks for listening. Free Thoughts is produced by Tess Terrible. If you enjoyed today's show, please rate and review us on iTunes. And if you'd like to learn more about libertarianism, find us on the web at www.libertarianism.org.


Raging fires have consumed swaths of Russia's Ural's mountains, killing at least four people, raising hundreds of homes, forcing evacuations and spurring investigations, officials said on Sunday. While fires are common in late spring and summer across Russia's vast forests and grassy steppes, but some recent blazes have fan suspicions of negligence. The fires spread to some settlements in the southern region of Khorgan, prompting a visit by Alexander Kirenkov, the emergency minister, early on Monday.  Nine of the 13 wildfires in the region were contained, however, the TASS state news agency said. Massive fires have also engulfed the Sverdlovsk region and the Tumen region to itself, in the Ural's. A gunpowder depot fire that forced the evacuation of a small village in the Sverdlovsk region was contained by Sunday evening, but 53 further fires still blaze, regional emergency authorities said. Independent news sites SOTA blamed explosions and arson for some of the fires.


In the last couple of lectures, we have been discussing about different types of hazards and in the last lecture, we have focused on control hazard and we have seen how various compiler based approaches can reduce the penalty arising out of control hazard. And today we shall focus on dynamic approaches. So, here is a quick recap on the importance of stall reduction and this is very crucial in modern processors, where multiple instructions are issued and to keep the different functional units busy inside a processor, there is a need to have a steady stream of instructions and stalls due to control hazards dominate. It has been found that stalls due to control hazard is dominating. The reason for that is as more and more number of instructions are issued in a single cycle as it is done in a superscalar architecture, the gap between two branches reduces in terms of instruction cycle. For example, if there is a branch after four instructions and if three instructions are issued in a particular cycle, then in the next cycle itself that branch will appear. That means, the branch frequency increases and so far we have looked at static schemes for reducing branch penalties and same scheme applies to every branch instruction. That means, the techniques that we have discussed in the last lecture, we have discussed some schemes like not taken, branch taken or not taken and that particular assumption or prediction is applied to every branch instruction. Now, whenever you execute a program, same branch instruction may be taken at a particular instant and in another instant it may be untaken. So, dynamically the situation changes which cannot be captured by the compiler based approach, where we assume that always branch is either taken or not taken. So, can choose most appropriate schemes separately for each instruction. So, what we can do? We can go for some dynamic technique which can learn appropriate scheme based on observed behavior. At run time when the program is in execution, that time it can identify, I mean it can learn from the appropriate scheme based on the observed behavior which we shall discuss today. And dynamic branch prediction schemes, there are several branch prediction schemes that we shall discuss for both direction t and t and target prediction. That means, whether branch will be taken or not taken and also the target at this prediction will be all carried out simultaneously or together. And this feature has become the most important element of all modern processors. And we have seen that, this is what we discussed in the last lecture, three stall architecture and how it can be improved to have one stall architecture. Then we have discussed various static streams predict branch taken, predict branch not taken and how to use this delay slot in a very effective way such that the penalty due to branch is reduced, these things we have discussed. So, today we shall discuss about dynamic schemes where we shall be using branch prediction buffers and also we shall be using branch target buffers. That means branch prediction buffers will hold information about whether a branch will be predicted taken or untaken. On the other hand, the branch target buffers will hold information about the target address. Normally, target address is taken after computation in the instruction, but whenever you are predicting, then branch target buffer can also be stored in cache memory and from where it can be read and used for generating the target address and instruction fetch can take place from that target address. And also return address tax can be used where there are many return address instructions. Those return instruction addresses can be stored in a stack and with the help of all these dynamic schemes, the performance of a processor can be significantly improved over control hazards. And as I have already mentioned in the last lecture, basic idea of branch prediction is it is assumption that branch assumption is correct. If yes, then we have gained a performance improvement, otherwise we discard instruction and in such a case, few cycles are wasted. And there are two basic approaches, first one is direction based approach which are used by compilers and another is profile based approach which we shall be discussing today. So, we have already seen the direction based approach. These are very simple to implement and say a branch is taken or not taken. However, often branch behavior is variable. So, it is dynamic as I mentioned and misprediction rates can vary from 59 percent to 9 percent and on the average it is 34 percent. So, this cannot capture, this static based approach is used by compilers based on compilers cannot capture such behavior at compile time with simple direction based prediction. So, it is necessary to have history based approach. That means, as the program is executed, based on the history or profile the prediction is done. So, you have to maintain some information in hardware which will do this. So, this history based branch prediction an important example is state based branch prediction. So, here you will require two parts, number one is predictor. Predictor will try to guess whether an instruction will branch or not and also where it will branch. So, this is the job of the predictor and it will set a bit to one or zero depending on whether branch is taken or not taken. So, when a branch is taken, it will store some information, a particular flag bit which will be one if it is taken and if it is not taken it will be zero. So, pipeline checks bit values and predicts that means whatever is stored based on a previous history that will be used to predict whether the branch will be taken or not taken. The prediction is a hint that is assumed to be correct. So, you must remember one thing, this prediction that we are doing is essentially a hint and prediction may be incorrect. So, if it is correct then we gain, if it is not correct then the gain is not there. So, that you should keep in your mind and whenever you do the prediction fetching vegans in the predicted direction whether it is taken or not taken. And obviously, this type of state based branch predictions should have a recovery mechanism. By recovery mechanism, I mean whenever the prediction turns out to be incorrect or wrong, the prediction bit is inverted to fix the mistake. That means say earlier if a branch was taken, now it is untaken or not taken. So, the bit has to be inverted and that is done in the recovery mechanism. So, let us first focus on the simplest, histigrist branch prediction that is using one bit predictor. So, you will be using a one bit and use result from last time this instruction executed and small memory indexed by the lower bits of the branch instruction. So, what is being done? Suppose you have got a, this is the address corresponding to a branch instruction and this may be 32 bit. So, what can be done? May be 4 bit or 8 bit will be used to index a small memory, where this will index a memory and where you will store that single bit. That means it will be 0 or 1, this is the 0 corresponds to untaken or not taken and this corresponds to taken. So, you can see you are storing one bit corresponding to each branch address that has been encountered and this is used for indexing purpose. So, this is a kind of cache memory. Later on I shall discuss about the cache memory in details, there you will see there also the lower order address bits are used to as an index and to 0.2 memory locations. So, here also the same thing is being done and however you are storing only a single bit of information t or nt and starts off as t. So, that means initially initial value is usually and it flips whenever a branch behaves opposite to prediction and it benefits from large pipelines particularly whenever you are using a large pipeline then it is benefited. Let us see how it really works. So, you have got using a single bit you have if you look at the state transition diagram of this predictor, it has got two states corresponding to taken, where the value is 1 or not taken or untaken. So, if the outcome is taken then it comes back to this it remains here, but if the prediction turns out to be wrong then if it is not taken then it will go to this state and next time if it is not taken then it will remain here. So, and if it will remain in the not taken state as long as the prediction turns out to be I mean if the branch is not taken and here it will remain in this as long as it is taken. So, whenever it is in taken state if a branch is not taken then it will go to this. On the other hand whenever it is in the not taken state if a branch is taken then it will go to this state. So, this is how this particular thing works and this is the state transition diagram. And as I mentioned for simple pipelines the benefit may not be much. However, whenever you have got very large pipeline say at 12 stages, 10 stages or more then you will be benefited more. Now, let us have a look at the limitations of one bit predictor. Now, prediction value may not correspond to the branch being considered. So, this is a very interesting observation, see here it is being said that prediction value may not correspond to a branch being considered. Say what we are doing? We are indexing by using the 8 bit address. So, this is a branch address corresponding to a branch instruction. Now, there may be another branch instruction giving the same bits that means, same lower order 8 bit. So, this will also point to the same location. Now, what may what can happen? This particular we are trying to predict when the branch address is this. I mean the instruction address corresponding to correspond to this, but the value which is being stored here corresponds to this branch instruction. So, what is happening? We are trying to predict from the lower order address which may have come from some other branch. The main flaw here is you see normally in a cache memory we have tagged bits. Later on I shall discuss in detail in that case you know what is being done in case of conventional cache memory, you have this is the different fields of the cache memory. So, here it has got two parts, one is your tag and another is your data and of course, there are few flag bits which I am not showing valid and another thing. Now, these tag bits are missing in this particular cache. So, although we are using cache memory, but tags without tags that means without tag bits. What is done by the tag bit? The higher order address is stored in the tag bit. So, whenever I mean if the pointing is done with the help of this lower order address, then higher order address is compared with the tag value that is being stored. So, in such a situation the problem that is arising here will not occur. That means, since our cache is without tag, so it will be always hit and in case of conventional cache memory, it is not always hit. That means, only when the higher order address is same as the tag bits, so these two has to be same, only then there is a hit. So, this higher order address is compared with this tag and only when they are same there is a hit, but in this particular simple situation there is no tag bit, so it is always hit and this problem is arising out of this. So, this information value may not correspond to branch being considered. So, as I have already mentioned, this cannot be avoided because branch prediction buffer serves as a cache without tags. So, we are holding the information in branch prediction buffer which is acting as a cache memory without tags. Now, let us consider some examples. Consider a loop which is looping 10 times and repeated executions of the loop will result in two incorrect predictions. So, first iteration flips not taken to taken and last iteration flips from taken to not taken. So, at least I mean there will be two mispredictions. So, two misprediction and out of 10 and so the prediction accuracy is 80% in such a case. Now, if the branch alternates between taken and not taken what can happen? A particular program branch is for a particular branch address it is alternately changing taken not taken, taken not taken. So, whenever we use one bit then what will happen? The prediction accuracy will be 0 because you will predict taken but it is not taken. So, you will modify it to not taken next time. So, this is actual and this is predicted. So, predicted is taken actually not taken. So, you have modified it to not taken and again it will be taken. That means if it alternates it will continue and taken it will be not taken. So, what will happen? The misprediction rate is very high 100%. So, we get 0% accuracy. So, this is the limitations of one bit predictor and this is another example. So, actual outcome of branches is not taken, not taken, not taken, taken, taken, taken. So, this is how I mean for a particular application this happens. So, initially it was taken because previous branch was not taken. So, it was modified to not taken. So, it matches matching here. So, previous one was not taken. So, it is not taken here. It is matching here but here previous value was not taken but now it is taken. So, this is incorrect. This is a wrong prediction. So, previous was taken. So, here it is taken. So, here it is again matching. So, we find that in this case there are two wrong which are shown by red color and four correct. So, there is 60% of accuracy. Now, how can we improve this prediction? So, instead of a single bit we can go for two bit predictor which can do even better. So, of course this is a special case of K bit predictor. We can have K bit in our predictor but for the sake of simplicity we shall consider two bit predictor and we shall see how this two bit predictor performs and whether later on we shall also see by increasing the number of bits whether there is any benefit or not. So, change prediction only if twice mispredicted. So, incremented if taken, decremented if not taken. So, this is the basic idea of two bit dynamic branch prediction scheme. So, it is done in this way. So, suppose since you are using two bits it will have four states. Let us assume the lower two states correspond to predict not taken and the top one corresponds to predict taken. And whenever let us start with this state 0 0 we shall be having two bits. Now, whenever predict here the prediction is predict not taken and if it is not taken it will keep on looping not taken and if it is taken it is incremented by one. So, it goes to this state. So, here it is 0 1 now if it is again not taken it comes back to this state that means it is decremented when not taken and incremented when taken. So, when taken it is incremented now if it is taken then it will go to this taken and not taken we have already taken care of. Now, it will go to taken means it will increment by one. So, it will become 1 0 in this particular case if it is not taken again it will come back here it is it will be decremented and if it is taken it will go to this state taken if it is not taken I mean go to this state we will with value 1 1 and if it is not taken it will come back here. So, we find that the for a this is the case for two bit predictor in general we can have n bit predictor. In a n bit predictor the number of states can be starting from 0 1 up to 2 to the power n minus 1. So, in case of two bit it is 0 1 2 and 3. So, these are the states then we see that it is incremented whenever it is taken and it is decremented whenever it is not taken. So, we can start with this or we can start with this that can be our initial point. So, here if it is taken it will remain here. Now, this we are realizing with the help of a saturating counter what is the difference between a saturating ordinary counter and saturating counter the difference lies in this as we know in case of ordinary counter it starts incrementing from 0 then 1 then 2 in this way it will go up to 2 to the power n minus 1 that means that will correspond to all 1 then again it will come back to 0. So, that is the conventional counter, but here it is not so as you can see whenever it is incrementing after if you whenever it reaches the value 2 to the power n minus 1 it remains here that means if it is taken continuously it will remain here it will not it will saturate at that point. Similarly, if you keep on decrementing whenever it is not taken it will reach the point 0 and it will remain in that as long as it is not taken. So, this is called saturating counter and when the value is half of 2 to the power n minus 1 or half or more then it is taken and it is less than half then it is not taken. So, there is a boundary as you can see the upper half corresponds to predict taken and lower half corresponds to predict not taken. So, whenever it switches between these two it changes between taken and not taken. So, this is how it works in general for n bit counter and for a 2 bit predictor this is how it works. So, this is a 2 bit predictor as I have mentioned this is a special case of n bit saturating counter and it can take on values between 0 to 2 to the power n minus 1 when the counter is greater than or equal to half of the 1 half of the 1 half of the max value predict is taken otherwise predict is not taken as I have already mentioned. So, this is your 2 bit predictor and here also the branch prediction buffer is implemented as a special cache as I have already mentioned. This you are storing the bit values in a cache memory that branch predictor buffer and this is accessed due to instruction phase stage. You can see this cache memory is accessed by at the instruction phase stage and again lower order address values are used for as a pointer. So, lower order address these are the lower order address bits which are used as pointer and which is these are the predicted values 1110 depending on those states that I have already mentioned that means 1001. So, 11101110 these values are being stored that predicted values are stored here corresponding to different I mean instructions corresponding to branches. Now, let us look at the performance of this 2 bit predictor. What is the predictor accuracy using a 4096 entry 2 bit branch predictor for a typical application and it has been found that 99 percent to 80 percent depending upon the application. So, it will depend on the application program. So, from one application to another application it will vary but prediction accuracy appears to be quite good it is 99 to 80 percent. Now, as I mentioned there is a scope for increasing the number of bits in the predictor. Now, question naturally arises what is the optimum number of bits that should be used in the predictor whether 2 bit is sufficient or 3 bit is better than that significantly better than that or 4 bit is significantly better than that. So, what is the optimum number of bits that should be used for predicting and it has been found that 2 bit predictors do almost as well as n bit predictors I shall show you the statistics for application programs. Another scope is can the accuracy of branch prediction be improved. So, there are two ways by which you can improve the performance. One is by increasing the size of the branch target buffer another is by using a better prediction scheme. So, later on we shall see how the accuracy of the branch prediction can be improved. So, first let us see what is the improvement as we increase the number of bits. So, it has been considered for SPAC 89 bench max using 4096 entry 2 bit predictor buffer. So, the study was performed long back back in 1992 by Panso and Rame. So, here you can see this is the frequency of mispredictions for different programs. So, mispredictions as you can see varies from 18 percent to 0 percent. So, for this particular problem application EQN TOTT I do not know exactly what is this application, but for this application the misprediction rate is very high. So, you can see the frequency of misprediction is dependent on the application. Now, let us compare this with that of unlimited number of bits that is unlimited number of entry that you have got. So, here you have got only 4096 entry. Now, if you increase the number of entries unlimited entries 2 bit entries unlimited number of 2 bit entries what is the frequency of misprediction. As we can find in most of the cases there is some improvement, but very small. For example, for unlimited entries NASA 7 example gives 0 percent misprediction. On the other hand with 4096 entries 2 bit entry gives 1 percent misprediction. And if we consider the another example GCC here there is a decrease of only 1 percent of misprediction. So, we find that there is marginal or no increase in performance as we increase the size of the buffer. So, from this what conclusion we can make? The conclusion that we can make is that 4096 bit is quite sufficient. There is no need to increase the size of the branch prediction buffer to achieve better performance. Now, we shall consider about better schemes. So, we have seen by increasing the size of the buffer we are not gaining much. So, what is the other alternative? Other alternative is to use a better scheme, better scheme than this 2 bit predictor. So, the better scheme that has been proposed one of them is known as correlating branch predictor. So, this 2 bit predictor uses only the recent behavior of a single branch to predict its future behavior. So, what we are doing here? What happened in the recent past? That information is being used to predict the future. Obviously, it is not performing well. So, what can be done? It may be possible to improve the accuracy of branch prediction by using branch predictors that use the behavior of other branches to make the prediction. These are known as correlating predictors or two level predictors. So, there may be more than one branch in a program. It is quite obvious. So, so far we have restricted to the present branch instruction. Now, what happened to the present branch instruction? Now, what we are trying to do? We are trying to look at other branches and let us see whether other branches affects the current branch. That means, we are looking at the behavior of other branches to make the prediction and this is known as correlating predictor or two level predictor. So, let us look at this example on the left side. If A is equal to 2, then B is equal to 2. So, these are variables. If A is equal to 2, then B is equal to 2 and if B is equal to 2, then B is equal to 0. And if A is not equal to B, then something. So, this is the example and whenever we go for this MIPS instruction, assembly language instruction and assembly language program corresponding to this high level language program, we get this. And here, these A and B are considered these variables A and B are being stored in register R 1 and R 2. So, then here what we are doing? D sub u. So, you are subtracting 2 from R 1, then storing in R 3. Then we are comparing B not equal to Z R 3. This is a branch instruction and R 3 is compared whether branch if it is not equal to 0, then it branches to L 1. If it is equal, then it executes the next instruction. And similarly, that B is also stored in R 2. So, here we are subtracting 2 from R 2, storing in R 3. Again, if we are comparing it with equal to 0 and that R 3 whether it is 0 or not, we branch not equal to 0. If it is not equal to 0, it branches to L 2 and this is the target address L 2. Otherwise, it executes d add R 2 comma R 0 comma R 2. And this is the L 2 branch and third branch is B 3 that this is this one. If it is not equal to B equal to 0, so that means this if it is not equal to B, then it branches to L 3. So, this is the assembly language program. Here, the important observation from this example is that behavior of B 3, so whether that branch will be taken or not taken is dependent on is B 3 can be correlated with that of B 1 and B 2. That means, what happened in B 1 and B 2 is affecting B 3. That means, if both B 1 and B 2 are not taken, then B 3 will be taken. So, this is the important observation of this correlating branch predictor. That means, if both B 1 and B 2 are not taken, then B 3 will be taken. So, this important observation can be used in the prediction in a correlating branch predictor. So, information about previous two branches can be used to predict the behavior of B 3. That is the basic idea of the correlating branch predictor. And this is a generalization of correlating branch predictor. So, here an m comma n predictor that makes use of outcomes of the observed from the last m branches. So, there may be m branches and those m branches can be taken or not taken that will lead to 2 to the power m alternatives. So, previous m branches each of them may be taken or not taken. So, this bit can be 0 or 1. So, that means, it has got m bits and each bit can be if it is all or not taken, then it can be 0 and the corresponding m bit if all are taken, then it can be all 1. So, you can see you have got 2 to the power m possibilities whenever you consider m outcomes of the previous m branches. And behavior of a branch can be predicted by choosing from 2 to the power m branch predictors. It is improved prediction accuracy for small hardware cost. So, we shall see what is the hardware cost involved in it. And history of the last m branches can be kept in a as a SIFT register. So, this is how the information of m branches can be kept and each bit records whether corresponding branch was taken or not taken as I have already told. If it is taken, it will be 0. If it is not taken, it will be 1. If it is not taken, it will be 0. And branch prediction buffer can then be indexed by the concatenating the lower order bits of the address with the m bit history. So, this m bit history and the lower order bit address of the instruction can be used as a pointer, can be indexed by the concatenating index by this. So, let me show it, how it can be done with the help of a 2, 2 correlating predictor. So, in this particular case, we are using 4 bit, 4 lower order bit of the address. Then we are considering m is equal to 2, m is equal to 2 means it will be having, there are possibility of 4 alternatives. Previous two branches can have 4 alternatives 0, 0, 0, 1, 1, 0, 1, 1. And the 2 bits that is being stored are taken, not taken, which are stored here. That 2 bit, we have seen whenever we are using 2 bit, then it will require 4 states 0, 0, 0, 1, 0, 2, 1, 1, 1. And this is being stored in this particular memory. So, for this purpose of visualization, these are shown separately, but they can be stored in a linear manner in the memory. So, here you can see, the branch address is pointing to a particular location. And with the help of this index, you can have one of the 4. That means, in this case m is equal to 2, there are 4 possible alternatives. And the 2 bit global branch history is pointing to one of these 4. So, that means that global branch history means that previous 2 branches, whether both of them were taken or both of them were not taken, one was taken, another was not taken. That history is being used and that is pointing to one of the 4 possible columns. So, we have got 60 to 64 total number of entries, and out of which you can see 1 out of 16 is pointed out by the band address. And again 1 out of these 4 is pointed by the 2 bit global branch history. And this is how the prediction xx that is your 2 bit prediction is available from here and which is being used for the purpose of branch prediction. So, a 2, 2 buffer with 64 total entries is shown here for lower address bits of the branch and 2 global orbits from the index. So, for the purpose of visualization it is shown here, but it may be considered as a single entry. That means, you can have 6 bit, 4 bit, this is the lower order bit address and the higher order bit can be address can be coming from branch history. So, this will be acting as a pointer in such a case, it can be linear memory. So, there will be 64 entries starting from all 0 to all 1 and each having 2 bits. So, this is how the branch target buffer can be organized and the information about the correlating predictor can be stored in this branch target buffer. And let us see what kind of prediction accuracy is obtained with the help of this particular type of entry, I mean whenever we use this correlating predictor. This was done for this sake of comparison, the comparison should be done on equal footing. That means, you see we are comparing this correlating predictor with the 2 bit predictor. In case of correlating predictor, you have got the memory requirement that is in the branch target buffer has to be same as that of 2 bit predictor, only then the comparison will be on equal footing. That is what has been tried here. For example, the number of bits in 4096 entries in a 2 bit predictor is 8 k. So, with the same number of memory for 1 0 to 2 4 entries here there is a mistake it will be 2 into 2 into 1 0 to 4, 2 into 2 into 2 that means for 1 0 to 4 entries and 2 bit predictor and here it will be 2 bit for that the number of that m and n that is varying that varies. So, it will be 1 0 to 4 into 8, so that will give you 8 k. So, with the same number of bits the comparison is being done and this is the 4096 entry, 2 bit entry and unlimited entry and 1 0 to 4 entries that is your correlating predictor 2, 2. So, here as you can see there is significant improvement in performance for the last curve. This corresponds to the correlating predictor. So, here you can see there is some decrease for some applications. So, from 9 percent it is coming down to 5 percent for the same size of branch target buffer, branch prediction buffer. Here also coming down from 9 to 5 for application a PPP from 9 percent to 5 percent and for GCC it is coming down from 12 to 11 percent it is same as the case where you have got unlimited buffer. So, comparison between whenever we go for unlimited buffer with that it is performing same with limited buffer that means with 8 k entries 8 kilo bits. So, again here we are getting a decrease of 5 to 4 to 4, but here there is a dramatic improvement of performance. We have seen for this example EQ and TOTT for limited buffer of 8 k and 8 kilo bit and for unlimited buffer it was 8 kilo bits 18 percent, but as you can see here for correlating predictor it is coming down to 6 percent. So, this is there is a significant improvement in performance of this correlating predictor. And similarly for LI application it is coming down from 10 percent to 5 percent. So, what we can say from this our conclusion is this correlating predictors perform better compared to 2 bit predictor with limited branch target branch prediction buffer and also with unlimited branch prediction buffer. So, that is the reason why this particular approach has been found to be attractive. Now, the question arises we have already seen how this correlating branch predictor works and what we are trying to do we are noting down the predictions of other branches or rather the predictions for other branches are being used for I mean the outcome of other branches are being used to predict the behavior of the present branch. In what way I mean why it is possible and how it is possible that you should understand and why does the outcome of one branch depend on the outcome of another branch. So, we are considering other branches to predict the behavior of the present branch why this is so. The reason for that is depending on whether some preceding branch is taken or not taken some variable may be set to some value or not. So, what is happening you know some variables are propagating from one branch to another branch and values are modified by the previous branches and which are being used by the present branch and this is how one branch is affecting another branch and that is the reason why this correlating branch prediction is working better compared to the based on the local branch. So, here there is another example of correlating branch prediction example this is d is equal to 2 if d is equal to 0 then d is equal to 1 if d is equal to 1 then d is equal to 0 else d is equal to 2 and so on. So, this is a simple example and the corresponding assembly language program is shown here branch not equal to 0 r 1 comma l 1 that means branch is taking place if d is not equal to 0 and here branch is taking place if d is not equal to 1. So, b 1 is not taken then b 2 will not be taken. So, you see because of the variable that is passing with that d that variable value is passing from one branch to another branch and from if b 1 is not taken then b 2 will not be taken because d 1 this that the variable d is being modified by previous branch and that is being used by subsequent branch decision and that is the reason why this correlating branch predictor is performing well. And from this in this particular example for example, if b 1 is not taken then b 2 will not be taken. So, let us consider situation where we shall be considering one bit predictor for the example. This is the example that we are considering how this example behaves for one bit predictor. So, the value of d is changing alternately it is becoming 2 and 0 2 and 0 and that b 1 prediction is not taken not taken taken I mean if you substitute it here you will get this outcome. This is the prediction initially not taken. So, initially not taken then actually it was taken. So, that was changed to taken but unfortunately next time it is not taken. So, this is the new b 1 prediction and that is not matching and again it was not taken. So, it was changed to not taken. So, prediction was not taken but it was actually taken. So, this was the case for branch b 1 and in case of branch b 2 again initially it was not taken but actually it was taken. So, it was modified to taken but unfortunately next time again it was not taken and again not taken. So, not taken there was a prediction but actually it was taken. So, this prediction was changed to taken and unfortunately next time again it was not taken. So, in this particular case we find that for one bit predictor prediction accuracy is 0 percent because if you consider the first table I mean second column not taken not taken taken corresponding the value of d is equal to 2 0 2 0 and with the initialization I mean initial value of n t this is the prediction and actually just the opposite for all the four cases. Similarly, here for the branch b 2 the prediction was not taken taken not taken and taken and actually it was taken not taken taken not taken. So, again it was the prediction accuracy was 0 percent I mean always wrong. So, we find that one bit predictor for this example for this particular example and for these two values of d alternate values of 2 and 0 or prediction accuracy is 0. Now, let us see how this 1 comma n that is m is equal to 1 and n is equal to 1. So, this is a correlating predictor and we shall apply this to for a simple correlating predictor having 1 m is equal to 1 and n is equal to 1 and here it has got two bits prediction if last branch not taken and prediction if last branch taken. So, we are using two bits and it is initialized to not taken not taken. So, in this particular case as the values of d changes from 2 2 0 2 2 0 the B 1 prediction was not taken not taken and but actually it was taken. So, it was modified and the new branch prediction was taken slash not taken and it was next time it was taken not taken but it was not taken. So, this is the prediction this is the prediction and in this way you can show all the corresponding to this branch. We find that only for the first row not taken not taken and here it is taken and except for this first row here also we find that for B 2 prediction not taken not taken it was taken so it was changed to not taken by taken. So, this corresponds to the first one corresponds to B 1 second one corresponds to B 2. So, we find here that except the first row for all other cases prediction is correct. That means here it is taken not taken here also taken not taken taken not taken taken slash not taken same taken slash not taken taken slash not taken. Similarly, the second row here not taken by taken not taken by taken not taken by taken not taken by taken. So, here except the first row for all other cases we are finding that prediction accuracy is correct that means prediction is correct. So, we can say that prediction accuracy is nearly 100 percent for subsequent cases. Let us talk here today with this correlating branch predictor. In the next lecture we shall discuss about another important predictor that is known as tournament predictor. And you know when some games are proceeding for example, a game of cricket prediction is done. So, normally prediction is done in two ways say out of so many matches 100 matches how many match a particular team own. Another comparison is done on this particular ground so many matches took place and in those so many matches how many matches a particular team own. So, we can see here one parameter is global another parameter is local. So, this local and global parameters are used in tournament prediction. Somewhat similar concept is being used in the tournament predictor that I shall be discussing in the next lecture. Thank you.