Talk:Intel MCS-51

From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing  
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
 ???  This article has not yet received a rating on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
 

8051 Oral Panel[edit]

Interview with 8051 designers. Is the link worthwhile enough to be included in the 8051 page? http://www.computerhistory.org/collections/accession/102658339 I leave the decision to wikipedia maintainers (this note added 2010-01-16) http://archive.computerhistory.org/resources/text/Oral_History/Intel_8051/102658339.05.01.acc.pdf

64k of memory, eh?[edit]

How is it possible to adress 64k each of RAM and ROM (that would equal 128k in total) with a 16 bit adress bus? Is there a line on the control bus or something to deal with a simple bank-switch kind of thing? Wilsonsamm (talk) 20:08, 2 October 2008 (UTC)

The 8051 has a harvard architecture. Please follow the corresponding link in the article. --89.15.178.202 (talk) 20:48, 26 November 2008 (UTC)

8051 architecture[edit]

Is 8051 a CISC or RISC machine? Is 8051 a Harvard architecture? —The preceding unsigned comment was added by 61.17.44.86 (talk) 08:05, 29 January 2007 (UTC).

The 8051 is definitely a CISC machine. Its instruction set is wide and varied with lots of addressing modes and only a few registers. RISC machines typically have a much smaller instruction set and a bank of 16 or 32 registers. RISC machines typically only operate on data in the registers and have a "load/store" architecture. The 8051 instruction set mostly operates on the Accumulator and values in memory. Thus, the 8051 is CISC.

The 8051 is considered a Harvard Architecture machine because it has separate code and data spaces. Depending on the implementation however, it can be either Harvard or von-neumann. Older versions of the 8051 are more often van-neumann in that the CPU takes several clock cycles to fetch each operand/instruction individually. Newer single-cycle 8051s are often Harvard so they can get higher performance. The Harvard architecture allows the Instruction and the operands to be fetched in the same cycle. 68.189.241.68 (talk) 14:28, 24 February 2008 (UTC)

At least with the ROM based variants, the original 8051 could be considered Harvard (and was described as such in the microprocessors course I took in college) in that you could not read from the program address space with normal data read instructions. It was its own address space, and one presumes there was a separate, dedicated path for program fetches. There are special "table lookup" instructions that allow you to read data from the program space, though. Also, on external fetches, the original 8051 CPU would indicate whether it was fetching program or data, so you could continue to keep those address spaces separate even for external memory. That said, once accesses go over the external bus, program and data busses are merged and so are no longer separate busses, and so it does look von Neumann-ish at that point. If a given design ignores the program/data indicator, the two address spaces merge for those external fetches, like in any other von Neumann-style architecture. Note that I limit my comments to the original 8051. I haven't used any of the modern variants so I cannot comment on them. --Mr z (talk) 07:03, 3 September 2008 (UTC)

8051 has a von Neumann architecture and not the Harvard architecture —Preceding unsigned comment added by 123.238.27.95 (talk) 19:32, 7 December 2008 (UTC)

thank you intel —Preceding unsigned comment added by 217.219.35.2 (talk) 06:31, 13 May 2009 (UTC)

license[edit]

I heard a rumor that the 8051 has somehow fallen into the public domain. Is that true? If so, this processor should be listed at open hardware#CPU. Or is Intel still selling the 8051 design under NDA licenses, even though it no longer fabs the chip? Something like ARM Holdings sells CPU designs but does not fab any chips? --68.0.124.33 (talk) 14:13, 13 August 2009 (UTC)

Various versions[edit]

Could we start listing various versions and manufacturers here somehow? A few have wp pages and links lead here but there's no line back to specific/super/modern versions. —Preceding unsigned comment added by Blades (talkcontribs) 12:43, 22 October 2009

I don't think that such details are desirable in an encyclopedia article. Lists of such details seem to me to be contrary to the general spirit of several sections of Wikipedia:What Wikipedia is not, even though, as far as I know, this particular case is not explicitly mentioned there. JamesBWatson (talk) 14:05, 24 October 2009 (UTC)
  • There are more than enough vendors listed already, IMO. --69.226.238.251 (talk) 00:13, 25 November 2009 (UTC)

Memory architecture[edit]

The discussion of the memory architecture could use a little more detail. There is direct RAM, indirect RAM, SFR's, external RAM, and program memory, plus the bit-addressable feature of part of the RAM and some of the SFR's. I will add a section to the article in the near future, as it seems important to understanding the architecture. Pfagerburg (talk) 05:06, 13 November 2009 (UTC)

Done. Community feedback will be greatly welcomed. Pfagerburg (talk) 04:03, 14 November 2009 (UTC)

Instruction set mnemonics possible copyvio?[edit]

I disagree that a processor instruction set is copyrightable.

