首先PC程序计数器的位数与主存的容量有关系也和要获取下一条要执行的指令也有关系。
假设PC要获取完主存中所有的指令那么PC要持续+“1”直到获取完最后一条指令,这里的“1”指的是PC指令的条数,PC+"1"等于下一条指令,而不代表指令长度。
根据408真题中2016年的选择题
某计算机主存空间为4GB,字长为32位,按字节编址,采用32位定长指令字格式,若指令按字边界对齐存放,则程序计数器(PC)和指令寄存器(IR)的位数至少为()。
那么以下用三种情况去理解
1.每一条指令字长刚好等于主存中的存储字长,且按字边界对齐存放
那么PC每次+1就代表刚好指到下一条指令的实际存放地址,同时也刚好对应下一条指令,指令有2^30次方条那么对应PC一共要加上2^30个1,所以需要30位来表示
2.指令分成份放在不同行存储单元,这时要获取每条指令就需要PC+2才能对应到相应的指令地址,有2^30次方条指令,那么要获取完所有指令那么PC一共要加上2^30个2,所以对应2^31,因此需要31位来表示
3.一条指令字长等于存储字长的四倍,那么一条指令需要四个单元去存储,所以PC要一次性+4才能获取到一条完整的指令,同理有2^30次方条指令,那么要4*2^30共需要32位才行。
综上其实可以知道,PC具体有多少位要看PC加几才能获取到下一条指令同时也要知道指令有多少条二者相乘即可得到PC的位数。
以上是本人最近初学计组对PC位数的理解,有很多不足之处,有错误的话希望大家能帮我指出。