Today in class we discussed the aspects about software and hardware programming that i hate to admit are important, and for that i am sad. The good news is that this lecture is a one off and wont, according to my professor, ever happen again. Here are the common pitfalls of computer architecture:
- ignoring cost when developing software or hardware
- ignoring what your customers are looking for
- ignoring trends in technology
- focusing on Local optimizations
- over-optimizing and creating complexity
- faulty performance measures
Unfortunately, I cant really argue against any of these items. There is a certain benefit to the “Well, It Works!” mentality – at least they reach production from time to time, usually ahead of time. It is with great regret that i have to admit so much. It is a real shame.
Optimizing is still my drive, and doing things the best way is always going to be something i can drive for, i just have to accept that the best way is subjective to the goals of whatever project I am part of. Lucky for me, game development requires optimization in spades =D
At least from here on out VHDL is going to be taking the reigns and everything we code is going to be focused on speed.
We looked at a graph, plotting the cost/performance versus performance graph. This graph plotted three technologies (A, B, C), each overlapping and shaped like a flat bottomed U and broken into three distinct parts.
- Under-Utilization on the left, with quickly decreasing cost for any performance gain
- Optimal-Utilization at the bottom, where cost and benefit are matched
- Over-utilization on the right, with sharply increasing cost for any performance boost.
Cost can come from anywhere, including but not limited to books, effort, hardware or tools. A laundry list of anything you can imagine that would impact your ability to improve a product. My focus has always been on optimization and understanding the underlying technology can only help. Writing my first CPP & ASM application was a lot of fun, but there is an added layer of complication in that it was MASM ASM and blah blah blah – all kinds of crazy platform dependencies. Hopefully this class will make me happy, i want to over-optimize the shit out of this mother board I got.