[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference ulysse::rdb_vms_competition

Title:DEC Rdb against the World
Moderator:HERON::GODFRIND
Created:Fri Jun 12 1987
Last Modified:Thu Feb 23 1995
Last Successful Update:Fri Jun 06 1997
Number of topics:1348
Total number of notes:5438

860.0. "ORACLE & COMMERCIAL INSTRUCTION SET" by NOT003::LOWEY (Has anyone told the customer yet?) Tue Feb 05 1991 17:41

As you may or may not know, the VAX 6000s have the commercial instruction set
in firmware, while VAX 9000 and earlier VAXen have it in hardware. The result
of this is that applications WHICH USE THE COMMERCIAL INSTRUCTION SET
EXTENSIVELY (typically those written in COBOL, PL/1, & BASIC) don't run
especially well on the 6000 (similar speed to an 8700, which has half the
VUPS).  NB; 6000-510s are fast! - the commercial instruction set is the issue
here.

SYSTEM	VUPS	COMMERCIAL	PERFORMANCE OF APPLNS
		INSTRN. SET	USING COMML. INSTR. SET 
 8700	 6	Hardware
 6510	13	Firmware	Similar to an 8700
 9000	40	Hardware	Fassst!

A customer has just asked me how ORACLE's performance is likely to be
affected by the commercial instruction set being in firmware on the 6000.
From a long trawl through this conference I think the answer is not much.
I do realise that Oracle aint written in COBOL(!), but am unsure as to
how much use it may make of the commercial instr set.  Does anyone have any
info about scalability of Oracle from 8700 to 6510?

And yes, I would point them at the appln vendor, but then Oracle might 
attempt to knock the firmware difference & sell 'em a hot box.

Comments anyone?
Nige L.
T.RTitleUserPersonal
Name
DateLines
860.1Oracle works just fine MAIL::DUNCANGRdb & DTM, 2 phase knockout for OracleTue Feb 05 1991 20:4034
    Re: "commercial instruction set" ... I'm not sure that the emulation
    of packed decimal and some string functions are limited to commercial
    environments as much as they are to the use of these datatypes
    and functions by COBOL programmers.  
    
    Re: faster VAX 6000-510 ... I don't believe there have been significant
    changes in the 6000-5xx cpu chips with respect to packed decimal and
    string instructions.  The mix of emulated vs hardware instructions may
    have changed some but the problem (and performance hit) are still very
    much alive in the 6000-5xx systems.
    
    
    
    re: Oracle does not support packed decimal nor does it support VAX
    datatypes ...Oracle uses its own numeric format for integers,
    floating point, and dates.  Specifically, a couple of years ago I
    helped a customer run Oracle V6 benchmarks on 8840, 8550, 6420, and
    6240.  The programs were written in COBOL.  There was NO performance
    hit between the systems that could be contributed to emulated VAX
    instructions.  (The performance hits were in Oracle's poor handling
    of SMP scaling.)  Generally, we saw x throughput per VUP regardless
    of processor.
    
    Remember, Oracle is written in C and since they don't support our
    data types, applications and Oracle performance should be just fine
    as there were with my customer.  In fact, with the recent changes 
    in the COBOL compiler, I don't even bother the customer with this
    issue any more even though I consider it when doing a config.
    
    After all, with the 6000 product line, you're only one cpu upgrade
    away from happiness !!!
    
    -- gerry

860.2CIMNET::BOURDEAURich Bourdeau CIM Product MarketingTue Feb 05 1991 20:5124
    from what I understand of the problem...
    
      The commercial instruction set you are refering to is datatype and
      string manupilation instructions.  They were removed in the
      MicroVAX-II class CPUs and emulated in software.  This resulted
      in performance degredation in applications which used these
      instructions.  Primarily COBOL applications.  The MicroVAX 3XXX
      and VAX 4XXX and 6XXX systems added the string manupilation
      instructions back into hardware.  The major comercial instruction
      missing ar instructions to support the packed decimal datatype.
      This is the COMP-3 datatype in COBOL.  Many Comercial applications
      built in the IBM environment use COMP-3.  As far as I know this is
      the only performance problem remaining with regard to the commercial
      instruction set.
    
      So to answer your question...
    
      I doubt that the commercial instruction set problem would effect
      Oracle or any other database for that matter, unless the application
      was using packed decimal.
    
    
     
                                                             
860.3Natural uses packed decimalNOT003::DENTIIan Dent @NOT, Nottingham, UKWed Feb 06 1991 14:1217
        
>      I doubt that the commercial instruction set problem would effect
>      Oracle or any other database for that matter, unless the application
>      was using packed decimal.
 
    Natural from Software AG uses packed decimal instructions a lot.
    This has come from an IBM background and other packages from the
    same pedigree may have similar problems.
    
    All arithmetic in Natural is done using packed decimal instructions.
    If 2 integers are to be added together they are first converted
    to packed decimal, added, and the result converted back. I am told
    this is because of the extra precision in packed decimal arithmetic.
    (!?)
    
    Ian

860.4COMP and the pre-compilerMJBOOT::WEINBROMI may be easy, but I'm not cheapWed Feb 06 1991 15:3621
    Being a COBOL programmer for many years... (among other things...)
    
    In general, as long as the user employs COMP (binary), rather than
    COMP-3 (packed) for all of their numeric data, they should not have a
    problem.  Everything you can do with COMP-3 you can do with COMP and
    COMP will be faster and require less space.  (Yes Virginia, COBOL even
    supports quadwords!)
     
    Unfortunately, I have often encountered a great deal of resistance from 
    customers coming from traditional mainframes to use COMP rather than
    COMP-3.  If they insist on using COMP-3, at least have them use the
    /INSTRUCTION_SET=NODECIMAL or /INSTRUCTION_SET=GENERIC switch on the
    COBOL compiler.  But I digress...
    
    The real question that no-one has answered yet is:
    
    "Does the ORACLE pre-compiler support the use of COMP for numeric
    fields?  If so, how?"  (i.e. does it use a temporary COMP-3 field and
    then move it to the final COMP field?)
    
    
