World Library  
Flag as Inappropriate
Email this Article

Ibm 801

Article Id: WHEBN0000060671
Reproduction Date:

Title: Ibm 801  
Author: World Heritage Encyclopedia
Language: English
Subject: History of IBM, IBM 9370, Reference desk/Archives/Computing/2009 June 29, PowerPC, SPARC
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Ibm 801

The 801 was an experimental minicomputer designed by IBM. The resulting architecture was used in various roles in IBM until the 1980s. The 801 was started as a pure research project led by John Cocke in October 1975 at the Thomas J. Watson Research Center. The name 801 comes from the building the project was housed in, number 801. IBM was looking for ways to improve performance of its existing machines, with project team members studying traces of programs running on System/370 mainframes and looking at the compiler code. From this project came the idea that it was possible to make a very small and very fast core, which could then be used to implement the microcode for any machine.

The project subsequently developed the 'fast core' design as a CPU, also called the 801. The resulting CPU was operational by the summer of 1980 and was implemented using Motorola MECL-10K technology on large wire wrapped custom boards. The CPU was clocked at 66 ns cycles (approximately 15.15 MHz) and could compute at the then-fast speed of approximately 15 MIPS. This prototype design was a 24-bit implementation without virtual memory. The 801 architecture was used in a variety of IBM devices including channel controllers for their S/370 mainframes, various networking devices, and eventually the IBM 9370 mainframe core itself.

In the early 1980s the lessons learned on the 801 were put back into the new America Project, which led to the IBM POWER architecture and the RS/6000 deskside scientific microcomputer.

John Cocke later won both the Turing award and the Presidential Medal of Science for his work on the 801.

References

  • require('Module:No globals')

local function getCatForId( id )

   local title = mw.title.getCurrentTitle()
   local namespace = title.namespace
   if namespace == 0 then

return ''

   elseif namespace == 2 and not title.isSubpage then

return ''

   else

return ''

   end

end

local function viafLink( id )

   if not string.match( id, '^%d+$' ) then
       return false
   end
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'VIAF' )

end

local function kulturnavLink( id )

   return '.. id .. ' id' 

end

local function sikartLink( id )

   return '.. id .. '&lng=en ' .. id .. '' 

end

local function tlsLink( id ) local id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'WIKI') end)

   return '.. id2 .. ' ' .. id .. '' 

end


local function ciniiLink( id )

   return '.. id .. '?l=en ' .. id .. '' 

end

local function bneLink( id )

   return '.. id .. ' ' .. id .. '' 

end


local function uscongressLink( id )

   return '.. id .. ' ' .. id .. '' 

end

local function narapersonLink( id )

   return '.. id .. ' ' .. id .. '' 

end

local function naraorganizationLink( id )

   return '.. id .. ' ' .. id .. '' 

end

local function botanistLink( id ) local id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'PATH') end)

   return '.. id2 .. ' ' .. id .. '' 

end

local function mgpLink( id )

   -- TODO Implement some sanity checking regex
   return '.. id .. ' ' .. id .. '' 

end

local function rslLink( id )

   -- TODO Implement some sanity checking regex
   return '.. id .. '&CON_LNG=ENG ' .. id .. ''

end

local function leonoreLink( id ) -- Identifiants allant de LH/1/1 à LH/2794/54 (légionnaires) -- Identifiants allant de C/0/1 à C/0/84 (84 légionnaires célèbres) -- Identifiants allant de 19800035/1/1 à 19800035/385/51670 (légionnaires décédés entre 1954 et 1977, et quelques dossiers de légionnaires décédés avant 1954)

   if not string.match( id, '^LH/%d%d?%d?%d?/%d%d?%d?$' ) and
      not string.match( id, '^C/0/%d%d?$' ) and
           not string.match( id, '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) then
       return false
   end
   return '.. id .. ' ' .. id .. '' 

end

local function sbnLink( id )

   if not string.match( id, '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and not string.match( id, '^IT\\ICCU\\%u%u[%d%u]%u\\%d%d%d%d%d%d$' ) then
       return false
   end
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'SBN' )

end

local function nkcLink( id ) return '.. id .. '&CON_LNG=ENG ' .. id .. '' end

local function nclLink( id )

   if not string.match( id, '^%d+$' ) then
       return false
   end
   return '.. id .. '&CON_LNG=ENG ' .. id .. '' 

end

local function ndlLink( id ) return '.. id .. ' ' .. id .. '' end

local function sudocLink( id )

   if not string.match( id, '^%d%d%d%d%d%d%d%d[%dxX]$' ) then
       return false
   end
   return '.. id .. ' ' .. id .. '' 

end

local function hlsLink( id )

   if not string.match( id, '^%d+$' ) then
       return false
   end
   return '.. id .. '.php ' .. id .. ''

end

local function lirLink( id )

   if not string.match( id, '^%d+$' ) then
       return false
   end
   return '.. id .. '.450.0.html ' .. id .. ''

end

local function splitLccn( id )

   if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
       id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
   end
   if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
        return mw.text.split( id, '/' )
   end
   return false

end

local function append(str, c, length)

   while str:len() < length do
       str = c .. str
   end
   return str

end

local function lccnLink( id )

   local parts = splitLccn( id )
   if not parts then
       return false
   end
   local lccnType = parts[1] ~= 'sh' and 'names' or 'subjects'
   id = parts[1] .. parts[2] .. append( parts[3], '0', 6 )
   return '.. lccnType .. '/' .. id .. ' ' .. id .. '' .. getCatForId( 'LCCN' )

end

local function mbLink( id )

   -- TODO Implement some sanity checking regex
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'MusicBrainz' )