However, Intel has claimed (still does claim?) copyright on the 8051 instruction set, and I am unsure if its inclusion in this article is allowable, even with the copyright notice included. (It certainly doesn't say "used by permission.")

Copyright query[edit]

Pfagerburg (talk)

I'm also not sure that section belongs in the main article anyway, c.f. Atmel AVR and Atmel AVR instruction set. Regards, Pfagerburg (talk) 05:19, 13 November 2009 (UTC)

I don't think we need pay too much concern to this issue. For a start it the intention behind behind claiming copyright on an instruction set is to prevent copying of the instruction set (i.e. prevent the manufacture of clone devices), not to prevent documentation of that instruction set. However, it is also now generally accepted that instruction sets are not copywritable, as evidenced by the range of x86 and indeed 8051 clones. As even Intel acknowledge at [1] (section 2.1.1):

While any imitator of the Intel Architecture can provide the CPUID instruction...

That is a slightly different context since it does of course refer to the x86 architecture, but it is exactly the same issue. CrispMuncher (talk) 13:17, 13 November 2009 (UTC)
Thanks for your input. Every 8051 datasheet I have seen includes Intel's copyright notice with the instruction set table. I'm not saying that the instruction set list in the article is copyright infringement; I'm simply not sure and would like to hear from others (obviously including you now). Pfagerburg (talk) 01:50, 14 November 2009 (UTC)

I think it would be more helpful to have the article discuss the types of instructions that are available, and the many and varied addressing modes, rather than just a list of the instructions. This could replace the instruction set list, which could be deleted, moved to a separate article, or even pointed off-wiki. I'm willing, but what does the community think? Would it improve the article? Pfagerburg (talk) 03:21, 14 November 2009 (UTC)

I agree that reproducing the entire mnemonic list is unnecessary. I don't think copyright would prevent using some mnemonics as part of a discussion of the types of operations and addressing modes—the Zilog Z80 article already does something like this—and it would be more helpful for the majority of readers. Thanks for offering! - Pointillist (talk) 14:51, 14 November 2009 (UTC)

Here's a very rough start of what I'd like to put in for addressing modes:

  • register - R0 - R7, ACC
  • direct memory (IRAM up to 0x7F, SFR's from 0x80 to 0xFF)
  • indirect memory (IRAM from 0 to 0xFF, XRAM up to 0xFF or all of XRAM, depending on the instruction)
  • bitwise (IRAM from 0x20 to 0x2F, SFR's 0x80, 0x88, 0x90, 0x98, etc.)

There's a lot of special cases, particularly on indirect memory, so that list isn't in a terribly good format right now. Pfagerburg (talk) 18:05, 14 November 2009 (UTC)

For instructions, I'd like to break them down into categories.

  • Arithmetic
  • add with or without carry
  • subtract
  • increment, decrement
  • 8 x 8 multiply
  • 8 / 8 divide
  • decimal adjust (for handling BCD values)
  • Logic
  • bitwise AND, OR, XOR
  • add, subtract
  • clear to zero
  • complement (bitwise negate)
  • rotate right or left, with or without carry
  • nibble swap
  • Boolean operations (single bit)
  • AND, OR
  • clear, set, complement
  • Data Movement
  • move (load or store, depending on the operands)
  • move constant (load from program memory)
  • push and pop
  • exchange
  • Control flow
  • Jump
  • Call and return
  • Return from interrupt
  • Conditional jumps - zero/not zero, carry set/clear, bit set/clear
  • Compare and jump if not equal
  • Decrement and jump if not zero
  • NOP - no operation

Again, there's special cases, which one would need to know about, but presumably an implementer will have the chip datasheet available and can refer to it for the more minute details. Pfagerburg (talk) 18:18, 14 November 2009 (UTC)

  • Agreed that the level of detail in the cited version -- huge detailed tables, with cycle timings based on some random vendor's implementation -- does not belong in WP. And neither does the trimmed-down version proposed above. Anyone who wants such data will be looking at a processor manual ... and almost certainly NOT a manual from Intel. The main thing anyone needs to know about 8051 assembly is that it's so hugely idiosyncratic that running standard C is not practical. --69.226.238.251 (talk) 00:07, 25 November 2009 (UTC)
I think you're correct that there is simply too much detail; there are many 8051 clones, and each one has a full description of the instruction set in the datasheet, so we don't need to reproduce that here. But I'd still like to have something that describes the addressing modes and the fact that while a mostly-complete set of arithmetic instructions are available, the conditionals are, as you say, "hugely idiosyncratic." Pfagerburg (talk) 04:55, 25 November 2009 (UTC)

This is in response to the copyright violation report filed at Wikipedia:Copyright problems/2009 November 21. The raw instruction set (as appears in this article) may fall within a gray area of copyright law. Procedures and processes, being simple lists, are generally not copyrighted. However, computer programs can be copyrighted -- and, when read in their entirety, are considered to be the same as original literary works. Given that we list Intel's copyright in this article, it is my opinion that Wikipedia should play it safe here and assume the instruction set is copyrighted and should not be reprinted. Therefore, I am deleting it from the article. Also, the consensus of the above editors suggests the entire instruction set is unnecessary anyway, and the section needs to be rewritten as a discussion. CactusWriter | needles 16:32, 29 November 2009 (UTC)

Concur on the narrow ground that the entire instruction set is excessive detail in the article, so it is unnecessary to test the validity of Intel's claim of copyright over the mnemonics. - Pointillist (talk) 20:34, 29 November 2009 (UTC)

please provide some assembly language codings —Preceding unsigned comment added by 124.247.231.133 (talk) 19:29, 14 March 2010 (UTC)

Links to vendors[edit]

I was trying to add in links to vendors who are currently providing enhanced 8051 parts. However, it was been consistently removed. I'm not sure why. Hope there is no problem placing the info here and it won't get removed again. The objective of the info is to allow anyone reading the article to be able to go further to actual devices.

By the way, strangely the link on "Intel bows out, discontinues MCS-51" never get removed as if it is such an important info. —Preceding unsigned comment added 00:07, 31 August 2010 (UTC)

Links to vendors is spam and will be reverted. So keep away ... --JWBE (talk) 19:40, 4 September 2010 (UTC)

8051 vs MCS-51[edit]

This article claims that "The Intel MCS-51 ... has today largely been superseded by a vast range of faster and/or functionally enhanced 8051-compatible devices".

That seems ambiguous to me. Is it saying that "8051-compatible devices" are so much better than the original "Intel MCS-51" that they made it obsolete -- i.e., that there is some technical difference between them, but perhaps not a big enough difference to require two separate encyclopedia articles? Or is there is no technical difference between "Intel MCS-51" and "8051-compatible devices" (the phrases are synonyms), and that sentence is merely pointing out that *early* chips in that line have been superseded by *later* chips in that line?

Could someone tweak this article to explicitly say one or the other?:

  • The "8051-compatible" microcontrollers, whether from Intel or from some other company, use the Intel MCS-51 instruction set.
  • The "8051-compatible" microcontrollers, from Intel and from other companies, are very similar to the original "Intel MCS-51" series, except with these advantages ...

--68.0.124.33 (talk) 17:43, 12 January 2011 (UTC)


Minor edits[edit]

The Boolean logic engine is not new, it was included in the original chip. NOte that it only operates on select registers and select RAM locations - it sure would be nice if everything was bit addressable... The Rn banks no not change the interrupt latency which is defined as X number of clock before vectoring to the ISR code. Instead, they speed up the ISR by facilitating fast register saving.Armstrong1113149 (talk) 23:02, 25 August 2011 (UTC)

Max CPU Frequency[edit]

In "Important features and applications" the article states:

Enhanced 8051 cores are now commonly used which run at six, four, two, or even one clock per machine cycle, and have clock frequencies of up to 100 MHz, and are thus capable of an even greater number of instructions per second

In "Use as intellectual property" the article states:

In contrast, enhanced 8051 silicon IP cores now run at one clock cycle per machine cycle, and have clock frequencies of up to 450 MHz

Can someone find out how fast these actually run at? --Maslen (talk) 03:55, 7 November 2011 (UTC)

8031/8051: 1-bit architecture?[edit]

There is a discussion underway at Wikipedia talk:WikiProject Electronics#8031/8051: 1-bit architecture? related to Tagremover's edits on this page, including a strong dispute of his/her interpretation. I would like to keep the discussion in one place rather than fragmenting it over multiple talk pages. --Guy Macon (talk) 14:31, 9 May 2013 (UTC)

Was (is?) this the most popular CPU architecture?[edit]

If not most popular - now, any idea what would be most popular? My guess ARM is now more/most popular (maybe because not only used for microcontrollers). Note: Any idea how many are still produced or cumulative since it appeared? Note there have been 50 billion ARM processors produced and 10 billion in 2013 so really it's only important to me if you think more of these are/have been made. Would it make (much of a) difference if you would include non-8-bit superset-version (do you usually count them as the same architecture, similar to x86/x86-64?)? For me to guess (if I need to), any idea who produces most of the chips and then who? And the lowest priced versions (if I find dollar amounts..) for me to estimate. 4-bits seem to be (have been?) available down to 5 cents in quantity of 100,000 but still 4-bit sell less then 8-bits (and 8051) it seems. See also: Talk:List_of_common_microcontrollers#Which_microcontroller_.28architecture.29_would_be_most_popular.3F_And_which_dead.3F and in Talk:ARM_architecture comp.arch (talk)