860.5V4.4 is faster; but does ORACLE have scaled COMP?4GL::HENNINGWed Feb 06 1991 23:45165
I'm the engineering manager for VAX COBOL.  I appreciate all the interest
shown in COBOL performance!  A lot of work has been done over the last
year in partnership between 

	- software engineering and 
	- hardware engineering and 
	- the field and 
	- real live customers and
	- IM&T (specifically, DEC's own Payroll group)

to try to understand the performance issues better, and to create
improvements in COBOL V4.4.  V4.4 will be submitted to the SSB this
month.

A few specific comments about the discussion thus far:

> the VAX 6000s have the commercial instruction set in firmware

    Hmm, I think I'd say "software", not firmware.  (But perhaps
    different people use these terms slightly differently.)  The
    instructions are performed under the instruction "emulator",
    SYS$LOADABLE_IMAGES:VAXEMUL.EXE.

> The result
> of this is that applications WHICH USE THE COMMERCIAL INSTRUCTION SET
> EXTENSIVELY (typically those written in COBOL, PL/1, & BASIC) don't run
> especially well on the 6000 

    This statement is literally correct, but the implication of the word
    "typically" may be that the problem occurs frequently.  Our 
    experience of the last 3 years indicates that the problem is NOT
    typical.  

    However, when the problem _does_ occur it has enough severity to be
    painful, memorable, visible and subject to bad feelings and
    groaning.  The reason for this is that the applications most
    affected are usually very large batch "cruncher" applications which
    are required to finish within a given time window.  If they don't,
    people are legitimately upset.

    The perception of the problem is thus worse than the problem.  The
    perception if of course real and legitimate!  If the customer is
    unhappy, then he's unhappy!  But only a small minority of customers
    have actually experienced significant slowdowns, because only a 
    small minority have real "cruncher" COBOL programs that crunch away
    in packed.

    PL/1 and BASIC problems are extremely rare.  I'm also the mgr for
    BASIC and remember only one (1) 6000/BASIC performance complaint
    that has reached engineering.

> (similar speed to an 8700, which has half the VUPS).  

    Of course, this depends which 6000 you're discussing.  "Worst case"
    performance on a 6000-510 is indeed at about the 8700 level; but
    this worst case performance has always been rare and with COBOL V4.4
    becomes more rare.

> but the problem (and performance hit) are still very
> much alive in the 6000-5xx systems.
  
    Ah, but try COBOL V4.4 and you'll be happier.  Maybe not perfectly
    happy, but happier.  An official summary of what's new with V4.4
    performance will appear before long in the COBOL conference
    (CLT::COBOL).

>The major comercial instruction
>missing ar instructions to support the packed decimal datatype.
>This is the COMP-3 datatype in COBOL.  Many Comercial applications
>built in the IBM environment use COMP-3.  As far as I know this is
>the only performance problem remaining with regard to the commercial
>instruction set.

    Rich is right, but there is a subtle wrinkle.  Versions of COBOL
    _prior_ to V4.4 sometimes used packed-decimal instructions even
    when the variable had been declared binary, for reasons of 
    precision (see also below).  "The" major theme of COBOL V4.4 is 
    to eliminate such usages of packed.