end

--Returns the ISNI check digit isni must be a string where the 15 first elements are digits local function getIsniCheckDigit( isni )

   local total = 0
   for i = 1, 15 do
       local digit = isni:byte( i ) - 48 --Get integer value
       total = (total + digit) * 2
   end
   local remainder = total % 11
   local result = (12 - remainder) % 11
   if result == 10 then
       return "X"
   end
   return tostring( result )

end

--Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid --See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier local function validateIsni( id )

   id = id:gsub( '[ %-]', ):upper()
   if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
       return false
   end
   if getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then
       return false
   end
   return id

end

local function isniLink( id )

   id = validateIsni( id )
   if not id then
       return false
   end
   return '.. id .. ' ' .. id:sub( 1, 4 ) .. ' ' .. id:sub( 5, 8 ) .. ' '  .. id:sub( 9, 12 ) .. ' '  .. id:sub( 13, 16 ) .. '' .. getCatForId( 'ISNI' )

end

local function orcidLink( id )

   id = validateIsni( id )
   if not id then
       return false
   end
   id = id:sub( 1, 4 ) .. '-' .. id:sub( 5, 8 ) .. '-'  .. id:sub( 9, 12 ) .. '-'  .. id:sub( 13, 16 )
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'ORCID' )

end

local function gndLink( id )

   return '.. id .. ' ' .. id .. '' .. getCatForId( 'GND' )

end

local function selibrLink( id ) if not string.match( id, '^%d+$' ) then

       return false
   end
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'SELIBR' )

end

local function bnfLink( id )

   --Add cb prefix if it has been removed
   if not string.match( id, '^cb.+$' ) then
       id = 'cb' .. id
   end
   return '.. id .. ' ' .. id .. ' .. id .. ' (data)' .. getCatForId( 'BNF' )

end

local function bpnLink( id )

   if not string.match( id, '^%d+$' ) then
       return false
   end
   return '.. id .. ' ' .. id .. '' .. getCatForId( 'BPN' )

end

local function ridLink( id )

   return '.. id .. ' ' .. id .. '' .. getCatForId( 'RID' )

end

local function bibsysLink( id )

   return '.. id .. '&feltselect=bs.autid ' .. id .. '' .. getCatForId( 'BIBSYS' )

end

local function ulanLink( id )

   return '.. id .. ' ' .. id .. '' .. getCatForId( 'ULAN' )

end

local function nlaLink( id ) return '.. id .. ' ' .. id .. '' .. getCatForId( 'NLA' ) end

local function rkdartistsLink( id ) return '.. id .. ' ' .. id .. '' .. getCatForId( 'RKDartists' ) end

local function getIdsFromWikidata( item, property )

   local ids = {}
   if not item.claims[property] then
       return ids
   end
   for _, statement in pairs( item.claims[property] ) do
         if statement.mainsnak.datavalue then
          table.insert( ids, statement.mainsnak.datavalue.value )
         end
   end
   return ids

end

local function matchesWikidataRequirements( item, reqs )

   for _, group in pairs( reqs ) do
       local property = 'p' .. group[1]
       local qid = group[2]
       if item.claims[property] ~= nil then
           for _, statement in pairs ( item.claims[property] ) do
                if statement.mainsnak.datavalue ~= nil then
                        if statement.mainsnak.datavalue.value['numeric-id'] == qid then
                        return true
                end
            end
           end
       end
   end
   return false

end

local function createRow( id, label, rawValue, link, withUid )

   if link then
       if withUid then
           return '* ' .. label .. ' ' .. link .. '\n'
       else
           return '* ' .. label .. ' ' .. link .. '\n'
       end
   else

return '* \n'

   end

end

--In this order: name of the parameter, label, propertyId in Wikidata, formatting function local conf = {

   { 'VIAF', 'VIAF', 214, viafLink },
   { 'LCCN', 'LCCN', 244, lccnLink },
   { 'ISNI', 'ISNI', 213, isniLink },
   { 'ORCID', 'ORCID', 496, orcidLink },
   { 'GND', 'GND', 227, gndLink },
   { 'SELIBR', 'SELIBR', 906, selibrLink },
   { 'SUDOC', 'SUDOC', 269, sudocLink },    
   { 'BNF', 'BNF', 268, bnfLink },
   { 'BPN', 'BPN', 651, bpnLink },
   { 'RID', 'ResearcherID', 1053, ridLink },
   { 'BIBSYS', 'BIBSYS', 1015, bibsysLink },
   { 'ULAN', 'ULAN', 245, ulanLink },
   { 'HDS', 'HDS', 902, hlsLink },
   { 'LIR', 'LIR', 886, lirLink },
   { 'MBA', 'MusicBrainz', 434, mbLink },
   { 'MGP', 'MGP', 549, mgpLink },    
   { 'NLA', 'NLA', 409, nlaLink },
   { 'NDL', 'NDL', 349, ndlLink },
   { 'NCL', 'NCL', 1048, nclLink },
   { 'NKC', 'NKC', 691, nkcLink },
   { 'Léonore', 'Léonore', 640, leonoreLink }, 
   { 'SBN', 'ICCU', 396, sbnLink },     
   { 'RLS', 'RLS', 947, rslLink },
   { 'Botanist', '[[Author ci 

External links

  • The 801 Minicomputer - An Overview
  • IBM System 801 Principles of Operation, Version 2
  • 801 I/O Subsystem Definition
  • IBM Archives: A Brief History of RISC, the IBM RS/6000 and the IBM eServer pSeries
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.