Processor Design Module - Page 1
Forum section: electronics / general

author: Chet T16
author_rank: Frequent Contributor
timestamp: January 06, 2012, 09:07:06 am
content: I see this coming up as available for me to take:QuoteDoes this sound useful? I'd never heard of the MIPS32 until i read it there. Is learning some assembly still worth it? Is it specific to individual chips or would the assembly i learn there apply generally?

author: JuKu
author_rank: Frequent Contributor
timestamp: January 06, 2012, 10:57:51 am
content: IMHO, you need to understand the concept and be aware of what the compiler is actually doing, especially on exceptions, interrupts and power saving modes. Also, the mentioned pipeline and cache are important concepts. So, the course might be useful as a basis for learning. A student with this understanding is in a good position to learn skills that are needed in work environment.But other than the above, assembly is seldom needed in real life outside university. I build embedded systems for living, and last time I used assembly for a microcontroller was some time in the eighties. (I'm old, too.) I did use assembly for a dedicated signal processor in early nineties, but the days of assembly are long gone. Of course, there are exceptions: You do need assembly know-how if you are designing processors, building tools for them or writing a high performance real time kernel.In fact, when I'm hiring embedded programmers, in-depth assembly skills counts as negative (outside of the exceptions): The applicant does not understand the concept of productivity and is not using proper tools for the job.

author: McMonster
author_rank: Frequent Contributor
timestamp: January 06, 2012, 11:44:36 am
content: MIPS32 is commonly used on universities to teach basic assembly programming and computer architecture courses. It is also used in many devices like video game consoles, tablets and other stuff. It's always a good idea to take such course, especially if you're interested in embedded design as you can learn how does the computer work inside. The assembly language is clean and easy, but the whole module would not be much useful in real life beyond learning "how does this black box work", just need to remember that and enjoy the course.

author: IanB
author_rank: Super Contributor
timestamp: January 06, 2012, 03:17:29 pm
content: If the material is new to you, that sounds like a very interesting module to take. It is never harmful to understand more of the basic theory behind the design and operation of things you work with.As an aside, I may not have reason to write code in assembly, but I've often had reason to step through compiler generated machine code in memory with the debugger when investigating a bug. On at least one occasion the problem was a fault in the compiler causing it to emit bad code that did not comply with the requirements of the processor hardware. Such a problem would be impossible to find when debugging at the source code level.

author: Chet T16
author_rank: Frequent Contributor
timestamp: January 06, 2012, 03:26:44 pm
content: Yes it would be new to me. Its a computer science module and it sounds like the first time there is a proper crossover between engineering and computer science so it really caught my eye. My other option is an object oriented programming module which i would like to do but its suggested that you have a number of years prior experience with an object oriented language. I've only ever done a basic module in C++ so i don't want to take a chance on that when it says it will be mostly presented in RubyIt sounds more interesting than useful then, i'm ok with that!

author: IanB
author_rank: Super Contributor
timestamp: January 06, 2012, 05:01:38 pm
content: I wouldn't bother so much about the object oriented programming module unless you already have some considerable programming experience. Otherwise it would be hard to really put it into context. I have found that software engineering and software design is a field that is very amenable to self-teaching and continuing professional development. It's not urgent to take a taught course module on the subject if it's not part of your major subject of study.

author: bruce273
author_rank: Contributor
timestamp: January 06, 2012, 05:07:12 pm
content: They teach a similar course at my university, You'll look at how machine code is derived from C or other compiled languages and how to optomise it. The reason they use a specific processor such as mips or x86 is to introduce special function registers which are unique to certain processors (eg: SSE on intel and NEON on arm). It'll probably help more in the in future if you want to develop in C or design new languages but that's a biased engineering student talking

author: A-sic Enginerd
author_rank: Regular Contributor
timestamp: January 06, 2012, 11:50:31 pm
content: This looks to me like an intro to CPU architecture type thing, so expect to get out of it accordingly.Will it teach you "assembly programming"? Not really. Only enough to to get an understanding of what's happening in your particular lab.Is it something applicable to other fields like embedded system design, cpu design, or even logic design or computer interfacing? Only if you couple this with a bunch of other stuff.So, may be interesting class to take if you don't have any background in that kind of stuff already, but don't expect to come out of it with much anything that will be directly applicable to anything you want to do.And to answer you other question more to the point: NO, assembly is NOT universal. An assembly language is specific to the cpu architecture. Some basic concepts will be portable / semi-portable from one architecture to another, but that's about as far as it goes. In school, I learned Motorola 68K assembly (showing my age here). On the job I've had occasion in recent years to deal with ARM assembly. ARM makes my head hurt, even though it's RISC. One has never seen so picking many addressing modes. Sheesh!!!

author: Zad
author_rank: Super Contributor
timestamp: January 07, 2012, 04:31:12 am
content: Take it. It is the foundations of all programming. Once you have these fundamental building blocks, your ability with both hardware and software will be all the stronger. The MIPS32 is a relatively rare beast nowadays, with the ARM architecture being dominant, but in many ways it doesn't matter what processor is chosen, much of the principles are the same. Sure, all processors are different, but once you know one then all the rest are relatively easy to understand.

author: Chet T16
author_rank: Frequent Contributor
timestamp: January 15, 2012, 11:06:15 pm
content: First lecture tomorrow so you might all be for it when i get homeAlso, had this from a someone that took it previouslyQuote

author: slateraptor
author_rank: Frequent Contributor
timestamp: January 16, 2012, 04:41:01 am
content: Quote from: Chet T16 on January 06, 2012, 03:26:44 pmThe world is saturated in digital technology; you'd be a fool to leave uni without having vested time studying computer architectures. So why not receive academic credit for it? Best of luck.

author: westfw
author_rank: Super Contributor
timestamp: January 16, 2012, 09:21:46 am
content: MIPS is about the second-most popular CPU implementation sold as "Intellectual property" (a distant second to ARM.) It's "reasonably popular", and has enough generic concepts to be a good introduction to architecture and assembly language(s).PIC32 is a MIPS implementation, for example. When I was having questions about how to do stuff (like multi-precision math, or "do they really reserve a register for use only in ISRs?") on PIC32, google turned up quite a few "notes" from other university classes.It sounds like a pretty good class...