>I am told
>this is because of the extra precision in packed decimal arithmetic.
>(!?)
 
    Um, sort of.  The issue here is that packed decimal instructions
    will conveniently handle 31 decimal digits in a single instruction. 
    Binary instructions can handle big numbers too, but you have to
    string groups of them together to get the same effect.  A single
    binary instruction will run out of precision at the longword or 
    quadword level (roughly equals 9 or 18 decimal digits).

    COBOL V4.4 uses groups of binary (non-emulated) instructions to
    handle up to 128 bit quantities (roughly 38 decimal digits).  Using
    groups of binary (native) instructions to replace 1 packed
    (emulated) instruction is a _big_ win in COBOL V4.4 (about 20 times
    faster).

>Everything you can do with COMP-3 you can do with COMP and
>COMP will be faster and require less space.  (Yes Virginia, COBOL even
>supports quadwords!)

    Yes, yes, I couldn't have said it better myself!  The only thing to
    add is that before V4.4 there were exceptions to the rule of going
    faster; V4.4 fixes those exceptions and makes COMP consistently
    faster on the 6000.
     
>Unfortunately, I have often encountered a great deal of resistance from 
>customers coming from traditional mainframes to use COMP rather than
>COMP-3.  

    Right.  But they might be swayed if you can point out to them that
    the industry trend - even among traditional mainframe vendors - is
    to move toward smaller, simpler instruction sets.  Using binary
    datatypes is good on more than just Digital platforms!

    For example, see Paul Jalics' "Realizing the Performance Potential
    of Cobol", IEEE Software, September 1989, which shows that on the
    Unisys 1100/90 COMP is faster than COMP-3.  (If you do look this
    article up, ignore the graph on the IMB PS/2 Model 80; the graph is
    in error [Paul Jalics, private communication, September 1990].)

    Also, there will soon be in circulation a SCAN tool that can assist
    with conversion of dusty deck COMP-3 programs.  (See CLT::COBOL
    sometime this month for an announcement)
        
>I doubt that the commercial instruction set problem would effect
>Oracle or any other database for that matter, unless the application
>was using packed decimal.

    Right.  But I think that there is a specific question about ORACLE
    vs. Rdb here.

    With VAX COBOL, you can have SCALED INTEGERS stored in any of three
    ways:

    		- DISPLAY (ascii)
    		- PACKED
    		- BINARY

    Each can store the same size number.  Binary is much more efficient
    for processing on 6000s, and does _not_ lose any precision compared
    to the other two.  Each can be scaled (i.e. implicitly have a
    decimal point).

    VAX Rdb/VMS supports scaled binary.

    ORACLE, according to one of our COBOL FT sites, does not support
    scaled binary.  So your COBOL application working with an ORACLE
    database might have to pick a less efficient datatype.

    I asked 2 ORACLE employees about this at DECUS, and got a confusing
    answer, so I'm still not sure whether this is an issue with ORACLE
    or not.

    Does anyone know for sure whether ORACLE supports scaled binary?

>The real question that no-one has answered yet is:
>    
>"Does the ORACLE pre-compiler support the use of COMP for numeric
>fields?  If so, how?"  (i.e. does it use a temporary COMP-3 field and
>then move it to the final COMP field?)

    Right again.  And in particular, does it support _scaled_ COMP?
    
I hope these discussions are helpful.
	/john
860.6Thanks!NOT003::LOWEYCut Red Wire. First Removing DetonatorThu Feb 07 1991 12:3921
Thanks John, for the most complete & best explanation of this subject I have
seen yet.  
As for my original note, and your reply:

>> The result
>> of this is that applications WHICH USE THE COMMERCIAL INSTRUCTION SET
>> EXTENSIVELY (typically those written in COBOL, PL/1, & BASIC) don't run
>> especially well on the 6000 
>
>   This statement is literally correct, but the implication of the word
>    "typically" may be that the problem occurs frequently.  Our 
>    experience of the last 3 years indicates that the problem is NOT
>    typical.  

By "typically" I didn't mean to imply that it was a common problem; sorry if
it read that way.  I was trying to say that applications which use the comml
instrn set **EXTENSIVELY** are often written in COBOL, due to their use of
packed decimal etc.

Thanks again for a very useful reply.
Nige L.
860.7V4.4 summaryKOBAL::HENNINGTue Feb 12 1991 13:572
    A summary of COBOL V4.4 performance changes (some operations 10x
    faster, etc) can be found by way of CLT::COBOL note 1758