精华内容
下载资源
问答
  • 串行和并行的区别,超详细!
    千次阅读
    2021-02-05 22:28:27

    串行执行

    **First😗*我们来说说Stream的并行和串行。Stream中有两个函数parallel()和sequential(),分别代表了并行和串行,串行比较好理解,就是在主线程上按顺序执行逻辑代码,那么并行呢?那么我们要来说说什么是并行和并发,以前我们的CPU是单核的,多个任务是通过划分时间片轮训来执行任务,这样的逻辑叫做并发。现代的CPU的多核的,有多少个核心就可以同一时间可以运行更多的任务,所以并行和并发大家就明白了。
    second:多个线程访问同一个类的synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 !
    synchronized方法使用了类java的内置锁, 即锁住的是方法所属对象本身. 同一个锁某个时刻只能被一个执行线程所获取,
    因此其他线程都得等待锁的释放. 因此就算你有多余的cpu可以执行, 但是你没有锁, 所以你还是不能进入synchronized方法执行, CPU因此而空闲.
    如果某个线程长期持有一个竞争激烈的锁, 那么将导致其他线程都因等待所的释放而被挂起,
    从而导致CPU无法得到利用, 系统吞吐量低下. 因此要尽量避免某个线程对锁的长期占有 !

    package Demo3;
    
    public class SyncMethod {
        public synchronized void syncMethod2() {
            try {
                System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)");
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)");
        }
    
        public synchronized void syncMethod1() {
            System.out.println("######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)");
        }
      
    
    }
    
    ```java
    package Demo3;
    
    public class Thread1  extends Thread {
    
        SyncMethod syncMethod;
    
        public Thread1(SyncMethod syncMethod) {
            this.syncMethod = syncMethod;
        }
    
        @Override
        public void run() {
            syncMethod.syncMethod2();
        }
    }
    
    
    
    
    
    package Demo3;
    
    public class Thread2 extends Thread {
        SyncMethod syncMethod;
    
        public Thread2(SyncMethod syncMethod) {
            this.syncMethod = syncMethod;
        }
    
        @Override
        public void run() {
            System.out.println("Thread2 running ...");
            syncMethod.syncMethod1();
        }
    }
    
    
    package Demo3;
    
    public class Test2 {
        public static void main(String[] args) throws InterruptedException {
            SyncMethod syncMethod = new SyncMethod();
            Thread1 thread1 = new Thread1(syncMethod);
            Thread2 thread2 = new Thread2(syncMethod);      
            thread1.start();    //先执行, 以便抢占锁
            Thread1.sleep(500); //放弃cpu, 让thread1执行, 以便获的锁
            thread2.start(); //在syncMethod1()方法获得锁时, 看看syncMethod2()方法能否执行
    
    
    //        new Thread(()->{syncMethod.syncMethod2();}).start();
    //        new Thread(()->{syncMethod.syncMethod1();}).start();
    
        }
    }
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)
    Thread2 running ...
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)
    ######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)
    

    多个线程访问同一个类的synchronized方法时, 都是串行执行的,很显然有长达5秒钟的时间空缺,另一个线程竟然没有加入,因此其他线程都得等待锁的释放.。因此就算你有多余的cpu可以执行, 但是你没有锁, 所以你还是不能进入synchronized方法执行, CPU因此而空闲。
    因此是串行执行。
    **

    并行执行

    **

    package Demo3;
    
    public class SyncMethod2 {
        private Object lock1 = new Object();
        private Object lock2 = new Object();
    
        public void syncMethod2() {
            synchronized (lock1) {
                try {
                    System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)");
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)");
            }
        }
    
        public void syncMethod1() {
            synchronized (lock2) {
                System.out.println("######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)");
            }
        }
    }
    
    
    package Demo3;
    
    public class Thread21 extends Thread {
        SyncMethod2 syncMethod2;
    
        public Thread21(SyncMethod2 syncMethod2) {
            this.syncMethod2 = syncMethod2;
        }
    
        @Override
        public void run() {
            syncMethod2.syncMethod2();
        }
    }
    
    
    package Demo3;
    
    public class Thread22 extends Thread {
        SyncMethod2 syncMethod2;
    
        public Thread22(SyncMethod2 syncMethod2) {
            this.syncMethod2 = syncMethod2;
        }
    
        @Override
        public void run() {
            System.out.println("Thread22 running ...");
            this.syncMethod2.syncMethod1();
        }
    }
    
    
    package Demo3;
    
    public class Test22 {
        public static void main(String[] args) {
            SyncMethod2 syncMethod2 = new SyncMethod2();
            Thread21 thread21 = new Thread21(syncMethod2);
            Thread22 thread22 = new Thread22(syncMethod2);
            thread21.start();    //先执行, 以便抢占锁
            thread22.start(); //在syncMethod1()方法获得锁时, 看看syncMethod2()方法能否执行
        }
    }
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)
    Thread22 running ...
    ######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)
    
    

    显然是并行执行命令。

    1.Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。

    情况1:同一个对象在两个线程中分别访问该对象的两个同步方法

    结果:会产生互斥。

    解释:因为锁针对的是对象,当对象调用一个synchronized方法时,其他同步方法需要等待其执行结束并释放锁后才能执行。

    情况2:不同对象在两个线程中调用同一个同步方法

    结果:不会产生互斥。

    解释:因为是两个对象,锁针对的是对象,并不是方法,所以可以并发执行,不会互斥。形象的来说就是因为我们每个线程在调用方法的时候都是new 一个对象,那么就会出现两个空间,两把钥匙,

    2.Synchronized修饰静态方法,实际上是对该类对象加锁,俗称“类锁”。

    情况1:用类直接在两个线程中调用两个不同的同步方法

    结果:会产生互斥。

    解释:因为对静态对象加锁实际上对类(.class)加锁,类对象只有一个,可以理解为任何时候都只有一个空间,里面有N个房间,一把锁,因此房间(同步方法)之间一定是互斥的。

    注:上述情况和用单例模式声明一个对象来调用非静态方法的情况是一样的,因为永远就只有这一个对象。所以访问同步方法之间一定是互斥的。

    情况2:用一个类的静态对象在两个线程中调用静态方法或非静态方法

    结果:会产生互斥。

    解释:因为是一个对象调用,同上。

    情况3:一个对象在两个线程中分别调用一个静态同步方法和一个非静态同步方法

    结果:不会产生互斥。

    解释:因为虽然是一个对象调用,但是两个方法的锁类型不同,调用的静态方法实际上是类对象在调用,即这两个方法产生的并不是同一个对象锁,因此不会互斥,会并发执行。

    更多相关内容
  • 数据通信的基本方式根据数据的传输方式可以分为串行通信与并行通信两种。 串行通信又根据数据的同步方式,分为异步传送同步传送两种方式。或者根据数据的传输方向与时间关系,分为单工通信、半双工通信及全双工...


    通信方式的分类

    通信方式是指通信双方之间的工作方式或信号传输方式。

    终端与其他设备(例如其他终端、计算机和外部设备)通过数据传输进行通信,根据数据的传输方式,有串行通信和并行通信。

    串行通信又称为点对点通信,对于点对点之间的通信,
    根据数据的同步方式,又分为异步传送和同步传送两种方式。
    根据数据的传输方向与时间关系,又可分为单工通信、半双工通信及全双工通信三种方式。

    在这里插入图片描述


    通信方式的分类
    通信方式的分类

    该「通信方式的分类」图片引用CSDN博主「MR_普罗米修斯」的总结 https://blog.csdn.net/qq_44431690/article/details/104114594



    串行通信和并行通信

    数据通信的基本方式可以分为串行通信与并行通信两种。

    串行通信:
    定义:串行通信是指利用一条传输线将数据一位位地顺序传送。
    传输方式:传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输。
    特点:通信线路简单,利用电话或电报线就可以实现通信,降低成本,适用于远距离通信,但传输速度慢。


    并行通信:
    定义:并行通信是指利用多条传输线将一个数据的各位同时传送。
    传输方式:传输一个字节(8个位)的数据时,并口是将8个位一字排开,分别在8条连接线上同时传输。
    特点:传输速度块,适用于短距离通信。

    串行通信和并行通信

    串行通信


    同步通信和异步通信

    根据通讯的数据同步方式,又分为同步和异步两种。可以根据通讯过程中是否有使用到时钟信号进行简单的区分。


    异步通信:
    在异步通讯中,不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据。例如规定由起始位、数据位、奇偶校验位、停止位等。
    某些通讯中还需要双方约定数据的传输速率,以便更好地同步 。波特率(bps)是衡量数据传送速率的指标。

    在这里插入图片描述

    同步通信:
    在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。

    在这里插入图片描述

    在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。

    该「同步通信和异步通信」总结引用于博客园「孤情剑客」的《USART串口协议》https://www.cnblogs.com/The-explosion/p/11587930.html


    单工、半双工和双工


    串行通信又称为点对点通信,对于点对点之间的通信,根据数据的传输方向与时间关系,又可分为单工通信、半双工通信及全双工通信三种方式。


    单工方式:
    只允许数据按照一个固定的方向传送,在任何时刻都只能进行一个方向的通信,一个设备固定为发送设备,一个设备固定为接收设备。


    半双工方式:
    两个设备之间可以收发数据,但是不能在同一时刻进行,每次只能有一个设备发送,另一个站接收。


    全双工方式:
    在同一时刻,两个设备之间可以同时进行发送和接收数据。

    单工、半双工、双工


    并行通信


    并行是指多比特数据同时通过并行线进行传送,数据的各个位同时传送,可以字或字节为单位并行进行,这样数据传送速度大大提高,通信速度快,但并行传送用的通信线多、成本高,线路长度受到限制,故不宜进行远距离通信。并且长度增加,干扰也会增加,数据也就容易出错。计算机或PLC各种内部总线就是以并行方式传送数据的。





    参考:
    「MR_普罗米修斯」的总结 https://blog.csdn.net/qq_44431690/article/details/104114594
    「孤情剑客」的《USART串口协议》https://www.cnblogs.com/The-explosion/p/11587930.html
    声明:[笔记整理] 内容整理自网络,如有错误欢迎指正,版权归原作者所有,若有侵权请联系删除。

    展开全文
  • 总线揭密 串行传输VS并行传输

    千次阅读 2018-11-15 09:10:27
    总线揭密 串行传输VS并行传输

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代 IEEE 1284,SATA取代PATA,PCI Express取代PCI……

      从原理来看,并行传输方式其实优于串行传输方式。通俗地讲,并行传输的通路犹如一条 多车道的宽阔大道,而串行传输则是仅能允许一辆汽车通过的乡间公路。以古老而又典型的标准并行口(Standard Parallel Port)和串行口(俗称COM口)为例,并行接口的位宽为8,数据传输率高;而串行接口只有1位,数据传输速度低。在串行口传送1位的时间内,并行口可以传送一个字节。当并行口完成单词“advanced”的传送任务时,串行口中仅传送了这个单词的首字母“a”。

                                        图1:H6A-2-1.TIF 并行接口速度是串行接口的8倍

      那么,现在的串行传输方式为何会更胜一筹呢?

      一、并行传输技术遭遇发展困境

      电脑中的总线和接口是主机与外部设备间传送数据的“大动脉”,随着处理器速度的节节攀升,总线和接口的数据传输速度也需要逐步提高,否则就会成为电脑发展的瓶颈。

                                                                  图2  PC总线的发展

     

           我们先来看看总线的情况。1981年第一台PC中以ISA总线为标志的开放式体系结构,使用了ISA总线,数据总线为8位,工作频率为8.33MHz,这在当时却已经算作“先进技术(Advanced Technology)”了,所以ISA总线还有另一个名字“AT总线”。到了286时,ISA的位宽提高到了16位,为了保持与8位的ISA兼容,工作频率仍为8.33MHz。ISA总线虽然只有16MBps的数据传输率,但直到386时代,都一直是主板与外部设备间最快的数据通道。

      到了486时代,同时出现了PCI和VESA两种更快的总线标准,它们具有相同的位宽(32位),但PCI总线能够与处理器异步运行,当处理器的频率增加时,PCI总线频率仍然能够保持不变,可以选择25MHz、30MHz和33MHz三种频率。而VESA总线与处理器同步工作,因而随着处理器频率的提高,VESA总线类型的外围设备工作频率也得随着提高,适应能力较差,因此很快失去了竞争力。PCI总线标准成为Pentium时代PC总线的王者,硬盘控制器、声卡到网卡,全部使用PCI插槽。而显卡方面对数据传输速度要求更高,出现了专用的AGP,

      并行数据传输技术向来是提高数据传输率的重要手段,但是,进一步发展却遇到了障碍。首先,由于并行传送方式的前提是用同一时序传播信号,用同一时序接收信号,而过分提升时钟频率将难以让数据传送的时序与时钟合拍,布线长度稍有差异,数据就会以与时钟不同的时序送达,另外,提升时钟频率还容易引起信号线间的相互干扰,导致传输错误。因此,并行方式难以实现高速化。从制造成本的角度来说,增加位宽无疑会导致主板和扩充板上的布线数目随之增加,成本随之攀升。 

    在外部接口方面,我们知道IEEE 1284并行口的速率可达300kBps,传输图形数据时采用压缩技术可以提高到2MBps,而RS-232C标准串行口的数据传输率通常只有20kbps,并行口的数据传输率无疑要胜出一筹。因此十多年来,并行口一直是打印机首选的连接方式。对于仅传输文本的针式打印机来说,IEEE 1284并行口的传输速度可以说是绰绰有余的。但是,对于近年来一再提速的激光打印机来说,情况发生了变化。笔者使用爱普生6200L在打印2MB图片时,速度差异不甚明显,但在打印7.5MB大小的图片文件时,从点击“打印”到最终出纸,使用USB接口用了18秒,而使用并行口时,用了33秒。这一测试结果说明,现行的并行口对于时下流行的激光打印机来说,已经力难胜任了。

      二、USB,串行接口欲火重生

      凤凰涅槃,浴火重生。1995年,由Compaq、Intel、Microsoft和NEC等几家公司推出的USB接口首次出现在PC 机上,1998年起即进入大规模实用阶段,作为IEEE 1284并行口和RS-232C串行口的接班人,USB现在已经呈现出大红大紫了。


           USB虽然只有一位的位宽,但数据传输速度却比并行口要高,而且具有很大的发展空间。USB设备通信速率的自适应性,使得它可以自动选择HS(High- Speed,高速,480 Mbps)、FS(Full-Speed,全速,12Mbps)和LS(Low-Speed,低速,1.5Mbps)三种模式中的一种。USB总线还具有自动的设备检测能力,设备插入之后,操作系统软件会自动地检测、安装和配置该设备,免除了增减设备时必须关闭PC机的麻烦。

                                                           图3  采用差模信号传送方式的USB

                                                    图4  差分传输方式具有更好的抗干扰性能

     

            USB接口之所以能够获得很高的数据传输率,主要是因为其摒弃了常规的单端信号传输方式转而采用差分信号(differenTIal signal)传输技术,有效地克服了因天线效应对信号传输线路形成的干扰,以及传输线路之间的串扰。USB接口中两根数据线采用相互缠绕的方式,形成了双绞线结构,如图3。

      图4是由两根信号线缠绕在环状铁氧体磁芯上构成的扼流线圈。在单端信号传输方式下,线路受到电磁辐射干扰而产生共模电流时,磁场被叠加变成较高的线路阻抗,这样虽然降低了干扰,但有效信号也被衰减了。而在差动传输模式下,共模干扰被磁芯抵消,但不会产生额外的线路阻抗。换句话说,差动传输方式下使用共模扼流线圈,既能达到抗干扰的目的,又不会影响信号传输。

      差分信号传输体系中,传输线路无需屏蔽即可取得很好的抗干扰性能,降低了连接成本。不过,由于USB接口3.3V的信号电平相对较低,最大通信距离只有5m。USB规范还限制物理层的层数不超过7层,这意味着用户可以通过最多使用5个连接器,将一个USB设备置于距离主机最远为30m的位置。

      为了解决长距离传输问题,扩展USB的应用范围,一些厂商在USB规范上添加了新的功能,例如

    Powered USB和Extreme USB,前者加大了USB的供电能力,后者延长了USB的传输距离。譬如采用CAT5电缆和RJ45连接器,可以简单地将扩展至100m;采用光纤更可扩展至2km,只是成本比CAT5更高。

     双绞线互相缠绕的目的是利用铜线中电流产生的电磁场互相作用抵消邻近线路的干扰并减少来自外界的干扰。每对线在每英寸长度上相互缠绕的次数决定了抗干扰的能力和通讯的质量,缠绕得越紧密其通讯质量越高,所支持的数据传输率越高,制造成本当然也相应提高。双绞线即使外面没有屏蔽层,也能获得很好的抗干扰性能,所以局域网中选用CAT5非屏蔽双绞线(UTP)便能满足传输100Mbps信号的要求,且通信距离可以达到100m。

      三、差分信号技术:高速信号传输的金钥匙

      电脑发展史就是追求更快速度的历史,随着总线频率的提高,所有信号传输都遇到了同样的问题:线路间的电磁干扰越厉害,数据传输失败的发生机率就越高,传统的单端信号传输技术无法适应高速总线的需要。于是差分信号技术就开始在各种高速总线中得到应用,我们已经知道,USB实现高速信号传输的秘诀在于采用了差分信号传输方式。

                 &n bsp;                                             图5  差分信号传输电路

                                                               图6 单端信号传输

                                                                    图7  差分信号传输

     

           差分信号传输技术是20世纪90年代出现的一种数据传输和接口技术,与传统的单端传输方式相比,这种技术具有低功耗、低误码率、低串扰和低辐射等特点,其传输介质可以是铜质的PCB连线,也可以是平衡电缆,最高传输速率可达1.923Gbps。Intel倡导的第三代I/O技术(3GIO),其物理层的核心技术就是差分信号技术。那么,差分信号技术究竟是怎么回事呢?

      我们知道,在传统的 单端(Single-ended)通信中,一条线路来传输一个比特位。高电平表示1,低电平表示0。倘若在数据传输过程中受到干扰,高低电平信号完全可能因此产生突破临界值的大幅度扰动,一旦高电平或低电平信号超出临界值,信号就会出错,如图6所示。

           在 差分信号通信电路中, 输出电平为正电压时表示逻辑“1”,输出负电压时表示逻辑“0”,而输出“0”电压是没有意义的,它既不代表“1”,也不代表“0 ”。而在图7所示的差分通信中, 干扰信号会同时进入相邻的两条信号线中,在信号接收端,两个相同的干扰信号分别进入差分放大器的两个反相输入端后,输出电压为0。所以说,差分信号技术对干扰信号具有很强的免疫力。对于串行传输来说,LVDS能够低于外来干扰;而对于并行传输来说,LVDS可以不仅能够抵御外来干扰,还能够抵御数据传输线之间的串扰。

      因为上述原因,实际电路中只要使用低压差分信号Low Voltage DifferenTIal Signal,LVDS),350mV左右的振幅便能满足近距离传输的要求。假定负载电阻为100Ω,采用LVDS方式传输数据时,如果双绞线长度为 10m,传输速率可达400 Mbps;当电缆长度增加到20m时,速率降为100 Mbps;而当电缆长度为100m时,速率只能达到10 Mbps左右。

      LVDS最早由美国国家半导体公司提出的一种高速串行信号传输电平,由于它传输速度快,功耗低,抗干扰能力强,传输距离远,易于匹配等优点,迅速得到诸多芯片制造厂商和应用商的青睐,并通过TIA/EIA(Telecommunication Industry Association/Electronic Industries Association)的确认,成为该组织的标准(ANSI/TIA/EIA-644 standard)。

     

      在近距离数据传输中,LVDS不仅可以获得很高的传输性能,同时还是一个低成本的方案。LVDS器件可采用经济的CMOS工艺制造,并且采用低成本的3类电缆线及连接件即可达到很高的速率。同时,由于LVDS可以采用较低的信号电压,并且驱动器采用恒流源模式,其功率几乎不会随频率而变化,从而使提高数据传输率和降低功耗成为可能。因此,USB、SATA、PCI Express以及HyperTransport普遍采用LVDS技术,LCD中控制电路向液晶屏传送像素亮度控制信号,也采用了LVDS方式。

      四、新串行时代已经到来

           差分传输技术不仅突破了速度瓶颈,而且使用小型连接可以节约空间。因此,近年来,除了USB和FireWire,还涌现出很多以差分信号传输为特点的串行连接标准,几乎覆盖了主板总线和外部I/O端口,呈现出从并行整体转移到新串行时代的大趋势,串行接口技术的应用在2005年将进入鼎盛时期(图8)。

                                                      图8  所有的I/O技术都将采用串行方式

      ●     LVDS技术,突破芯片组传输瓶颈

      随着电脑速度的提高,CPU与北桥芯片之间,北桥与南桥之间,以及与芯片组相连的各种设备总线的通信速度影响到电脑的整体性能。可是,一直以来所采用的FR4印刷电路板因存在集肤效应和介质损耗导致的码间干扰,限制了传输速率的提升。

       在传统并行同步数字信号的速率将要达到极限的情况下,设计师转向从高速串行信号寻找出路,因为串行总线技术不仅可以获得更高的性能,而且可以最大限度地减少芯片管脚数,简化电路板布线,降低制造成本。Intel的PCI Express、AMD的HyperTansport以及RAMBUS公司的redwood等第三代I/O总线标准(3GI/O)不约而同地将低压差分信号(LVDS)作为新一代高速信号电平标准。

                                                     图9  PCI Express 1X数据通道

    一个典型的PCI Express通道如图9所示,通信双方由两个差分信号对构成双工信道,一对用于发送,一对用于接收。4条物理线路构成PCI Express 1X。PCI Express 标准中定义了1X、2X、4X和16X。PCI Express 16X拥有最多的物理线路(16×4=64)。

      即便采用最低配置的1X体系,因为可以在两个方向上同时以2.5GHz的频率传送数据,带宽达到5Gbps,也已经超过了传统PCI总线1.056Gbps(32bit×33MHz)的带宽。况且,PCI总线是通过桥路实现的共享总线方式(如PCI9054等桥设备),而PCI Express采用所谓的“端对端连接”(如图10),每个设备可以独享总线带宽,因此可以获得比PCI更高的性能。

                   

     
                             图10  PCI Express端对端连接消除了桥路

           AMD的HyperTransport技术与PCI Express极其相似,同样采用LVDS数据通道,其工作频率范围从200MHz到1GHz,位宽可以根据带宽的要求灵活选择2、4、8、16或32 位。HyperTransport技术现在被用于南北桥之间的快速通信,今后还将用于其它芯片间的连接。

      ●     Serial ATA,为高速硬盘插上翅膀

      在ATA-33之前,一直使用40根平行数据线由于数据线之间存在串扰,限制了信号频率的提升。因此从ATA-66开始,ATA数据线在两根线之间增加了1根接地线正是为了减少相互干扰(一共80根物理线)。增加地线后,数据线与地线之间仍然存在分布电容C2,还是无法彻底解决干扰问题,使得并行ATA接口的最高频率停留在133MHz上。除了信号干扰这一根本原因之外,并行PATA 还存在不支持热插拔和容错性差等问题,采用Serial ATA才完成脱胎换骨的蜕变,使问题得到了解决。

      Serial ATA 是Intel 公司在IDF 2000 上推出的概念,此后Intel 联合APT、Dell、IBM、Seagate以及Maxtor等几家巨头,于2001年正式推出了SATA 1.0 规范。而在IDF2002春季论坛上,SATA 2.0 规范也已经公布。

      Serial ATA接口包括4根数据线和3 根地线,共有7 条物理连线目前的SATA 1.0标准,数据传输率为150MBps,与ATA-133接口133MBps的速度略有提高,但未来的SATA 2.0/3.0可提升到300MBps以至600MBps。从目前硬盘速度的增长趋势来看,SATA 标准至少可以满足未来数年的要求了。

                                                             图11 并行ATA的线间串扰

      ●   FireWire,图像传输如虎添翼

       FireWire(火线)是1986年由苹果公司起草的,1995年被美国电气和电子工程师学会(IEEE)作为IEEE 1394推出,是USB之外的另一个高速串行通信标准。FireWire最早的应用目标为摄录设备传送数字图像信号,目前应用领域已遍及DV、DC、DVD、硬盘录像机、电视机顶盒以及家庭游戏机等。 FireWire传输线有6根电缆,两对双绞线形成两个独立的信道,另外两根为电源线和地线。SONY公司对FireWire进行改进,舍弃了电源线和地线,形成只有两对双绞线的精简版FireWire,并给它起了个很好听的名字i.Link。

      FireWire数据传输率与USB相当,单信道带宽为400Mbps,通信距离为4.5m。不过,IEEE 1394b标准已将单信道带宽扩大到800Mbps,在IEEE 1394-2000新标准中,更是将其最大数据传输速率确定为1.6Gbps,相邻设备之间连接电缆的最大长度可扩展到100m。

      五、串行口能红到哪天?

      阅读本文之后,如果有人问你关于串行通信与并行通信哪个更好的问题,你也许会脱口而出:串行通信好!但是,我要告诉你,新型串行口之所以走红,那是因为采用了四根信号线代替了传统两根信号线的信号传输方式,由单端信号传输转变为差分信号传输的原因,而“在相同频率下并行通信速度更高”这个基本的道理是永远不会错的,通过增加位宽来提高数据传输率的并行策略仍将发挥重要作用。

      技术进步周

     
    而复始,以至无穷,没有一项技术能够永远适用。电脑技术将来跨入THz时代后,对信号传输速度的要求会更高,差分传输技术是否还能满足要求?是否需要另一种更好的技术来完成频率的另一次突破呢?让我们共同关注。           

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 摘要:串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 基于STM32的AD9850并行和串行模式程序,并且是基于HAL库进行开发的。
  • 串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。数据传输可以通过两种方式进行。它们是...

    在串行通信中,数据是二进制脉冲的形式。换句话说,我们可以说二进制1表示逻辑高电平或5伏特,零表示逻辑低电平或0伏特。串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。

    数据传输可以通过两种方式进行。它们是串行通信和并行通信。

    串行通信是一种使用双线即发送器(发送器)和接收器逐位发送数据的技术。使用类似技术的通讯产品包括串口服务器,以太网模块等产品。

    例如,我想从发送器向接收器发送8位二进制数据11001110。但是,哪一点首先消失?最高有效位 - MSB(第 7 位)或最低有效位 - LSB(第 0 位)。我们不能说。在这里,我正在考虑LSB首先移动(对于小Endian)。

    并行通信一次移动8,16或32位数据。打印机和Xerox机器使用并行通信来加快数据传输速度。

    192556034_2_20200609014910755

    串行和并行通信之间的区别

    串行通信一次只发送一位。因此,这些需要更少的I / O(输入 - 输出)线。因此,占用更少的空间并且更能抵抗串扰。串行通信的主要优点是整个嵌入式系统的成本变得便宜并且可以长距离传输信息。串行传输用于DCE(数据通信设备)设备,如调制解调器。

    192556034_3_20200609014910865

    在并行通信中,一次发送一块数据(8,16或32位)。因此,每个数据位都需要一个单独的物理I / O线。并行通信的优点是速度快但缺点是它使用了更多的I / O(输入 - 输出)线。并行传输用于PC(个人计算机),用于互连CPU(中央处理单元),RAM(随机存取存储器),调制解调器,音频,视频和网络硬件。

    注意:如果您的集成电路或处理器支持较少量的输入/输出引脚,则最好选择串行通信。

    时钟同步

    为了有效地处理串行设备,时钟是主要来源。时钟故障可能导致意外结果。每个串行设备的时钟信号不同,它分为同步协议和异步协议。

    同步串行接口

    同步串行接口上的所有设备都使用单CPU总线来共享时钟和数据。由于这个事实,数据传输更快。优点是波特率不会失配。此外,接口组件需要更少的I / O(输入 - 输出)线。例如I2C,SPI等。

    192556034_5_20200609014911177

    异步串行接口

    该异步接口不具有外部时钟信号,并将其即依赖于四个参数

    1.波特率控制

    2.数据流控制

    3.传输和接收控制

    4.错误控制。

    异步协议适用于稳定通信。这些用于长距离应用。异步协议的示例是RS-232,RS-422和RS-485。

    192556034_6_20200609014911255

    展开全文
  • command - Go命令模式用于线程安全的串行和并行调度程序
  • 串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对采样周期...
  • RabbitMq09——confirm串行和并行模式

    千次阅读 2018-07-12 23:53:46
    之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者生产者往往是分开部署的,我们也不可能每发送一条消息就...confirm串行模式 生产者 package com.mmr.rabbitmq.confir...
  • AD7606 高精度16位ADC芯片 8路模拟输入。阻抗1M欧姆。【无需负电源,无需前端模拟运放电路,可直接接传感器输出】 输入范围正负5V,正负10V。可通过IO控制量程。 分辨率 16位。 最大采样频率 200Ksps。...
  • JDK1.8新特性【之】串行流、并行流、工作窃取模式(Fork/Join) 1.串行流、并行流 2.工作窃取模式( Fork/Join) 3.测试 4.完整源码 《目录:Java基础》 《目录:JDK1.8新特性》 《幕》 1.串行流、并行串行流:为...
  • 模块功能:接收串行数据,转为并行数据。 应用场景:在SPI,Uart等串行协议接收侧均有应用。 二. 模块框图与使用说明 有两种模式(通过参数SDATA_IS_CONTINUOUS进行选择): 1.数据连续模式,此时sdata_valid指示...
  • LCD12864串行和并行显示

    万次阅读 2016-10-06 15:40:39
    一、LCD12864串行显示 ***********************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit CS = P2^4; sbit SID = P2...
  • 晚上技术群里有朋友问,“同步阻塞色区别是什么?” 有不少朋友给出去了自己的看法,部分内容如下: 其中有朋友给出了截图,图上给出了比较“生动”的例子。 然而,看完之后似乎懂了,似乎又没懂。 很多人对这几...
  • 串行,并发与并行

    千次阅读 多人点赞 2019-05-06 22:50:53
    串行 多个任务,执行时一个执行完再执行另一个。 比喻:吃完饭再看视频。 并发 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。 比喻: ...
  • 计算机的通信(数据交换)方式主要是分为:串行通信与并行通信 串行通信 概念:计算机与I/O设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。 特点:传输速度慢,...
  • 在海洋数值模拟过程中,随着计算区域的扩大以及计算精度的提升,大量数据...通过实验研究数据,对不同I/O方式的不同特点不同适用场景进行分析,证明在海洋数值模式中使用并行I/O技术切实可行,并且I/O速率得到大幅度提升。
  • 在上一篇文章中我们知道通过parallelStream...java8中将并行进行了优化,我们可以很容易的对数据进行并行操作,Stream API可以声明式的通过paralleleStreamsequential方法在并行顺序流之间进行切换。 一、For...
  • STM32串行模式驱动LCD12864,已在正点原子开发板上验证通过,请放心使用 ...PSB——接GND,PSB = 0 串行模式 PSB = 1 并行模式 RST——接PB12 BLA——VCC(5V or 3.3V) BLK——接GND 剩余引脚不接,留空
  • 鉴于开发者更习惯串行编程,在FJRR模式中提出并实现了一种类串行并行程序设计的思想。通过两个示例进行了模式应用说明与性能分析,并将该模式在EasyPAB可扩展并行应用开发平台中实例化并应用。
  • 串行 AB两个任务运行在一个CPU线程上,在A任务执行完之前不可以执行B。即,在整个程序的运行过程中,仅存在一个运行上下文,即一个调用栈一个堆。程序会按顺序执行每个指令。 转自:...
  • 并行传输数据和串行传输数据 计算机系统中的并行处理数据传输模式 (Parallel Processing and Data Transfer Modes in a Computer System) Instead of processing each instruction sequentially, a parallel ...
  • 名称:串行数据转换为并行数据 说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作...
  • 前言:最近再搞个PCIe的高速串行总线的项目,关于串行和并行数据的传输到底谁更快,分别有哪些优势劣势呢等等一些问题现在做个整理,是对自己学习的一个记录,同时呢,也为刚刚想入门的或者对高速串行总线有些误解...
  • 并发,并行串行的区别

    千次阅读 多人点赞 2019-12-20 18:03:54
    并发(concurrency)和并行(parallellism)是: 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并发的关键是你有处理多个任务的能力,不一定要同时。 并行的关键是你有...
  • 按数据传输的顺序可以分为:并行通信(传输)和串行通信(传输); 按数据传输的同步方式可分为:同步传输异步传输。而同步异步同属于串行通信,是串行通信的两种基本形式!!! 按数据传输的流向时间关系...
  • 摘要:介绍了ATMEL公司低电压AT29LV系列存储器的结构、特点及性能。同时结合TI公司DSP芯片TMS320VC5402的并行装载方式,给出了AT29LV256在实际应用中的硬件原理...Flash 可分为并行Flash和串行Flash。串
  • 按照数据传送的方式,通信可分为串行通信和并行通信。串行通信时是指设备之间通过少量数据信号线(一般是8根以下)、地线及控制信号线,按数据位形式一位一位地传输数据的通信方式。 并行通信 一般是指使用8、16、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,090
精华内容 30,036
关键字:

串行模式和并行模式